如何为移动App对接孟加拉支付通道?

为移动App对接孟加拉支付渠道需要综合考虑当地支付习惯、监管要求和主流技术方案。以下是分步骤的专业指南:

一、市场调研阶段

  1. 主流支付方式分析:
  • bKash(占移动钱包市场75%份额)
  • Nagad(政府背景,增速最快)
  • Rocket (Dutch-Bangla Bank)
  • Upay(电信运营商合资)
  • 银行卡:Visa/Mastercard普及率约18%
  • 银行直连:IBBL, City Bank等提供API

  1. 监管要求:
    • Bangladesh Bank要求所有支付处理商持有PSP许可证
    • 外汇交易需通过授权经销商(AD)进行
    • 必须遵守《外汇管制法》和《数字安全法》

二、技术对接方案选择

  1. 直接集成方案:
    ✔️ bKash商户API(文档获取需企业注册)
    ✔️ Nagad Checkout API
    ✔️ SSLCommerz聚合网关(支持15+本地渠道)

  2. 间接集成方案:
    • PayWell等跨境收单服务商
    • Airwallex等虚拟账户方案

三、具体实施流程

  1. KYC准备材料清单:
  • Trade License副本
  • TIN证书

四、具体实施流程(续)

1. KYC 材料准备(企业级商户)

在孟加拉国接入支付通道,通常需要向支付服务商或银行提交以下文件:

  • 公司注册文件:Trade License(贸易许可证)、RJSC 注册证书
  • 税务文件:TIN (Tax Identification Number) 证书、VAT 登记证(如适用)
  • 银行账户证明:本地银行账户信息(部分网关要求必须是孟加拉国企业账户)
  • 董事/股东资料:护照/国民ID复印件、照片、地址证明
  • 业务说明文档
    • 网站/App介绍
    • 交易类型说明(电商、订阅等)
    • AML合规声明

📌 注意: bKash/Nagad等钱包可能额外要求与本地代理商合作,而非直接开放API给外国公司。


2. API对接技术细节

不同支付方式的技术实现有所不同:

(1) bKash API集成

bKash提供两种主要模式:
Checkout模式: (适合中小商户)

// Example JS SDK调用
bKash.init({
paymentMode: 'checkout',
paymentRequest: {
amount: '1000',
intent: 'sale'
},
});

Merchant Wallet模式: (需单独申请高权限账号)

🔹 关键接口:

  • /token/grant – OAuth2认证获取访问令牌
  • /create/payment –发起交易请求
  • /execute/payment –确认扣款

⚠️ 沙盒测试developer.bkash.com提供模拟环境。


(2) Nagad Quick Checkout

Nagad的流程更偏向跳转式支付:

  1. App端调用 createPayment API生成交易ID。
  2. Redirect用户至Nagad H5页面完成付款。
  3. Nagad回调你的服务器通知结果。
// Android示例 (Retrofit)
@POST("/api/create-payment")
Call<PaymentResponse> createPayment(
@Body PaymentRequest request //包含amount,orderId,redirectURL等参数
);

(3) SSLCommerz聚合网关

如果不想逐个对接,可使用聚合方案:
📌支持渠道包括:
• bKash • Nagad • Rocket • Upay • Visa/Mastercard

典型REST调用流程:

import requests

payload = {
"store_id": "your_ssl_store_id",
"tran_id": "UNIQUE_ORDER_ID",
"total_amount": "1200",
"success_url": "https://yourapp.com/success", #必须HTTPS!
}

response = requests.post("https://sandbox.sslcommerz.com/gwprocess/v4/api.php", data=payload)

五、关键注意事项

🔹货币与结算限制

• Debit/Card交易以BDT(塔卡)结算,外汇兑换需央行审批。
• Payout周期通常T+3~7天到账本地银行。

🔹失败率优化建议

✔️ SMS OTP兼容性——部分运营商过滤短信号码
✔️ Fallback策略——当bKash失败时自动切换至Upay

🔹合规要点

❗禁止接入赌博/加密货币类业务
❗所有交易日志需保留至少5年供审计


✅推荐架构设计图

[Your Mobile App] → [Backend API] → [Deploy Local Proxy in BD?]
↘→ [Payment Gateway]
├─ bkash-api.dhaka-bank.com
├─ nagad-merchant-gateway
└─ sslcommerz-lb

如需进一步讨论具体代码实现或推荐当地PSP合作伙伴,可继续深入探讨!

六、深入技术实现与优化策略

1. 本地化支付体验优化
孟加拉用户对支付流程有特殊偏好,需针对性设计:
✅ 语言适配
– 支付界面必须支持孟加拉语(বাংলা),可动态切换(如bKash/Nagad的SDK已内置)
– 错误消息本地化(示例):
“`json
{
“error_code”: “BKASH_OTP_TIMEOUT”,
“message_en”: “OTP expired, please retry”,
“message_bn”: “ওটিপি সময় শেষ হয়েছে, আবার চেষ্টা করুন”
}
“`

✅ 流量节省模式
– Nagad/bKash等APP在低网速环境下会降级到USSD支付(*247#类菜单操作),你的App应检测网络状态并提示用户最优方式。

2. Android/iOS SDK集成细节
(1) Android端注意事项
🔹 bKash SDK依赖冲突解决
其SDK可能引入旧版`androidx.appcompat`,需强制指定版本:
“`gradle
implementation(‘com.bkash:payment-sdk:3.4.1’) {
exclude group: ‘androidx.appcompat’, module: ‘appcompat’
}
“`

🔹 Deep Link回调配置
在`AndroidManifest.xml`中声明Nagad的回调Activity:
“`xml





“`

(2) iOS端关键点
🔸 ATS例外处理
部分银行网关仍使用HTTP,需在`Info.plist`中添加白名单:
“`xml
NSAppTransportSecurity

NSExceptionDomains

sslcommerz.com
NSIncludesSubdomains>


“`

七、风控与合规增强方案

🔥高风险场景应对策略
| 风险类型 | 解决方案 |
|———|———-|
| OTP欺诈 | IP地理围栏 + Device Fingerprinting |
| Chargeback争议 | Mandatory screenshot proof upload |
| AML大额交易 | Auto-trigger ECN申报 (超过$5000) |

📜必须添加的用户协议条款示例:
“`plaintext
By paying via bKash/Nagad, you consent to share your:
– Mobile number verification logs with Bangladesh Bank FIU.
– Transaction history for VAT audit purposes (if applicable).
“`

八、替代方案对比分析

如果直接对接困难,可考虑以下中间件:

| Provider | Fees | Payout Time | Best For |
|—————|————-:|————–:|———————–|
| Payza (BD) | 3.5% + $0.15 | T+5 | Freelancer platforms |
| Sonali Bank API 固定费率৳1000/月 T+2 Bulk utility payments|
|—|—|—|

💡 *推荐选择*:若交易量<1000笔/月 → SSLCommerz;高频率大额→直连银行API。 --- 🚀最终技术架构建议 ``` [Frontend App] │───► [BFF Layer] handles device fingerprinting & locale detection │ ├── [Bangladesh Payment Router] ← Dynamic rule engine to switch channels │ │ based on success rate monitoring │ ├─► bKash → gRPC streaming API (for real-time status) │ ├─► Nagad → HTTP/2 with QUIC fallback │ └─► Bank APIs → Mutual TLS auth └── [Reconciliation Module] ← Automatch transactions with ERP system ``` 需要具体某家银行的SWIFT报文格式或测试卡号列表吗?可以继续展开!