Lewati ke konten utama

Header

Gambaran Umum Pembayaran & Gateway yang Didukung BDX

BDX.market adalah pasar eskro gaming dan barang digital utama Bangladesh. Untuk melindungi pembeli dan penjual dari penipuan, penipuan pemulihan akun, dan tidak adanya pengiriman, BDX mengoperasikan arsitektur eskro perlindungan pembeli yang ketat.

Di bawah arsitektur ini, saat pembeli membayar penawaran atau top-up, dana tidak dikirim langsung ke akun pribadi penjual. Sebaliknya, pembayaran ditangkap dan ditahan dengan aman oleh BDX. market di eskro hingga pesanan berhasil dikirim dan diverifikasi oleh pembeli atau hingga jendela perlindungan pembeli 7 hari standar berlalu.

Dokumen ini merinci ekosistem pembayaran yang mendukung BDX.market, termasuk konfigurasi sistem, driver pembayaran aktif, biaya, model keamanan, dan spesifikasi teknis penyedia.


Gateway Pembayaran & Adapter yang Didukung​

BDX.market menerapkan arsitektur gateway yang dapat dicolok yang didefinisikan di bawah App\Support\Payments\PaymentGatewayManager. Sistem secara dinamis memilih dan menginisialisasi penyedia pembayaran berdasarkan konfigurasi lingkungan (.env) dan flag administratif seluruh situs yang dikelola melalui App\Support\BdxSettings.

+----------------------------------+
| PaymentGatewayManager |
| App\Support\Payments |
+-----------------+----------------+
|
+--------------------+------------+------------+--------------------+
| | | |
+-----v-------+ +-------v------+ +-------v------+ +-------v------+
| Manual | | PipraPay | | EPS | | WooCommerce |
| Gateway | | Gateway | | Gateway | | Bridge (WC) |
+-------------+ +--------------+ +--------------+ +--------------+
(bKash/Nagad/ (Self-hosted (BB-Licensed (Legacy WP/WC
Rocket Proofs) bKash/Nagad/ Aggregator Integration)
Cards API) Cards/MFS)

1. Gateway Manual (manual)​

  • Kelas: App\Support\Payments\ManualPaymentGateway
  • Saluran yang Didukung: bKash, Nagad, Rocket, atau Transfer Bank langsung.
  • Mekanisme: Pembeli mengirimkan pembayaran secara manual ke nomor merchant/pribadi bKash/Nagad administratif yang diberikan selama checkout, lalu mengunggah bukti pembayaran (ID Transaksi dan/atau tangkapan layar). Admin meninjau pengiriman melalui Panel Admin Filament (App\Filament\Resources\MarketplacePaymentResource) dan menyetujui atau menolak bukti.
  • Kasus Penggunaan: Mode biaya pemrosesan gateway nol; status sistem out-of-the-box default.

2. Gateway PipraPay (piprapay)​

  • Kelas: App\Support\Payments\PipraPayGateway

  • Saluran yang Didukung: bKash, Nagad, Rocket, Upay, Visa, MasterCard otomatis.

  • Mekanisme: Integrasi gateway pembayaran otomatis Bangladesh yang di-hosting sendiri. Ini memulai tagihan melalui API RESTful (POST /api/create-charge) dan mengembalikan URL halaman pembayaran yang dihosting (pp_url). Setelah pembeli menyelesaikan pembayaran, PipraPay menerbitkan webhook server-ke-server yang berisi header kunci API (mh-piprapay-api-key). BDX memverifikasi ganda setiap transaksi sisi server melalui POST /api/verify-payments menggunakan referensi transaksi (pp_id) sebelum melepaskan eskro.

  • Persyaratan Konfigurasi:

    BDX_PIPRAPAY_ENABLED=true
    BDX_PIPRAPAY_BASE_URL=https://your-piprapay-instance.com
    BDX_PIPRAPAY_API_KEY=your_secret_api_key
    BDX_PIPRAPAY_CURRENCY=BDT

3. EPS — Gateway Sistem Pembayaran Mudah (eps)​

  • Kelas: App\Support\Payments\EpsPaymentGateway

  • Saluran yang Didukung: Agregator berlisensi Bank Bangladesh yang mencakup kartu bank utama Bangladesh, bKash, Nagad, Rocket, CellFin, dan tap.

  • Mekanisme: Alur pengalihan yang dihosting sepenuhnya otomatis.

    1. Mengautentikasi dengan server EPS (POST /v1/Auth/GetToken) menggunakan tanda tangan x-hash HMAC-SHA512 untuk menerima token bearer API.
    2. Menginisialisasi transaksi (POST /v1/EPSEngine/InitializeEPS) dengan kredensial toko dan parameter, memperoleh RedirectURL EPS.
    3. Menerima IPN AES-256-CBC terenkripsi di https://bdx.market/eps/ipn.
    4. Selalu mengeksekusi panggilan verifikasi server-ke-server yang otoritatif (GET /v1/EPSEngine/CheckMerchantTransactionStatus) menggunakan MerchantTransactionId sebelum memperbarui status pesanan.
  • Persyaratan Konfigurasi:

    BDX_EPS_ENABLED=true
    BDX_EPS_MODE=live # or sandbox
    BDX_EPS_FEE_RATE=3 # 3% gateway surcharge passed to buyer
    BDX_EPS_TRANSACTION_TYPE=1
    BDX_EPS_CURRENCY=BDT
    BDX_EPS_LIVE_BASE_URL=https://pgapi.eps.com.bd
    BDX_EPS_MERCHANT_ID=your_merchant_id
    BDX_EPS_STORE_ID=your_store_id
    BDX_EPS_USERNAME=your_username
    BDX_EPS_PASSWORD=your_password
    BDX_EPS_HASH_KEY=your_sha512_hash_key
    BDX_EPS_IPN_SECRET=your_aes_ipn_secret

4. Saldo BDX (bdx_balance)​

  • Kelas Dukungan: App\Support\BdxBuyerWallet
  • Mekanisme: Pembayaran instan di luar buku besar menggunakan kredit toko prabayar pembeli. Saldo BDX membutuhkan nol langkah gateway eksternal saat checkout. Stok dicadangkan secara atomik, pesanan langsung ditandai paid, dan pengiriman otomatis digital segera terpicu jika berlaku.

Arsitektur Eskro & Struktur Biaya​

BDX menegakkan batas transaksi yang aman dan perhitungan biaya yang transparan saat checkout.

Rincian Finansial Pesanan​

Saat pembeli membuat pesanan, harga final dihitung dalam Taka Bangladesh (BDT / ৳) menggunakan tiga komponen inti:

Total Price = Item Price * Quantity + Protection Fee + Gateway Surcharge

  1. Subtotal Barang: Harga satuan dasar yang ditetapkan penjual dikalikan jumlah yang dipilih.
  2. Biaya Perlindungan Pembeli: Dihitung per kategori pasar menggunakan MarketplaceCategory::resolvedBuyerFlatFee() dan resolvedBuyerPctFee(). Default ke biaya platform tetap ৳15 jika tidak dikonfigurasi. Biaya ini membiayai pemrosesan sengketa, cakupan perlindungan pembeli 7 hari, dan infrastruktur platform.
  3. Biaya Tambahan Gateway (MDR Pass-Through): Diterapkan secara kondisional tergantung metode pembayaran yang dipilih. Untuk pembayaran manual standar dan Saldo BDX, biayanya ৳0. Untuk gateway online dengan biaya pemrosesan tambahan (misalnya MDR EPS 3%), EpsPaymentGateway::feeFor() menghitung dan menambahkan biaya tambahan langsung ke snapshot pesanan (gateway_fee).

Model Komisi Penjual​

BDX tidak membebankan biaya pencantuman atau biaya langganan bulanan kepada penjual. Sebaliknya, BDX mempertahankan komisi berbasis kategori (default 5%) setelah pesanan berhasil diselesaikan.

Saat pesanan selesai, pembayaran bersih penjual dihitung sebagai:

Seller Earnings = (Item Subtotal) * (1 - Commission %)

Dana beralih dari Eskro BDX ke clearing_balance penjual dan selanjutnya berpindah ke available_balance mengikuti jendela kliring wajib.


Model Keamanan & Integritas Webhook​

Integrasi pembayaran otomatis harus bertahan dari pemalsuan, serangan replay transaksi, dan manipulasi parameter. BDX menerapkan protokol validasi ketat untuk semua webhook masuk dan endpoint pengembalian callback:

  1. Invarian Verifikasi Ulang Sisi Server: BDX tidak pernah mempercayai IPN mentah atau string kueri pengalihan browser untuk menandai pesanan sebagai dibayar atau mengkredit dompet. Terlepas dari status yang dilaporkan dalam badan webhook, BDX menerbitkan panggilan HTTP outbound yang terisolasi langsung ke API verifikasi resmi penyedia (verifyByReference() atau CheckMerchantTransactionStatus) menggunakan kredensial merchant rahasia.
  2. Pencocokan Jumlah Ketat: Webhook masuk diperiksa terhadap Order::total_price. Jika jumlah yang dibayar berbeda bahkan ৳0,01 dari catatan yang ada, sistem berhenti dengan kode status HTTP 409 Conflict.
  3. Tanda Tangan Kriptografis & Dekripsi:
    • PipraPay: Memvalidasi keberadaan dan kecocokan header mh-piprapay-api-key bersama sebelum mengurai muatan.
    • EPS: Mendekripsi muatan AES-256-CBC masuk menggunakan merchant rahasia ipn_secret. Langkah inisialisasi menghasilkan MerchantTransactionId unik 10+ digit yang menggabungkan mikro-detik stempel waktu dan entropi acak untuk mencegah serangan tabrakan.
  4. Pencegahan Kondisi Balapan & Pembelanjaan Ganda: Transisi status pesanan menggunakan transaksi basis data dengan batasan lockForUpdate() untuk menjamin bahwa callback duplikat atau klik ganda cepat tidak dapat memproses pembayaran dua kali.

Panduan terkait​