通知退款状态
使用场景
当小程序开发者开发者申请的退款有结果后(退款状态为:退款成功、退款失败),百度收银台会把相关结果发送开发者的退款回调地址(开发者平台注册的退款回调地址),开发者需要接收处理,并返回应答。
接口注意事项
幂等性:开发者接口需要具备幂等性平台技术术语—-幂等性;
超时时间:开发者接口的耗时要求小于 2s(超过 2s 会触发平台的超时重试,重试间隔:2min/4min/10min/30min/1h…);
返回值判断:errno 为 0 表示开发者已经成功收到退款成功信息,并妥善处理。errno 不为 0 将认为是同步退款结果信息失败,会发起重试(不限次数,重试间隔:2min/4min/10min/30min/1h…);
订单状态同步:开发者收到通知退款状态回调切严格按照文档提示返回参数,后台订单状态才会同步且显示“已退款”;
如未收到回调请求,请检查服务器网关是否有准入限制,如有限制参照阿里云安全组设置中的 IP 地址设置白名单。
通知参数说明
参数 | 参数名称 | 类型(长度范围) | 参数说明 | 是否可空 | 样例 |
---|---|---|---|---|---|
userId | 用户 ID | Long | 百度收银台用户 ID | 是 | 149235070 |
orderId | 订单 ID | Long | 百度平台订单 ID | 否 | 1068881223 |
tpOrderId | 开发者订单 ID | String | 开发者订单 ID | 是 | 11119800 |
refundBatchId | 退款批次号 | String | 平台退款批次号【幂等性标识参数】(用于重入判断) | 否 | 149235070 |
refundStatus | 退款状态 | Int | 1:退款成功,2:退款失败 | 否 | 1 |
rsaSign | 参数签名 | String | 平台生成的 sign | 是 | 全部参数参与签名,详见签名与验签。 |
备注:这里对全部参数签名是对平台的所有 POST 参数进行签名,如果开发者 URL 里包含 GET 类型参数,不会参与签名。验签需要使用正确格式的平台公钥,可以在服务详情中查询,详见签名与验签第 8 项内容。
返回参数说明
名称 | 类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|
errno | Int | 是 | 0 | 返回码 |
msg | String | 是 | success | 返回信息 |
data | Object | 是 | {} | 返回数据 |
通知触发条件
退款成功后,平台会调用该接口,将退款成功消息通知到开发者。
开发者服务器通知参数获取
百度收银台是用 POST 方式发送通知信息,参数以 URL param 的方式返回。
PHP 服务推荐参数获取方式:
$_POST['xxx']
。Java 服务推荐参数获取方式:
@RequestParam(value="xxx")
。百度收银台主动发起通知,该方式才会被启用。
程序执行完后须同步返回符合要求的 JSON 字符串。如果开发者返回给百度收银台的字符不是合法 JSON 或者解析出来的 errno 不为 0 ,会再次重发。
开发者通知参数合法性验证
当百度收银台通过调用接口同步退款信息给给开发者时,开发者获得这些数据后,必须进行如下处理:
验证签名
首先必需验证签名,然后验证是否是百度收银台发来的通知,请参见签名与验签。
业务数据处理注意事项
开发者需要验证该通知数据中的 orderId 是否为开发者系统中记录的百度订单号,若未发现该订单,则表明本次通知是异常通知,务必忽略。在上述验证通过后开发者请处理退款成功消息,将处理结果返回。如果开发者未正确处理业务通知,存在潜在的风险,开发者自行承担因此而产生的所有损失。
DEMO
- 入参(REQUEST) DEMO:
https:://xxx.tpbusiness.xxx/notifyRefundRes?orderId=800020199&refundBatchId=100058888&refundStatus=1&rsaSign=Gzu1RT2toJSDthcLPG1ZWROI3jzvxFtO7yCPUqMT3L7cmnARncm5IIIQ6x+7S/02zWxr5FC9945WFSurO9kepVbU7YS6Lh9SEVQhvTO0YKG7TlLFTpH3Ik7JeHQalAKXYe/jNREDpHmTF9Jrq/wABeZGYXJn1M75A37h9zUt+kw=
- 返回(RESPONSE) DEMO:
{
"errno": 0,
"msg": "success",
"data": {}
}