话单API对接
话单API对接
统一推单接口
推送话单
接口说明
请求URL:请在后台API信息中查看
请求方式:POST
body 指该参数需在请求JSON传参请求参数
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| body appKey | string | yes | 后台API信息中的appKey |
| body poolKey | string | yes | 话单池编码,详见话单池文档 |
| body callbackUrl | string | yes | 回调URL |
| body timestamp | long | yes | 毫秒级时间戳,有效期为一分钟 |
| body sign | string | yes | 利用MD5签名,不可重复使用 |
| body orders | array | yes | 推送的订单数组,参见订单数据结构 |
订单数据结构
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| body amount | string | yes | 订单金额 |
| body numberInfo | string | yes | 手机号码 |
| body orderId | string | yes | 订单ID |
| body expireTime | string | yes | 过期时间,格式为yyyy-MM-ddTHH:mm:ss,日期时间分隔符为T,非空格,最小要大于当前时间一分钟 |
| body exts | json | no | 支付信息,在某些订单池会用到,格式为jsonObject |
签名方法
MD5(timestamp+appSecret),appSecret为后台API信息中的appSecret
参数示例
{
"appKey": "ThisIsYourAppKey",
"poolKey": "DIANXIN_KC",
"callbackUrl": "http://www.callback-url.com/callback",
"timestamp": 1647344736869,
"sign": "9f80010babbc8230dfcb06b78a173e95",
"orders": [
{
"amount": "0.01",
"numberInfo": "13800138000",
"orderId": "123456789",
"expireTime": "2018-01-01T00:00:00",
"exts": {"ext1": "ext1"}
},
// ... 多个订单
]
}
注意
上述参数示例中,AppKey为 ThisIsYourAppKey ,AppSecret为 ThisIsYourAppSecret ,签名文本为 1647344736869ThisIsYourAppSecret
返回示例
{
"msg": "操作成功",
"code": 0, // 状态码为0则为成功,其他皆为异常
"data": [
"订单[OR20282852]上传失败:订单金额不能为空",
"订单[OR22795292]上传失败:订单金额错误",
], // 会返回上传失败的订单号 ,并附上错误信息,全部成功时为空数组
"timestamp": 1647344736869 // 失败时会返回该字段,该字段为服务器当前时间戳
}
回调
回调URL:下单时所传callbackUrl
回调方式:POST
退单回调时的RequestBody
{
"type": "RETURN", // 订单类型:RETURN为退单,PAID为支付
"orderId": "下单时传的orderId",
"timestamp": "回调时的毫秒时间戳",
"exts": "下单时传的exts",
"sign": "MD5('RETURN' + orderId + timestamp + appSecret)"
}
充值完成回调时的RequestBody
{
"type": "PAID", // 订单类型:RETURN为退单,PAID为支付
"orderId": "下单时传的orderId",
"timestamp": "回调时的毫秒时间戳",
"platformOrderId": "2022041623212382923", // 充值平台的官方订单号
"exts": "下单时传的exts",
"sign": "MD5('PAID' + orderId + timestamp + appSecret)"
}
// 签名时PAID不需要带单引号,仅代表其是文本!
返回200-299HTTP状态码代表已经成功处理回调,否则服务器会再稍后的时间继续进行回调
最佳实践
被回调时应当校验签名,且保证timestamp和当前时间相差不超过一分钟,如果无法完成校验请返回HttpStatusCode>=300的响应,系统会重新回调
池属性
- 重复:可以在同一天内推送重复手机号码的,但是前一单必须已经完成(已退单或者已充值)才可以继续推送。
- 不重复:当天每个号码只接受一单,如果当天已经有一单,则不接受新单。
常见问题
Q: 下单提示
签名不可重复使用A: 请保证每次下单都进行了签名,且时间戳不能与之前相同
Q: 下单提示
签名过期A: 请检查timestamp和返回的timestamp的时间差,不能超过一分钟