你必须在你的业务服务端部署 HTTP(s) 服务以接收回调。IM 服务端发起回调时,会使用你设置的回调密钥对回调签名,供业务服务端进行签名认证。
你可以参考以下签名算法进行验签:
1、创建参数字符数组
将用户回调密钥SecretKey和接收到回调字段值:EventType、EventData、EventTime、EventID、Version、AppID、Nonce、SecretKey 组成数组:
当前
Version
为固定值:2020-12-01
。
type Event struct { EventType string `json:"EventType"` EventData string `json:"EventData"` EventTime string `json:"EventTime"` EventID string `json:"EventId"` AppID string `json:"AppId"` Version string `json:"Version"` Nonce string `json:"Nonce"` Signature string `json:"Signature"` } var event Event data := []string{ event.EventType, event.EventData, event.EventTime, event.EventID, event.AppID, event.Version, event.Nonce, secretKey, }
示例 : [EventTypeVal EventDataVal EventTimeVal EventIdVal VersionVal AppIDVal NonceVal SecretKeyVal]
2、按字母序排列步骤一字符数组
SortedData = Sort(data)
示例 : [AppIDVal EventDataVal EventIdVal EventTimeVal EventTypeVal NonceVal SecretKeyVal VersionVal]
3、将排序后字符数组元素直接拼接成字符串得到 PayloadData:
PayloadData=Join(SortedData)
示例 : [AppIDValEventDataValEventIdValEventTimeValEventTypeValNonceValSecretKeyValVersionVal]
4、对拼接好的字符串进行 SHA256 哈希算法:
HashData=Hash(PayloadData)
示例 : [20 170 104 20 32 203 70 171 95 29 138 214 172 154 178 31 52 30 169 219 249 213 35 112 89 195 196 192 231 49 48 15]
5、进行十六进制编码,得到回调签名
Signature=HexEncode(HashData)
示例 : 14aa681420cb46ab5f1d8ad6ac9ab21f341ea9dbf9d5237059c3c4c0e731300f
备注:
SecretKey
是你在控制台上配置的回调密钥。`