再试一次 - taobao
type: channel
link: https://www.firetry.com/tag/taobao/
items: 纠结的淘宝api签名

纠结的淘宝api签名
type: item
date: 2012-07-08T15:14:17+00:00
description: 因为网站想添加个功能，就是自动转换淘宝客链接，尝试弄了下淘宝api，签名部分折腾的头疼，一直被淘宝的api测试工具误导，一直被网上乱七八糟的说法误导。做下记录，别忘记了。签名规则是：官方说明：http://open.taobao.com/doc/detail.htm?id=111#s6除了图片和签名，其余提交的所有参数都要md5下。参数要按照升序（a-z)排列。如果参数首字母相同，就按照第二个字母排序。总结下sign = 大写（md5(appsecret+appkey+参数+appsecret)）另外拼装url的时候要注意，参数值都要url编码的。解释的好苍白，还是上代码吧。没有appkey 自己添加，因为是测试代码，比较乱，自己修改$sign = ''; $appsecret = ""; $appkey = ""; $ctime = date("Y-m-d H:i:s"); $timestamp = urlencode($ctime); $parame = array( 'app_key'=>$appkey, 'fields'=>'num_iid,title,nick,pic_url,price', 'format'=>'xml', 'method'=>'taobao.taobaoke.items.convert', 'nick'=>'', 'num_iids'=>'15293327612', 'sign_method'=>'md5', 'timestamp'=>'', 'v'=>'2.0', ); $parame['timestamp']=$ctime; ksort($parame); foreach($parame as $key => $value){ $sign .= $key.$value; } $sign = $appsecret.$sign.$appsecret; //echo $sign; $sign = strtoupper(md5($sign)); $apiurl = "http://gw.api.taobao.com/router/rest?sign=".$sign."&"; foreach($parame as $key => $value){ $apiurl .= $key.'='.urlencode($value).'&'; } echo $apiurl;