内购
前言
在阅读下文之前,请先阅读基本功能概述,了解后端回调接口的基本流程与签名规则。
完整支付流程
支付成功回调
对应流程图第 16、17 步,消息类型为 PAY_CALLBACK
。
在用户支付完成之后,平台会请求该回调接口,游戏方此时可以认为商品支付成功,开始商品发货。
失败重试机制
如果此接口响应失败或超时(超时时间为 1 分钟),则会重试调用接口,且不保证幂等性(即可能会重复发送相同的请求)。
游戏方需要自己保证接口的幂等性,防止重复发货。因为用户可能对一笔订单重复扫码支付,导致一笔订单发起多笔支付,所以建议用接口返回的 order_id
和 pay_id
来保证接口幂等性。
请求示例
{
"notify_type": "PAY_CALLBACK",
"timestamp": 1624529209,
"version": "v2",
"sign_type": "MD5",
"sign": "20386d447256c1b3310d7274b74c0f25",
"body": {
"order_id": 1407310309329157760,
"user_id": 700098915,
"product_id": 2321334,
"pay_platform": "gamebox",
"pay_type": "W3",
"price": 1000,
"pay_price": 1000,
"num": 1,
"pay_status": "PAY_SUCCESS",
"pay_id": "123123123123",
"ext1": "",
"ext2": "cpOrderId=xxx&gameid=xxx&gameName=xxx&coopid=xxx",
"ext3": "",
"other": "",
"order_time": "2021-12-08 12:59:59",
"pay_time": "2021-12-08 13:01:59"
}
}
请求参数说明
参数 | 类型 | 长度限制 | 示例 | 说明 |
---|---|---|---|---|
order_id | uint64 | 1407310309329157760 | 平台的订单号 | |
user_id | uint64 | 700098915 | 平台的用户 ID | |
product_id | string | 255 | 2321334 | 平台提供的 product_id |
pay_platform | string | 255 | gamebox | 支付平台 |
pay_type | string | 255 | W3 | 支付类型 |
price | int | 1000 | 商品价格人民币,单位“分”, VERIFY_PRICE 通知响应的结果 | |
pay_price | int | 1000 | 已废弃,但仍需参与签名 | |
num | int | 1 | 商品数量, VERIFY_PRICE 通知响应的结果 | |
pay_status | string | PAY_SUCCESS | 支付状态 | |
pay_id | string | 30 | 支付号,只有支付成功才有 | |
ext1 | string | 255 | 额外信息 1 | |
ext2 | string | 1024 | 额外信息 2,调起支付时携带的额外信息 | |
ext3 | string | 2048 | 额外信息 3,标准 JSON 格式的字符串 | |
other | string | 1024 | 额外信息 | |
order_time | string | 20 | 下单时间,时间格式 YYYY-MM-DD HH:mm:ss ,默认为东八区 | |
pay_time | string | 20 | 支付时间,时间格式 YYYY-MM-DD HH:mm:ss ,默认为东八区 |
响应示例
{
"code": 0,
"message": "success",
"data": null
}
响应参数说明
无