当前位置: 文档中心
Sign算法说明
名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
sid | String | 是 | 卖家账号,由旺店通分配 |
key | String | 是 | appkey, 在发送的数据中对应 key 字段 |
appsecret | String | 是 | 一个appsecret由两部分构成, 冒号前面的部分是secret, 冒号后面的部分是salt. 例如一个appsecret是testsecret:testsalt, 那么secret为testsecret, salt为testsalt. |
method | String | 是 | 调用的接口名称 |
v | String | 是 | 1.0 |
timestamp | int | 是 | 秒级时间戳, 当前时间戳减去 2012-01-01 00:00:00(1325347200), 时间与服务器时间差120s内即合法。 |
body | String | 是 | 不包括method, pager的传入参数的json格式, 保持传参时候的顺序. 传入时需要压缩处理, 不可包含换行等字符 |
page_size | int | 否 | 分页大小 |
page_no | int | 否 | 分页编号 |
calc_total | int | 否 | 是否计算查询结果的总条数, 需要计算则1, 否则填0 |
page_size, page_no, calc_total 为分页(Pager)初始化时候传入的参数,分页查询时需要使用这些参数,计算签名时也要加上这三个参数;
分页情况需要将参数添加到url后面,body中不需要添加,非分页查询接口不需要传入pager参数;
暂不支持Content-Type: application/x-www-form-urlencoded
本文使用的参数:
appkey:czhc
appsecret: 693f9fed686bfe13441385da98b436b6:dd488d0802b1e431e4c72cd355847853
sid: wdterp30
method: wms.stockout.Sales.weighingExt
url: http://47.92.239.46/openapi
// 请求参数
Array
(
[sid] => wdterp30,
[key] => czhc,
[salt] => dd488d0802b1e431e4c72cd355847853,
[method] => wms.stockout.Sales.weighingExt,
[timestamp] => 232623153,
[v] => 1.0,
[body] => ["xc109393939393939","",1.2,0,false]
)
1.按照键名做正序排序
// 排序之后
Array
(
[body] => ["xc109393939393939","",1.2,0,false],
[key] => czhc,
[method] => wms.stockout.Sales.weighingExt,
[salt] => dd488d0802b1e431e4c72cd355847853,
[sid] => wdterp30,
[timestamp] => 232623153,
[v] => 1.0
)
2.拼接字符串
字符串开始和结束是secret,中间部分是排序之后的键值对的key和value的拼接.(PS:body内业务参数格式,需按照对应接口文档下方的json请求示例传入,避免传入调用报错。)
// 拼接结果
3.对字符串做MD5
MD5值: 20f557aaf9190797c581bbceeb6d5a5c
4.最后把计算好的sign加到参数里面即可
// 计算完sign的参数.
Array
(
[body] => ["xc109393939393939","",1.2,0,false],
[key] => czhc,
[method] => wms.stockout.Sales.weighingExt,
[salt] => dd488d0802b1e431e4c72cd355847853,
[sid] => wdterp30,
[timestamp] => 232623153,
[v] => 1.0,
[sign] => 20f557aaf9190797c581bbceeb6d5a5c
)
5.最后请求的URL
请求URL的拼接方式:
url + "?" + 使用请求数组生成的一个经过URL-encode的请求字符串(php: http_build_query())
http://47.92.239.46/openapi?key
php调用样例:
$client->call("wms.stockout.Sales.weighingExt", "xc109393939393939", "", 1.2, 0, false);
http报文参数:
method: POST
header: Content-Type: application/json
content: 传入的body
request body: ["xc109393939393939","",1.2,0,false]
错误信息 | 解决方法 |
salt incorrect | 检查salt是否正确 |
sign incorrect | 检查计算的sign, 计算sign的参数样例格式是否正确!!!!!!!!! |
timestamp incorrect | 时间戳错误, 时间与服务器时间差120s内计算成功.请检查传入的时间戳是否正确. |
paramter xxx is not indicated | 检查参数 xxx 是否为空 |
app auth fail | 检查appkey,访问的sid/ip 是否设置正确 |
client ip is not in whitelis | 检查是否设置了接口的白名单或者系统登陆白名单 |