淘宝API签名异常,如何正确计算SIGN参数?(error code:25 Invalid Signature)


调用淘宝API的签名一直不对有几个原因:

1. 不需要在排好序的参数串后加APP_SECRET
     (注:注意看第二个原因。不加sign_method的情况下,有人说如果没有此参数,尾部不需要加secret,我没有验证。万一你一定要加sign_method,可以试试在尾部加和不加secret有什么区别)

2. API说sign_method是系统参数并且是必须的,事实上,可以不要。默认md5

3. 额外多出来一个partner_id参数,少了就说签名错误。
    partner_id=top-apitools

4. Session不是必须的,API的系统参数说明没有讲清楚,对于有些API,这个参数是必须的。在沙箱环境下,如果你不加Session,他会提示你出错的。


正确的调用方法:
使用沙箱测试,它会给出正确的拼凑URL,你根据它来准备参数,即可正常调用。

以 'taobao.item.get' 接口为例
我们实际需要参数如下:
app_key     你应用的app_key
fields           请求的返回字段(如detail_url,num_iid,title,nick...)
method       接口名:taobao.item.get
num_iid       商品的item id:例如20547892232
partner_id   莫名其妙蹦出来的参数,值为top-apitools
sign             计算出来的签名值。。最坑爹的一个参数
timestamp   签名之前无需encode,允许误差10分钟。
yyyy-mm-dd HH:mm:ss,例如:2008-01-25 20:23:30
v                  version,固定值:2.0

你可能感兴趣的:(第三方开放平台)