跳到主要内容

创建付款订单

创建一笔付款订单(payout),把资金送到玩家手机号。付款为人工处理,完成后通过 Webhook 通知你。

接口

  • 端点: POST {API_BASE}/apply/create
  • API_BASE: https://apply.168tonpay.xyz/api/v1/compat/godapay
  • 认证: 请求体 MD5 排序签名(见 认证

请求体

参数类型必需描述
merchantIdstring (UUID)你的商户 ID
outOrderNostring你系统的付款单号,≤ 32 字符,唯一
amountstring金额,BDT,最多两位小数,如 "1000.00"
bankTypestring通道:BKASH / NAGAD / ROCKET
userNamestring收款人姓名
accountstring玩家收款号码(01[3-9]XXXXXXXX
returnUrlstring完成回调地址
signaturestringMD5 排序签名

请求示例

cURL

curl -X POST "${API_BASE}/apply/create" \
-H "Content-Type: application/json" \
-d '{
"merchantId": "aef6025b-f435-443c-bb18-f10e65d9314c",
"outOrderNo": "WD-001",
"amount": "1000.00",
"bankType": "BKASH",
"userName": "Rahim Uddin",
"account": "01711000000",
"returnUrl": "https://your-server.example/payout-webhook",
"signature": "<md5-sorted>"
}'

Node.js

const crypto = require('crypto');

function sign(params, apiSecret) {
const signStr = Object.keys(params)
.filter((k) => k !== 'signature' && params[k] != null)
.sort()
.map((k) => `${k}=${params[k]}`)
.join('&') + `&key=${apiSecret}`;
return crypto.createHash('md5').update(signStr).digest('hex').toLowerCase();
}

async function createPayout({ outOrderNo, amount, account, userName }) {
const body = {
merchantId: process.env.MERCHANT_ID,
outOrderNo,
amount,
bankType: 'BKASH',
userName,
account,
returnUrl: 'https://your-server.example/payout-webhook',
};
body.signature = sign(body, process.env.API_SECRET);

const res = await fetch(`${process.env.APPLY_BASE}/apply/create`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
return res.json();
}

响应(200 OK)

{
"code": 0,
"data": {
"merchantId": "aef6025b-...",
"orderNo": "WD-001",
"platformOrderNo": "0bf9804d-a970-42fe-8532-138b6b89fb5f",
"status": "processing"
}
}

付款流程

1. 你调用 POST /apply/create(状态:processing)

2. 平台人工处理出款

3. 完成后向你的 returnUrl 发 webhook

4. 你的服务端验签后处理

幂等性

(merchantId, outOrderNo) 唯一,可作为幂等键。失败重试时使用同一个 outOrderNo,首次成功创建付款,重复单号返回原订单,绝不重复出款。

注意事项

  1. 余额校验:创建前商户余额必须 ≥ amount,否则返回 INSUFFICIENT_BALANCE
  2. 人工处理:付款不即时完成,以 webhook 为准。

查询状态

  • 主动查询:POST /apply/query(body 带 merchantId + outOrderNo + signature)。
  • 被动接收:完成 webhook,详见 Webhooks

下一步