接口回调
介绍 卡游售卖机开放平台 接口回调的使用方法。
本章节介绍 卡游售卖机开放平台 接口回调的使用方法。
1.接口概述
卡游售卖机开放平台 开放了消息发送接口,对接的第三方业务系统可以使用这些接口进行双向通信。
2. 消息的类型
卡游售卖机开放平台 的消息可以分为以下几个类型:
- 主数据消息
- 业务消息
- 运营平台事件消息
3. 消息格式定义
3.1 消息URL的通用参数
所有的消息回调时,URL上附以下两个通用QUERY参数,接收方可以用来进行数据的校验,以判断此消息数据是否可以信任。
参数名称 | 类型 | 描述 |
---|---|---|
nonce | 字符 | 随机字符串,16位 |
signature | 字符 | 通过特定算法生成的signature,具体算法见签名算法 |
3.2 消息的调用方式
所有的消息调用,默认采用POST方式进行调用。
除非特殊接口或特定协议(如OAUTH重定向等)会在具体消息的消息中备注单独指明。
3.3 消息的BODY参数
所有对外的消息接口,所推送的消息格式统一如下所示
参数 | 类型 | 说明 |
---|---|---|
eventType | string | 事件类型, 表示各消息的类型 |
tenId | integer | 租户ID (如果是运营平台类型回调事件则不包含tenId) |
tenCode | string | 租户CODE, 相当于集团CODE(如果是运营平台类型回调事件则不包含tenCode) |
timestamp | integer | 时间戳,精确到秒 |
msgId | string | 消息ID, 各消息唯一,客户端可根据此ID去重 |
content | object | Data 消息内容,各消息的内容具体见各消息说明 |
示例参考:
{
"eventType": "emp_create",
"tenId": 1001,
"tenCode":"nike",
"timestamp":1585714350,
"msgId": "53102fb9bf1044ed8b0ba36d",
"content": {
// 具体的业务数据
}
}
3.4 接收方处理消息后的返回
凡接收方接收请求后返回的HttpStatus=200,即代表成功;非200或10秒超时代表异常。
作为接收方应答的消息BODY,统一返回"success"字符串。
备注:现消息回调未提供失败重试机制,在后期迭代过程中会实现可配置的失败重试机制。
4. 数据的验签
4.1 验签的步骤分成以下几步:
- 获取API-CB-SECRET
- API-CB-SECRET的获取方式: apiCbSecret统一由 卡游售卖机开放平台 颁发,注意,此apiCbSecret与APIID接口调用的secret是不一致的。
- 通过SECRET校验SIGNATURE
- Signature生成规则:
- 将消息的BODY转成JSON字符串
- 从请求URL的QueryString中获取nonce字符串
- 生成加密前字符串:请求体JSON字符串 + API-CB-SECRET + NONCE字符串
- 将以上生成的字符串进行MD5哈希, 与URL的QueryString中的signature进行比较,如果一致,则签名正确。
4.2 示例
回调时消息URL
https://www.runsasoft.com?nonce=NDJK80QfPfBm21sJ&signature=17c48266bef1c0676944d8b10702c080
回调时消息BODY:
{"eventType":"comp_create","tenId":1001,"tenCode":"dev","timestamp":1585714350,"msgId":"53102fb9bf1044ed8b0ba36d","content":{"id":"C0001","name":"青鸽有限公司","info":"青鸽","status":1,"platform":{"id":"S1001","name":"青鸽平台","type":1}}}
获取的API-CB-SECRET:
r4j0b91EZtpffjNs51xTbit@c9&SCFk1Thjtzy5kQNNfj0SAPXESdcnip%N9xizAi4EbTN9MRn0WxEBs1eZRbkf3Y8*s0w#bQ7Kcw1sBEs!FmGYRyAdWy!GAybX7fe2b
签名前生成的字符串为(消息BODY的JSON字符串 + API-CB-SECRET + NONCE):
{"eventType":"comp_create","tenId":1001,"tenCode":"dev","timestamp":1585714350,"msgId":"53102fb9bf1044ed8b0ba36d","content":{"id":"C0001","name":"青鸽有限公司","info":"青鸽","status":1,"platform":{"id":"S1001","name":"青鸽平台","type":1}}}r4j0b91EZtpffjNs51xTbit@c9&SCFk1Thjtzy5kQNNfj0SAPXESdcnip%N9xizAi4EbTN9MRn0WxEBs1eZRbkf3Y8*s0w#bQ7Kcw1sBEs!FmGYRyAdWy!GAybX7fe2bNDJK80QfPfBm21sJ
MD5哈希后字符串为:
17c48266bef1c0676944d8b10702c080
再与URL中signature进行比对,两者一致。