如何接入孟加拉支付API?开发者入门教程

如何接入孟加拉支付API?开发者入门教程

一、孟加拉支付市场概述

作为南亚地区增长最快的经济体之一,孟加拉的电子支付市场近年来蓬勃发展。随着智能手机普及率提高和互联网基础设施改善,越来越多的企业和开发者希望接入本地化支付解决方案。本文将详细介绍如何从技术层面接入孟加拉主流支付API。

二、前期准备工作

1. 选择适合的支付服务提供商

在孟加拉运营的主要支付网关包括:

  • bKash(市场份额最大)
  • Nagad(政府支持的数字钱包)
  • Rocket(Dutch-Bangla Bank旗下)
  • Upay
  • SureCash

2. 注册商户账户

访问选定提供商的官方网站,完成以下步骤:

  1. 提交企业注册文件
  2. 填写申请表
  3. 等待审核(通常3-7个工作日)
  4. 获取商户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. 获取测试凭证

所有主流支付平台都提供沙盒环境:

申请时需要:

• 测试用手机号(接收验证码)
• 虚拟商户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"
}'

六、生产环境上线检查清单

完成以下步骤后再切换至正式环境:

  1. SSL证书通过PCI DSS合规检测
  2. IP白名单已在支付平台后台配置完成
  3. Webhook端点压力测试(建议支持200+TPS)
  4. 对账模块集成完毕
  5. Bangla语言错误提示已本地化

七、特殊注意事项

1.孟加拉本地合规要求

•必须保存交易记录至少5年  
•超过5000BDT的交易需提交额外身份验证
•禁止接入赌博/成人内容等高风险行业

2.货币与手续费

主要支付方式费率对比:

Payment Fee Comparison
(注:图片需替换为实际数据图表)

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年孟加拉央行的新规变化。