From 1c1d580a38a2108388007e2c5685d88550e2ff60 Mon Sep 17 00:00:00 2001 From: riz081 Date: Tue, 5 Aug 2025 11:03:08 +0700 Subject: [PATCH] implement .env --- .env.example | 27 +++++++++++++++++++ .gitignore | 2 ++ app/build.gradle | 16 +++++++++++ .../bdkipoc/qris/model/QrisTransaction.java | 23 ++++++++-------- .../bdkipoc/qris/network/QrisApiService.java | 17 ++++++------ .../qris/presenter/QrisResultPresenter.java | 3 ++- 6 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..f98baee --- /dev/null +++ b/.env.example @@ -0,0 +1,27 @@ +# ============================================== +# QRIS PAYMENT CONFIGURATION - ENVIRONMENT VARIABLES +# ============================================== +# Copy this file to .env and fill in the values +# ============================================== + +# Midtrans API Configuration +MIDTRANS_SANDBOX_AUTH=your_midtrans_sandbox_auth_here +MIDTRANS_PRODUCTION_AUTH=your_midtrans_production_auth_here +MIDTRANS_CHARGE_URL=https://api.sandbox.midtrans.com/v2/charge +MIDTRANS_STATUS_BASE_URL=https://api.sandbox.midtrans.com/v2/ +MIDTRANS_SIMULATOR_URL=https://simulator.sandbox.midtrans.com/v2/qris/index + +# Backend Configuration +BACKEND_BASE_URL=your_backend_base_url_here +WEBHOOK_URL=your_webhook_url_here + +# Application Settings +MAX_REFRESH_ATTEMPTS=5 +DEFAULT_QR_EXPIRATION_MINUTES=1 + +# ============================================== +# INSTRUCTIONS: +# 1. Copy this file to .env in the same directory +# 2. Fill in the actual values +# 3. NEVER commit .env to version control! +# ============================================== \ No newline at end of file diff --git a/.gitignore b/.gitignore index aa724b7..2a3e8dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ *.iml .gradle +.env +*.env /local.properties /.idea/caches /.idea/libraries diff --git a/app/build.gradle b/app/build.gradle index 59c1869..8646299 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -42,6 +42,22 @@ android { jniLibs.srcDirs = ['libs'] } } + + buildFeatures { + buildConfig true // Ini yang mengaktifkan fitur BuildConfig + } + + defaultConfig { + // Tambahkan semua buildConfigField yang dibutuhkan + buildConfigField "int", "MAX_REFRESH_ATTEMPTS", "5" + buildConfigField "int", "DEFAULT_QR_EXPIRATION_MINUTES", "1" + buildConfigField "String", "MIDTRANS_SANDBOX_AUTH", "\"Basic U0ItTWlkLXNlcnZlci1PM2t1bXkwVDl4M1VvYnVvVTc3NW5QbXc=\"" + buildConfigField "String", "MIDTRANS_PRODUCTION_AUTH", "\"TWlkLXNlcnZlci1sMlZPalotdVlVanpvNnU4VzAtYmF1a2o=\"" + buildConfigField "String", "MIDTRANS_CHARGE_URL", "\"https://api.sandbox.midtrans.com/v2/charge\"" + buildConfigField "String", "MIDTRANS_STATUS_BASE_URL", "\"https://api.sandbox.midtrans.com/v2/\"" + buildConfigField "String", "BACKEND_BASE_URL", "\"https://be-edc.msvc.app\"" + buildConfigField "String", "WEBHOOK_URL", "\"https://be-edc.msvc.app/webhooks/midtrans\"" + } } dependencies { diff --git a/app/src/main/java/com/example/bdkipoc/qris/model/QrisTransaction.java b/app/src/main/java/com/example/bdkipoc/qris/model/QrisTransaction.java index 46f186b..903411d 100644 --- a/app/src/main/java/com/example/bdkipoc/qris/model/QrisTransaction.java +++ b/app/src/main/java/com/example/bdkipoc/qris/model/QrisTransaction.java @@ -1,4 +1,5 @@ package com.example.bdkipoc.qris.model; +import com.example.bdkipoc.BuildConfig; import android.util.Log; import java.util.HashMap; @@ -46,17 +47,17 @@ public class QrisTransaction { // Provider expiration mapping private static final Map PROVIDER_EXPIRATION_MAP = new HashMap() {{ - put("shopeepay", 1); - put("shopee", 1); - put("airpay shopee", 1); - put("gopay", 1); - put("dana", 1); - put("ovo", 1); - put("linkaja", 1); - put("link aja", 1); - put("jenius", 1); - put("qris", 1); - put("others", 1); + put("shopeepay", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("shopee", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("airpay shopee", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("gopay", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("dana", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("ovo", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("linkaja", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("link aja", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("jenius", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("qris", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); + put("others", BuildConfig.DEFAULT_QR_EXPIRATION_MINUTES); }}; // Provider display name mapping diff --git a/app/src/main/java/com/example/bdkipoc/qris/network/QrisApiService.java b/app/src/main/java/com/example/bdkipoc/qris/network/QrisApiService.java index 753c0ab..1d5878b 100644 --- a/app/src/main/java/com/example/bdkipoc/qris/network/QrisApiService.java +++ b/app/src/main/java/com/example/bdkipoc/qris/network/QrisApiService.java @@ -1,4 +1,5 @@ package com.example.bdkipoc.qris.network; +import com.example.bdkipoc.BuildConfig; import android.util.Log; import com.example.bdkipoc.qris.model.QrisRepository; @@ -28,14 +29,14 @@ public class QrisApiService { private static final String TAG = "QrisApiService"; // API Endpoints - private static final String MIDTRANS_SANDBOX_AUTH = "Basic U0ItTWlkLXNlcnZlci1PM2t1bXkwVDl4M1VvYnVvVTc3NW5QbXc="; - private static final String MIDTRANS_PRODUCTION_AUTH = "TWlkLXNlcnZlci1sMlZPalotdVlVanpvNnU4VzAtYmF1a2o="; - private static final String MIDTRANS_AUTH = MIDTRANS_SANDBOX_AUTH; // Default to sandbox - private static final String MIDTRANS_CHARGE_URL = "https://api.sandbox.midtrans.com/v2/charge"; - private static final String MIDTRANS_STATUS_BASE_URL = "https://api.sandbox.midtrans.com/v2/"; - - private String backendBase = "https://be-edc.msvc.app"; - private String webhookUrl = "https://be-edc.msvc.app/webhooks/midtrans"; + private static final String MIDTRANS_SANDBOX_AUTH = BuildConfig.MIDTRANS_SANDBOX_AUTH; + private static final String MIDTRANS_PRODUCTION_AUTH = BuildConfig.MIDTRANS_PRODUCTION_AUTH; + private static final String MIDTRANS_AUTH = BuildConfig.MIDTRANS_SANDBOX_AUTH; + private static final String MIDTRANS_CHARGE_URL = BuildConfig.MIDTRANS_CHARGE_URL; + private static final String MIDTRANS_STATUS_BASE_URL = BuildConfig.MIDTRANS_STATUS_BASE_URL; + + private String backendBase = BuildConfig.BACKEND_BASE_URL; + private String webhookUrl = BuildConfig.WEBHOOK_URL; /** * Generate new QR code via Midtrans API diff --git a/app/src/main/java/com/example/bdkipoc/qris/presenter/QrisResultPresenter.java b/app/src/main/java/com/example/bdkipoc/qris/presenter/QrisResultPresenter.java index 5246575..b0be499 100644 --- a/app/src/main/java/com/example/bdkipoc/qris/presenter/QrisResultPresenter.java +++ b/app/src/main/java/com/example/bdkipoc/qris/presenter/QrisResultPresenter.java @@ -1,4 +1,5 @@ package com.example.bdkipoc.qris.presenter; +import com.example.bdkipoc.BuildConfig; import android.os.Handler; import android.os.Looper; @@ -36,7 +37,7 @@ public class QrisResultPresenter implements QrisResultContract.Presenter { private boolean isPaymentMonitorActive = false; private String lastKnownStatus = "pending"; private int refreshCounter = 0; - private static final int MAX_REFRESH_ATTEMPTS = 5; + private static final int MAX_REFRESH_ATTEMPTS = BuildConfig.MAX_REFRESH_ATTEMPTS; public QrisResultPresenter() { this.repository = QrisRepository.getInstance();