回调规则

在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以开放平台建议开放者提供的回调URL采用HTTPS协议。

开发者在收到开放平台的回调应答后,对数据进行验证。以 "创建接车单回调" 为例,将应答中的数据串接并在最后加上appSecret值,用sha1算法进行加密。 示范代码请参考 "加密代码DEMO"

下面举例说明回调加密:

{
  "content": {}, //此处省略内容
  "createTime": 1616502610117,                        // 推送时间戳 
  "msgType": "event.autox3.order.detection.finish",   // 推送消息类型
  "msgSignature": "0354980F3F1162CFD25C4BD3DE69E6D686D60722", //Sha1签名值                     // 推送消息签名
  "msgId": "e6ddea1d-0b8b-24e7-cb26-91c3aa0969db",    // 推送消息id
  "staffInfo": {}                       // 员工信息,此处省略内容
}  

上面例子中的msgSignature就是最后的签名值,供校对用。

需要说明的是,开放平台在每次回调中都会带上msgId参数,方便开发者在接收到回调时进行去重处理。开放平台在收到正确应答之前,会重复回调六次,这六次的msgId是一样的。

开发者收到开放平台的回调并验证通过后,需返回处理成功的应答,其数据格式为:

{
	"data":"",
	"errorInfo":"",    // 错误信息
	"status":0		     // 0表示正常接收
}

在上面的json应答中,如果status为0,则说明开发者已经收到了应答,开放平台将会停止回调。反之,如果开放平台服务器未收到正常响应,会发起重试。

开放平台按周期衰减规律,总共重试六次,间隔时间为2s、4s、8s、16s、32s、64s。六次重试结束后,如果仍然没有收到正确应答,则停止重复,并在开放平台内部保留回调告警数据。

最后更新于

这有帮助吗?