Skip to content

泰国代收(Payin)

商户 API 前缀:/api/v1/merchant。鉴权 Header 见 签名规范

创建代收订单

创建一笔泰国代收订单。merchantOrderNo 在商户维度须唯一。国家与币种由商户号绑定,泰国固定为 TH / THB,请求体无需传 countryCodecurrency

接口

项目
MethodPOST
Path/api/v1/merchant/payin/create

请求体

字段类型必填说明
merchantOrderNostring商户订单号,唯一
amountstring/numberTHB 代收金额,最多 2 位小数
bankCodestring固定传 QR
notifyUrlstring本单回调地址;为空则使用商户默认配置
remarkstring订单备注
payer_mobilestring付款人手机号
payer_realnamestring付款人姓名
payer_emailstring付款人邮箱
payer_id_nostring付款人证件号
extJson.accountNostringQR 代收账户号

历史字段 bankName 可继续传入,平台会兼容接收但不会参与路由、费率匹配或上游请求;新接入请只传 bankCode

bankCode 枚举

创建泰国代收订单时,请在请求体中传字段 "bankCode": "QR"

bankCode说明
QR泰国 QR 代收

响应 data 字段

字段说明
orderNo平台订单号(PI 前缀)
merchantOrderNo商户订单号
amount / feeAmount / netAmount金额字符串
status成功创建后通常为 processing
payUrl / payQr支付链接 / 二维码内容
createdAtUnix 秒级时间戳

cURL 示例

bash
API_BASE="https://api.soranopro.com"
BODY='{"merchantOrderNo":"PAYIN-20260719-115013-002","amount":"1000","bankCode":"QR","notifyUrl":"https://merchant.example.com/callback/payin","remark":"","payer_mobile":"","payer_realname":"","payer_email":"","payer_id_no":"","extJson":{"accountNo":"5555"}}'
# 按 /signature 规则对 BODY 字段 + timestamp + nonce 签名后填入 SIGN

curl -X POST "${API_BASE}/api/v1/merchant/payin/create" \
  -H "Content-Type: application/json" \
  -H "X-Merchant-No: M42" \
  -H "X-Timestamp: 1718198400" \
  -H "X-Nonce: $(uuidgen)" \
  -H "X-Sign: ${SIGN}" \
  -d "${BODY}"

响应示例

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "orderNo": "PI20260608120000123456",
    "merchantOrderNo": "PAYIN-20260719-115013-002",
    "amount": "1000",
    "feeAmount": "50",
    "netAmount": "950",
    "status": "processing",
    "payUrl": "https://card-h5-test.forapayhub.com/#/CEndRepayment?orderNo=PAYIN2078689080662335488",
    "payQr": "https://card-h5-test.forapayhub.com/#/CEndRepayment?orderNo=PAYIN2078689080662335488",
    "createdAt": 1784433071
  }
}

查询代收订单

接口

项目
MethodGET
Path/api/v1/merchant/payin/query

Query 参数(二选一)

参数说明
orderNo平台订单号
merchantOrderNo商户订单号

GET 请求签名参数来自 Query,并追加 Header 的 timestampnonce

响应示例

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "orderNo": "PI20260608120000123456",
    "merchantOrderNo": "PAYIN20260608001",
    "amount": "2000.00",
    "feeAmount": "20.00",
    "netAmount": "1980.00",
    "status": "completed",
    "completedAt": 1718200200,
    "createdAt": 1718198400
  }
}

异步回调

收到回调后的验签、幂等处理、应答 OK 与重试策略,见 异步回调接入指南

平台在代收订单进入终态(completed / failed / timeout)后,向创建时传入的 notifyUrl 发起 POST

回调请求

Headers(与商户 API 相同机制):

Header说明
Content-Typeapplication/json
X-Merchant-No商户号
X-TimestampUnix 秒
X-NonceUUID
X-Sign平台 RSA2 签名

Body 示例

json
{
  "orderType": "payin",
  "orderNo": "PI20260608120000123456",
  "merchantOrderNo": "PAYIN20260608001",
  "status": "completed",
  "amount": "2000.00",
  "feeAmount": "20.00",
  "netAmount": "1980.00",
  "failureReason": "",
  "completedAt": 1718198400
}

验签时将 Body 字段扁平化后,与 timestampnonce 一并参与签名(规则同 签名文档)。

商户响应

处理成功须返回:

  • HTTP 200
  • Body 纯文本 OK

注意事项

  1. 终态 completed / failed / timeout 会推送回调
  2. 可能重复通知,请按 merchantOrderNo / orderNo 幂等更新
  3. 必须先验签 再改订单状态

订单状态

status说明
created已创建,待平台确认入款
processing处理中
partial_paid部分支付
completed已完成,已入账并回调
failed失败
timeout上游返回超时
cancelled已取消

基于 MIT 许可证发布。

2-1-2 Nihonbashi-Hongokucho,Chuo-ku,Tokyo