当前位置: 文档中心

Sign算法说明    

           

名称类型是否必传描述
sidString卖家账号,由旺店通分配         
keyStringappkey, 在发送的数据中对应 key 字段
appsecretString一个appsecret由两部分构成, 冒号前面的部分是secret, 冒号后面的部分是salt. 例如一个appsecret是testsecret:testsalt, 那么secret为testsecret, salt为testsalt.                    

method                 

String调用的接口名称
vString1.0
timestampint秒级时间戳, 当前时间戳减去 2012-01-01 00:00:00(1325347200), 时间与服务器时间差120s内即合法。                    
bodyString

不包括method, pager的传入参数的json格式, 保持传参时候的顺序. 传入时需要压缩处理, 不可包含换行等字符

page_sizeint分页大小                    
page_noint分页编号                    
calc_totalint是否计算查询结果的总条数, 需要计算则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请求示例传入,避免传入调用报错。)        

// 拼接结果        

693f9fed686bfe13441385da98b436b6body["xc109393939393939","",1.2,0,false]keyczhcmethodwms.stockout.Sales.weighingExtsaltdd488d0802b1e431e4c72cd355847853sidwdterp30timestamp232623153v1.0693f9fed686bfe13441385da98b436b6        

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=czhc&method=wms.stockout.Sales.weighingExt&salt=dd488d0802b1e431e4c72cd355847853&sid=wdterp30&sign=20f557aaf9190797c581bbceeb6d5a5c&timestamp=232623153&v=1.0        

      

php调用样例:        

$client->call("wms.stockout.Sales.weighingExt", "xc109393939393939", "", 1.2, 0, false);        

     

http报文参数:        

    method: POST        

    header: Content-Type: application/json        

    content: 传入的body        

       

signString:  693f9fed686bfe13441385da98b436b6body["xc109393939393939","",1.2,0,false]keyczhcmethodwms.stockout.Sales.weighingExtsaltdd488d0802b1e431e4c72cd355847853sidwdterp30timestamp232623153v1.0693f9fed686bfe13441385da98b436b6        

         

requestUrl:  http://47.92.239.46/openapi?key=czhc&method=wms.stockout.Sales.weighingExt&salt=dd488d0802b1e431e4c72cd355847853&sid=wdterp30&sign=20f557aaf9190797c581bbceeb6d5a5c&timestamp=232623153&v=1.0        

         

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                        

检查是否设置了接口的白名单或者系统登陆白名单