签名说明
一般项目都不需要开启这个,默认关闭;非必要不需要对接!!!
一般项目都不需要开启这个,默认关闭;非必要不需要对接!!!
一、需要中台采购端开启签名验证
二、请求签名
1.请求时header 增加参数
App-Nonce-Str 随机字符串 (16位)
App-Timestamp 时间戳
App-Sign 签名
2.query的参数(加上header中的随机字符串以及时间戳)键名称 ASCII 码排序之后 key=value&key=value拼接
例如:App-Nonce-Str=4NHng4SbFsHwZedT&App-Timestamp=1704685697
3.以上的结构拼接上&appKey=appKey&appSecret=appSecret
例如:App-Nonce-Str=4NHng4SbFsHwZedT&App-Timestamp=1704685697&appKey=application6&appSecret=d8e2396f8a78d9069737f16f9e2627da
4.在上一步结果后直接拼接,经过去除空白字符(\s)的HTTP Body原始字符串
例如: App-Nonce-Str=4NHng4SbFsHwZedT&App-Timestamp=1704685697&appKey=application6&appSecret=d8e2396f8a78d9069737f16f9e2627da{“origin_rate”:{“from”:50,“to”:150},“is_display”:1,“page”:1,“pageSize”:20,“message_id”:“WVoxNzA0Njg1Njk3OTU4Ng==”}
5.进行sha1加密,得到16进制字符串
例如: c8d6421f7c312d8192fb1b75d6418038e8a1b1bf
6.对上一步结果进行md5加密,得到16进制字符串
例如 9d6e70967e445daa146a95e4ad98b296
7.将上一步结果转为大写
例如: 9D6E70967E445DAA146A95E4AD98B296
三、响应签名
响应头返回时增加
Response-Timestamp 时间戳
Response-Nonce-Str 随机字符串
Response-Sign 签名
1. Response-Timestamp 时间戳 Response-Nonce-Str 随机字符串 按照ASCII 码排序之后 key=value&key=value拼接
例 Response-Nonce-Str=ZPRVCYQONGUAMLEO&Response-Timestamp=1677048435085&appKey=application6&appSecret=d8e2396f8a78d9069737f16f9e2627da
2. 以上的结构拼接上&appKey=appKey&appSecret=appSecret
例例 Response-Nonce-Str=ZPRVCYQONGUAMLEO&Response-Timestamp=1677048435085&appKey=application6&appSecret=d8e2396f8a78d9069737f16f9e2627da
3.在上一步结果后直接拼接,经过去除空白字符(\s)的返回参数中data的json字符串
例:返回结果为
{ "code": 7, "data": { "code": 0, "messages": [ "SN230110161492C6DD订单已关闭,无法支付!" ], "order_price": null }, "msg": "提交失败,请查看messages"}Response-Nonce-Str=ZPRVCYQONGUAMLEO&Response-Timestamp=1677048435085&appKey=application6&appSecret=d8e2396f8a78d9069737f16f9e2627da{“code”:0,“messages”:[“SN230110161492C6DD订单已关闭,无法支付!”],“order_price”:null}
4.进行sha1加密,得到16进制字符串
5.对上一步结果进行md5加密,得到16进制字符串
6..将上一步结果转为大写
四、消息签名 — 消息签名不拼接key
1.请求时header 增加参数
App-Nonce-Str 随机字符串 (16位)
App-Timestamp 时间戳
App-Sign 签名
2.query的参数(加上header中的随机字符串以及时间戳)键名称 ASCII 码排序之后 key=value&key=value拼接
例如:App-Nonce-Str=5GeS9R3wtrsICv6i&App-Timestamp=1677048434
3.以上的结构拼接上&appSecret=appSecret
例如:App-Nonce-Str=ISWWBVLDRTQVCYHM&App-Timestamp=1677128166524&appSecret=d8e2396f8a78d9069737f16f9e2627da
4.在上一步结果后直接拼接,经过去除空白字符(\s)的HTTP Body原始字符串
例如:App-Nonce-Str=ISWWBVLDRTQVCYHM&App-Timestamp=1677128166524&appSecret=d8e2396f8a78d9069737f16f9e2627da{“message_code”:0,“order_sn”:“SN2302221747E043FA”,“message_type”:“order.update_send”,“member_sign”:“d8e2396f8a78d9069737f16f9e2627da”,“message_id”:“selfb3JkZXJTTjIzMDIyMjE3NDdFMDQzRkFvcmRlci51cGRhdGVfc2VuZDE2NzcxMjgxNjY=”}
5.进行sha1加密,得到16进制字符串
例如:a0eee7f7ae90d024e8038013dc0a1acee9e4ed5b
6.对上一步结果进行md5加密,得到16进制字符串
例如 e58ff9365dea5482d0e11bd15a95d4f7
7.将上一步结果转为大写
例如:E58FF9365DEA5482D0E11BD15A95D4F7