如何接入孟加拉支付API?开发者入门教程
如何接入孟加拉支付API?开发者入门教程
一、孟加拉支付市场概述
作为南亚地区增长最快的经济体之一,孟加拉的电子支付市场近年来蓬勃发展。随着智能手机普及率提高和互联网基础设施改善,越来越多的企业和开发者希望接入本地化支付解决方案。本文将详细介绍如何从技术层面接入孟加拉主流支付API。
二、前期准备工作
1. 选择适合的支付服务提供商
在孟加拉运营的主要支付网关包括:
- bKash(市场份额最大)
- Nagad(政府支持的数字钱包)
- Rocket(Dutch-Bangla Bank旗下)
- Upay
- SureCash
2. 注册商户账户
访问选定提供商的官方网站,完成以下步骤:
- 提交企业注册文件
- 填写申请表
- 等待审核(通常3-7个工作日)
- 获取商户ID和API密钥
3. API文档获取
成功注册后,登录商户后台下载最新版API文档。大多数提供商支持RESTful API接口。
三、开发环境配置
1.基础要求
• HTTPS协议(SSL证书必须)
• IP白名单设置(部分平台需要)
•服务器时区设置为UTC+6(达卡时间)
2.SDK安装(以PHP为例)
//通过Composer安装官方SDK
composer require bkash/api-client
//或手动引入
require_once 'path/to/bKashApi.php';
其他语言如Python/Java/Node.js也有对应SDK可供使用。
四、核心API对接流程
以下是典型的集成步骤:
1. 鉴权认证
//示例:获取访问令牌
const authResponse = await fetch('https://api.bkash.com/token', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'username': '[YOUR_MERCHANT_USERNAME]',
'password': '[YOUR_API_PASSWORD]'
},
body: JSON.stringify({ grant_type: 'client_credentials' })
});
2. 创建交易请求
# Python示例 -发起付款请求
import requests
payload = {
"mode": "0011", #测试模式代码
"payerReference": "INV12345",
"callbackURL": "https://yourdomain.com/callback",
"amount": "500",
"currency": "BDT",
"intent":"sale"
}
headers = {
"Authorization":"Bearer [ACCESS_TOKEN]",
"X-App-Key":"[APP_KEY]"
}
response=requests.post("https://api.bkash.com/create",json=payload,headers=headers)
3. 处理回调通知
所有交易状态变更会通过webhook通知:
// Java Spring Boot接收回调示例
@PostMapping("/payment/callback")
public ResponseEntity<String> handleCallback(@RequestBody CallbackData data) {
if(data.getStatus().equals("Completed")){
//更新订单状态为已付款
} else {
//记录失败原因
}
return new ResponseEntity<>("OK", HttpStatus.OK);
}
4. 查询交易结果
即使收到回调也应主动查询确认:
$transactionId="TRX789012";
$queryUrl="https://api.nagad.com/query/".$transactionId;
$ch=curl_init($queryUrl);
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'Authorization:Bearer '.$accessToken,
'X-Merchant-ID:'.$merchantId
]);
$result=curl_exec($ch);
/*返回JSON格式:
{
"statusCode":"0000",
"amount":"1000",
"trxTimestamp":"2023-05
五、测试与沙箱环境使用
1. 获取测试凭证
所有主流支付平台都提供沙盒环境:
- bKash Sandbox: https://developer.bkash.com
- Nagad Test Portal: https://sandbox.mynagad.com
- Rocket Dev Zone: https://developer.rocket.com.bd
申请时需要:
• 测试用手机号(接收验证码)
• 虚拟商户ID
• 模拟API密钥
2.常见测试场景
用例 | 测试金额(BDT) | 预期结果 |
---|---|---|
小额支付 | 10-100 | 即时到账 |
大额交易 | 5000+ | 可能需要OTP验证 |
重复订单ID | 任意金额 | 应返回错误 |
过期会话 | 已超时的paymentID |交易失效提示| |
# cURL测试示例(Nagad)
curl -X POST \
https://sandbox.mynagad.com/api/checkout \
-H 'Content-Type: application/json' \
-d '{
"merchantId": "TEST001",
"invoiceNumber": "DEMO123",
"amount": "50.00"
}'
六、生产环境上线检查清单
完成以下步骤后再切换至正式环境:
- SSL证书通过PCI DSS合规检测
- IP白名单已在支付平台后台配置完成
- Webhook端点压力测试(建议支持200+TPS)
- 对账模块集成完毕
- Bangla语言错误提示已本地化
七、特殊注意事项
1.孟加拉本地合规要求
•必须保存交易记录至少5年
•超过5000BDT的交易需提交额外身份验证
•禁止接入赌博/成人内容等高风险行业
2.货币与手续费
主要支付方式费率对比:
(注:图片需替换为实际数据图表)
bKash → 1.85% + VAT
Nagad → 固定15BDT/笔
Rocket → 企业账户可谈至1%
信用卡通道 → 3%-4%(不推荐)
八、故障排查指南
当API返回错误时可参考:
HTTP状态码分析
表:常见错误代码对照
| 代码 | 含义 | 解决方案 |
|————|—————————|———————————|
401 认证失败 ⇒检查时间戳是否在UTC+6时区
403 IP未授权 ⇒联系客服添加服务器IP
429 请求限流 ⇒降低调用频率或申请配额提升
503 服务维护 ⇒查看官方状态页(status.nagad.com)
//典型错误处理逻辑示例(bKash)
try {
const payment = await bkash.createPayment(params);
} catch (error) { //捕获特定业务异常
if(error.code === 'INSUFFICIENT_BALANCE'){
alert("用户钱包余额不足");
} else if(error.code === 'TX_TIMEOUT'){
console.log("该订单已过期,请重新发起");
}
}
九、最佳实践建议
根据我们对接50+当地企业的经验总结:
✔️ 混合集成策略
同时接入至少两个支付渠道(如bKash+Nagad),避免单点故障影响营收。
✔️ 智能路由优化
根据实时成功率自动切换通道:
if(bkash失败次数>3){
fallbackTo(nagadAPI);
}
✔️ 本土化体验增强
- Ramadan期间调整营业时间显示
- UI适配右向左阅读习惯(Bengali界面)
如需更详细的代码示例或具体平台的对接手册,欢迎访问我们的开发者社区[链接]获取最新资源。本文将持续更新以反映2024年孟加拉央行的新规变化。