代收订单 · 孟加拉
大约 4 分钟
概述
代收 API 用于向客户发起代收交易。本页为 孟加拉(国家码 bd)的代收能力说明,支持以下两种下单方式:
| 下单方式 | 路径 | 说明 |
|---|---|---|
| 收银台模式 | /pay/prePay | 默认模式,返回 cashierUrl,用户跳转平台 H5 收银台完成支付 |
| API 模式 | /pay/transOrder | 请求中必须指定 method,直接返回 payData / payDataType(上游支付页跳转链接) |
- 金额单位为 BDT。代收不支持非零小数,须为正整数塔卡(示例:
100、100.0、100.00均可;100.50会拒单)。 method(孟加拉代收方式编码)见 地区支付说明 — 孟加拉。
接入说明
默认开通收银台模式。如需对接 API 模式,请联系客服申请商户白名单后再集成。
请求头
两种模式共用:
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
| Content-Type | M | String | 固定值:application/json |
收银台模式(prePay)
商户预下单后获取 cashierUrl,引导用户至平台收银台选择支付方式并完成付款。
请求路径
域名:推荐使用统一域名
openapi.toppayment.com(路径不变);原国别域名(如global-bd-openapi.toppayment.com)仍可用。
| 环境 | 地址 |
|---|---|
| 沙箱 | https://openapi.toppayment.com/sandbox/bd/pay/prePay |
| 生产 | https://openapi.toppayment.com/bd/pay/prePay |
请求体
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
| mchNo | M | String(32) | 商户编号 |
| orderNum | M | String(64) | 商户订单号 |
| amount | M | Number | 交易金额(BDT,正整数塔卡;100.00 视为整数,100.50 拒单) |
| productDetail | M | String(100) | 产品详情 |
| method | O | String(16) | 支付方式,可选;不传则用户在收银台选择。见 孟加拉代收编码 |
| timestamp | M | String(13) | 毫秒时间戳 |
| customerName | M | String(64) | 客户姓名 |
| customerEmail | M | String(64) | 客户邮箱 |
| customerPhone | O | String(32) | 客户钱包号,建议 01 开头 11 位数字 |
| downNotifyUrl | M | String(255) | 异步通知地址 |
| redirectUrl | O | String(512) | 支付完成跳转地址 |
| sign | M | String | RSA 签名,参见 签名生成 |
请求体示例
{
"mchNo": "{{mchNo}}",
"orderNum": "BD1234561",
"amount": 1000.00,
"productDetail": "test",
"method": "BKASH",
"timestamp": "1749451858772",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"downNotifyUrl": "https://example.com/notify",
"redirectUrl": "https://example.com/paid",
"sign": "按签名规则生成后替换"
}
{
"mchNo": "{{mchNo}}",
"orderNum": "BD1234562",
"amount": 500,
"productDetail": "test",
"method": "NAGAD",
"timestamp": "1749451858772",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"downNotifyUrl": "https://example.com/notify",
"redirectUrl": "https://example.com/paid",
"sign": "按签名规则生成后替换"
}
响应字段
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
| success | M | Boolean | 请求是否成功 |
| code | M | String | 9999:成功;其他:失败 |
| msg | O | String | 响应消息,成功时为 null |
| timeStamp | M | Number | 响应时间戳(毫秒) |
| data | M | Object | 响应数据 |
| orderNum | M | String | 商户订单号 |
| platOrderNum | M | String | 平台订单号 |
| amount | M | Number | 交易金额 |
| fee | M | Number | 手续费 |
| method | O | String | 支付方式(若请求未传则为空,以收银台选择为准) |
| productDetail | M | String | 产品详情 |
| customerName | M | String | 客户姓名 |
| customerEmail | M | String | 客户邮箱 |
| customerPhone | O | String | 客户钱包号 |
| validTime | M | Number | 订单过期时间(毫秒时间戳) |
| cashierUrl | M | String | 平台收银台 URL |
响应说明
收银台模式不返回 payData、payDataType;支付凭证字段仅见于 API 模式 响应。
响应示例
{
"success": true,
"code": "9999",
"msg": null,
"timeStamp": 1767840272829,
"data": {
"orderNum": "BD1234561",
"platOrderNum": "BDPTJ2009093829059153920",
"amount": 1000.00,
"fee": 20.00,
"method": "BKASH",
"productDetail": "test",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"validTime": 1767926672819,
"cashierUrl": "https://example.cashier/pay"
}
}
API 模式(transOrder)
商户在请求中指定支付方式后,直接向支付通道发起交易,并在响应中返回 payData / payDataType,无需跳转平台 H5 收银台。
请求路径
| 环境 | 地址 |
|---|---|
| 沙箱 | https://openapi.toppayment.com/sandbox/bd/pay/transOrder |
| 生产 | https://openapi.toppayment.com/bd/pay/transOrder |
请求体
与收银台模式相比,差异如下:
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
| method | M | String(16) | 支付方式(孟加拉) API 模式必传。支持 BKASH、NAGAD,见 地区支付说明 — 孟加拉 |
其余字段与收银台模式相同。
请求体示例
{
"mchNo": "{{mchNo}}",
"orderNum": "BDPAYINAPI1234561",
"amount": 1000.00,
"productDetail": "test",
"method": "BKASH",
"timestamp": "1749451858772",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"downNotifyUrl": "https://example.com/notify",
"redirectUrl": "https://example.com/paid",
"sign": "按签名规则生成后替换"
}
{
"mchNo": "{{mchNo}}",
"orderNum": "BDPAYINAPI1234562",
"amount": 500,
"productDetail": "test",
"method": "NAGAD",
"timestamp": "1749451858772",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"downNotifyUrl": "https://example.com/notify",
"redirectUrl": "https://example.com/paid",
"sign": "按签名规则生成后替换"
}
响应字段
公共响应字段(success、code、msg、timeStamp 及 data 中的 orderNum、platOrderNum、amount、fee、method、productDetail、customerName、customerEmail、customerPhone、validTime)与收银台模式相同。API 模式重点关注:
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
| payData | M | String | 支付数据,通常为上游支付页跳转链接,具体含义由 payDataType 决定 |
| payDataType | M | String | 支付数据类型;孟加拉钱包场景为 CASHIER_URL |
| cashierUrl | O | String | 部分通道可能同时返回;API 模式请以 payData 为准 |
payDataType 说明
| payDataType | 说明 | 典型 method |
|---|---|---|
CASHIER_URL | 上游支付页跳转链接 | BKASH、NAGAD |
响应示例
{
"success": true,
"code": "9999",
"msg": null,
"timeStamp": 1767840272829,
"data": {
"orderNum": "BDPAYINAPI1234561",
"platOrderNum": "BDPTJ2009093829059153920",
"amount": 1000.00,
"fee": 20.00,
"method": "BKASH",
"productDetail": "test",
"customerName": "Rahim Uddin",
"customerEmail": "[email protected]",
"customerPhone": "01880612345",
"validTime": 1767926672819,
"cashierUrl": "https://sg-cb.megipay.com/api/v1/sandbox/order.html?type=1&order_no=MegExample",
"payData": "https://sg-cb.megipay.com/api/v1/sandbox/order.html?type=1&order_no=MegExample",
"payDataType": "CASHIER_URL"
}
}
通知
两种下单方式的异步通知一致;status 见 交易状态码。收到后请返回字符串 SUCCESS。
