BDX Payment Overview & Supported Gateways
BDX.market is Bangladesh's premier gaming and digital goods escrow marketplace. To protect both buyers and sellers against fraud, account recovery scams, and non-delivery, BDX operates a strict buyer protection escrow architecture.
Under this architecture, when a buyer pays for an offer or top-up, funds are not sent directly to the seller's personal account. Instead, payments are securely captured and held by BDX. market in escrow until the order is successfully delivered and verified by the buyer or until the standard 7-day buyer protection window passes.
This document details the payment ecosystem powering BDX.market, including system configuration, active payment drivers, fees, security models, and provider technical specs.
Supported Payment Gateways & Adapters​
BDX.market implements a pluggable gateway architecture defined under App\Support\Payments\PaymentGatewayManager. The system dynamically selects and initializes payment providers based on environment configuration (.env) and site-wide administrative flags managed via 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. Manual Gateway (manual)​
- Class:
App\Support\Payments\ManualPaymentGateway - Supported Channels: Direct bKash, Nagad, Rocket, or Bank Transfers.
- Mechanism: Buyers submit payment manually to administrative bKash/Nagad merchant/personal numbers provided during checkout, then upload proof of payment (Transaction ID and/or screenshot). Admins review the submission via the Filament Admin Panel (
App\Filament\Resources\MarketplacePaymentResource) and approve or reject the proof. - Use Case: Zero gateway processing fee mode; default out-of-the-box system state.
2. PipraPay Gateway (piprapay)​
-
Class:
App\Support\Payments\PipraPayGateway -
Supported Channels: Automated bKash, Nagad, Rocket, Upay, Visa, MasterCard.
-
Mechanism: A self-hosted Bangladeshi automated payment gateway integration. It initiates charges via a RESTful API (
POST /api/create-charge) and returns a hosted payment page URL (pp_url). After the buyer completes payment, PipraPay issues a server-to-server webhook containing an API key header (mh-piprapay-api-key). BDX double-verifies every transaction server-side viaPOST /api/verify-paymentsusing the transaction reference (pp_id) before releasing escrow. -
Configuration Requirements:
BDX_PIPRAPAY_ENABLED=trueBDX_PIPRAPAY_BASE_URL=https://your-piprapay-instance.comBDX_PIPRAPAY_API_KEY=your_secret_api_keyBDX_PIPRAPAY_CURRENCY=BDT
3. EPS — Easy Payment System Gateway (eps)​
-
Class:
App\Support\Payments\EpsPaymentGateway -
Supported Channels: Bangladesh Bank-licensed aggregator covering major Bangladeshi bank cards, bKash, Nagad, Rocket, CellFin, and tap.
-
Mechanism: Fully automated hosted-redirect flow.
- Authenticates with EPS servers (
POST /v1/Auth/GetToken) using an HMAC-SHA512x-hashsignature to receive an API bearer token. - Initializes transaction (
POST /v1/EPSEngine/InitializeEPS) with store credentials and parameters, obtaining an EPSRedirectURL. - Receives encrypted AES-256-CBC IPNs at
https://bdx.market/eps/ipn. - Always executes an authoritative server-to-server verification call (
GET /v1/EPSEngine/CheckMerchantTransactionStatus) usingMerchantTransactionIdbefore updating order status.
- Authenticates with EPS servers (
-
Configuration Requirements:
BDX_EPS_ENABLED=trueBDX_EPS_MODE=live # or sandboxBDX_EPS_FEE_RATE=3 # 3% gateway surcharge passed to buyerBDX_EPS_TRANSACTION_TYPE=1BDX_EPS_CURRENCY=BDTBDX_EPS_LIVE_BASE_URL=https://pgapi.eps.com.bdBDX_EPS_MERCHANT_ID=your_merchant_idBDX_EPS_STORE_ID=your_store_idBDX_EPS_USERNAME=your_usernameBDX_EPS_PASSWORD=your_passwordBDX_EPS_HASH_KEY=your_sha512_hash_keyBDX_EPS_IPN_SECRET=your_aes_ipn_secret