需要注意以下重要规则:
◆ 请求参数参数名ASCII码从小到大排序,签名内容需要UTF-8编码;
◆ 请求Body参数为空时传{},并且data使用{}参与签名;
◆ 请求参数和签名内容需要UTF-8编码;
◆ 回调地址请原样进行签名;
◆ 参数名区分大小写;
签名计算方式:
sign生成规则: sha1(time+data+apikey)为了防止请求被伪造、篡改,每一次接口请求都需传入根据本次请求的13位时间戳(毫秒)+body参数(json格式)+apikey(密钥)计算获得的sign(签名)
签名示例(php):
public function sign($post = [], $key ='',$userid = ''){if ($post) {ksort($post); //排序post参数$post = json_encode($post , JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);} else {$post = "{}";}$time = time() . rand(100, 999);$header[] = "Content-Type: application/json; charset=utf-8";//用户密钥$header[] = "Sign: " . sha1($time . $post . $key);$header[] = "Timestamp: " . $time;//用户ID$header[] = "UserId: " . $userid;return [$post, $header];}
接口约定(每次请求需传入以下Header参数:):
| Header 参数 | 类型 | 是否必填 | 描述 | 示例值 |
|---|---|---|---|---|
| Sign | string | 是 | 签名 | 20d6ed7224f6ecedda74548aff9cb1a54e5c0033 |
| Timestamp | string | 是 | 13位时间戳(毫秒) | 1696645385740 |
| UserId | string | 是 | 您的用户接口appid(后台接口为管理员登录账号) | 2uIkTrXNdAFc7OKhbRenzjDtgPoZ6s5C |
接口示例:
以订单查询接口为例,开发者的UserId是2uIkTrXNdAFc7OKhbRenzjDtgPoZ6s5C,apikey是 H0YnuPpcVtx7rQdMTbjN6932s5oDOqFa,请求的参数如下:
Header参数
Sign: 待下方计算Timestamp: 1696645385740UserId: 2uIkTrXNdAFc7OKhbRenzjDtgPoZ6s5C
Body参数
{"day": 10,"external_orderno": "","ordersn": "D100759082558859640832"}
第一步:将请求Body参数中多个键值对,参数按照参数名的字典升序排列(a-z)。
{"day":10,"external_orderno":"","ordersn":"D100759082558859640832"}
第二步:将 13位时间戳+第一步中排序后的字符串+apikey 拼接得到待签名字符串
1696645385740{"day":10,"external_orderno":"","ordersn":"D100759082558859640832"}H0YnuPpcVtx7rQdMTbjN6932s5oDOqFa
第三步:使用sha1算法加密待加密字符串即为sign
15b8f541eb10e3fbb33efd92c8d52d50ddca0784
第四步:将sign添加到Header参数中
Sign: 15b8f541eb10e3fbb33efd92c8d52d50ddca0784Timestamp: 1696645385740UserId: 2uIkTrXNdAFc7OKhbRenzjDtgPoZ6s5C
全局状态码
| 状态码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 失败(msg返回错误信息) |
| 500 | 未知错误 |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






暂无评论内容