Visão geral de pagamentos e gateways aceitos na BDX
A BDX.market é o principal marketplace de jogos e produtos digitais com custódia de Bangladesh. Para proteger compradores e vendedores contra fraudes, golpes de recuperação de conta e não entrega, a BDX opera uma arquitetura rígida de custódia com proteção ao comprador.
Nessa arquitetura, quando um comprador paga por uma oferta ou recarga, os valores não são enviados diretamente para a conta pessoal do vendedor. Em vez disso, os pagamentos são capturados e retidos com segurança pela BDX.market em custódia até o pedido ser entregue com sucesso e verificado pelo comprador, ou até passar o prazo padrão de proteção ao comprador de 7 dias.
Este documento detalha o ecossistema de pagamentos que move a BDX.market, incluindo configuração do sistema, drivers de pagamento ativos, taxas, modelos de segurança e especificações técnicas dos provedores.
Gateways de pagamento e adaptadores aceitos
A BDX.market implementa uma arquitetura conectável de gateways definida em App\Support\Payments\PaymentGatewayManager. O sistema seleciona e inicializa provedores de pagamento dinamicamente com base na configuração de ambiente (.env) e em sinalizadores administrativos globais gerenciados 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. Gateway manual (manual)
- Classe:
App\Support\Payments\ManualPaymentGateway - Canais aceitos: Transferências diretas de bKash, Nagad, Rocket ou banco.
- Mecanismo: Compradores enviam o pagamento manualmente para números administrativos de bKash/Nagad (comerciante/pessoal) informados durante a finalização e depois enviam o comprovante de pagamento (ID da transação e/ou captura de tela). Administradores revisam o envio pelo painel administrativo Filament (
App\Filament\Resources\MarketplacePaymentResource) e aprovam ou rejeitam o comprovante. - Caso de uso: Modo sem taxa de processamento de gateway; estado padrão do sistema.
2. Gateway PipraPay (piprapay)
-
Classe:
App\Support\Payments\PipraPayGateway -
Canais aceitos: bKash, Nagad, Rocket, Upay, Visa, MasterCard automatizados.
-
Mecanismo: Integração automatizada de gateway de pagamento de Bangladesh auto-hospedado. Inicia cobranças via API RESTful (
POST /api/create-charge) e retorna uma URL de página de pagamento hospedada (pp_url). Após o comprador concluir o pagamento, o PipraPay emite um webhook servidor a servidor com cabeçalho de chave de API (mh-piprapay-api-key). A BDX verifica novamente cada transação no servidor viaPOST /api/verify-paymentsusando a referência da transação (pp_id) antes de liberar a custódia. -
Requisitos de configuração:
BDX_PIPRAPAY_ENABLED=trueBDX_PIPRAPAY_BASE_URL=https://your-piprapay-instance.comBDX_PIPRAPAY_API_KEY=your_secret_api_keyBDX_PIPRAPAY_CURRENCY=BDT
3. EPS — Sistema de pagamento fácil (eps)
-
Classe:
App\Support\Payments\EpsPaymentGateway -
Canais aceitos: Agregador licenciado pelo Banco de Bangladesh cobrindo os principais cartões bancários de Bangladesh, bKash, Nagad, Rocket, CellFin e tap.
-
Mecanismo: Fluxo totalmente automatizado com redirecionamento hospedado.
- Autentica-se nos servidores EPS (
POST /v1/Auth/GetToken) usando uma assinatura HMAC-SHA512x-hashpara receber um token de API. - Inicializa a transação (
POST /v1/EPSEngine/InitializeEPS) com credenciais e parâmetros da loja, obtendo umRedirectURLdo EPS. - Recebe IPNs criptografadas AES-256-CBC em
https://bdx.market/eps/ipn. - Executa sempre uma chamada autoritativa de verificação servidor a servidor (
GET /v1/EPSEngine/CheckMerchantTransactionStatus) usando oMerchantTransactionIdantes de atualizar o status do pedido.
- Autentica-se nos servidores EPS (
-
Requisitos de configuração:
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
4. Saldo BDX (bdx_balance)
- Classe de suporte:
App\Support\BdxBuyerWallet - Mecanismo: Pagamento instantâneo fora do razão usando crédito pré-financiado do comprador na loja. O saldo BDX não exige nenhuma etapa de gateway externo na finalização. O estoque é reservado atomicamente, o pedido é marcado como
paidna hora e a entrega automática digital é acionada imediatamente quando aplicável.
Arquitetura de custódia e estruturas de taxas
A BDX aplica limites seguros de transação e cálculos transparentes de taxas na finalização.
Detalhamento financeiro de um pedido
Quando um comprador cria um pedido, o preço final é calculado em Taka de Bangladesh (BDT / ৳) usando três componentes centrais:
Preço total = Preço do item * Quantidade + Taxa de proteção + Sobretaxa do gateway
- Subtotal de itens: Preço unitário base definido pelo vendedor multiplicado pela quantidade escolhida.
- Taxa de proteção ao comprador: Calculada por categoria do marketplace usando
MarketplaceCategory::resolvedBuyerFlatFee()eresolvedBuyerPctFee(). O padrão é uma taxa fixa de ৳15 da plataforma se não configurada. Essa taxa financia o processamento de disputas, a cobertura de proteção ao comprador de 7 dias e a infraestrutura da plataforma. - Sobretaxa do gateway (repasse de MDR): Aplicada condicionalmente conforme o método de pagamento escolhido. Para pagamentos manuais padrão e saldo BDX, a taxa é ৳0. Para gateways online com sobretaxas de processamento (por ex., MDR de 3% do EPS),
EpsPaymentGateway::feeFor()calcula e anexa a sobretaxa diretamente ao snapshot do pedido (gateway_fee).
Modelo de comissão do vendedor
A BDX não cobra taxas de anúncio nem mensalidades dos vendedores. Em vez disso, a BDX retém uma comissão por categoria (padrão de 5%) após a conclusão do pedido.
Quando um pedido é concluído, o pagamento líquido do vendedor é calculado como:
Ganhos do vendedor = (Subtotal de itens) * (1 - % de comissão)
Os valores passam da custódia da BDX para o clearing_balance do vendedor e depois para o available_balance após o prazo obrigatório de liberação.
Modelos de segurança e integridade de webhooks
Integrações automatizadas de pagamento devem se defender contra falsificação, ataques de replay de transação e adulteração de parâmetros. A BDX implementa protocolos rígidos de validação para todos os webhooks recebidos e endpoints de retorno:
- Invariante de reverificação no servidor: A BDX nunca confia em IPNs brutas nem em query strings de redirecionamento do navegador para marcar um pedido como pago ou creditar uma carteira. Independentemente do status relatado no corpo do webhook, a BDX emite uma chamada HTTP isolada de saída diretamente para a API oficial de verificação do provedor (
verifyByReference()ouCheckMerchantTransactionStatus) usando credenciais secretas de comerciante. - Correspondência rígida de valores: Webhooks recebidos são conferidos contra
Order::total_price. Se o valor pago diferir em até ৳0,01 do registro arquivado, o sistema interrompe com um código de status HTTP409 Conflict. - Assinaturas criptográficas e descriptografia:
- PipraPay: Valida a presença e a correspondência do cabeçalho compartilhado
mh-piprapay-api-keyantes de analisar os payloads. - EPS: Descriptografa payloads AES-256-CBC recebidos usando o
ipn_secretsecreto do comerciante. A etapa de inicialização gera umMerchantTransactionIdúnico de 10+ dígitos incorporando microssegundos de timestamp e entropia aleatória para evitar ataques de colisão.
- PipraPay: Valida a presença e a correspondência do cabeçalho compartilhado
- Prevenção de condição de corrida e gasto duplo: Transições de estado de pedido usam transações de banco de dados com restrições
lockForUpdate()para garantir que callbacks duplicados ou cliques duplos rápidos não processem pagamentos duas vezes.
Guias relacionados
- Fluxo de finalização — Visão passo a passo do processo de finalização do comprador.
- Solução de problemas de pagamento — Soluções para problemas comuns de pagamento e transações com falha.
- Proteção ao comprador — Política detalhada sobre custódia e cobertura da BDX.