开发准备
需要开通淘宝联盟并获得相关的Api接口权限
淘宝联盟开放平台:https://open.alimama.com/
具体的申请步骤自己另外学习和了解,这里主要是讲解如何调用Api接口的,申请的步骤也挺麻烦挺多东西搞的。
申请成功后的样子大概就是这样:
开发文档
我们要熟读开发文档,这是开发流程
https://open.taobao.com/doc.h...
调用步骤
1、拼接请求参数
2、签名
3、拼接请求链接
4、发起请求
调用参数说明
1、请求参数
根据淘宝开放平台的Api文档可知,请求的链接是http://gw.api.taobao.com/router/rest
即所有的参数都POST到这个链接或者使用GET方法进行请求即可。
公共参数:
- method(Api名称)
- app_key(开放平台的Key)
- session(session)
- timestamp (时间戳,2020-09-11 12:00:59)
- format(数据返回格式,json或者xml)
- v(版本号,可传2.0)
- sign_method(签名方法,md5)
淘口令生成Api:taobao.tbk.tpwd.create(淘宝客-公用-淘口令生成)
淘口令请求必传参数:
- text(口令弹窗内容)
- url(口令跳转链接)
按ASCII顺序排序拼接参数名与参数值
app_key12345678fieldsnum_iid,title,nick,price,numformatjsonmethodtaobao.item.seller.getnum_iid11223344sessiontestsign_methodmd5timestamp2016-01-01 12:00:00v2.0
生成签名
假设app的secret为helloworld,则签名结果为:hex(md5(helloworld+按顺序拼接好的参数名与参数值+helloworld)) = “66987CB115214E59E6EC978214934FB8”
构建HTTP请求URL
将所有参数名和参数值采用utf-8进行URL编码(参数顺序可随意,但必须要包括签名参数),然后通过GET或POST(含byte[]类型参数)发起请求。
例如:
http://gw.api.taobao.com/router/rest?method=taobao.item.seller.get&app_key=12345678&session=test×tamp=2016-01-01+12%3A00%3A00&format=json&v=2.0&sign_method=md5&fields=num_iid%2Ctitle%2Cnick%2Cprice%2Cnum&num_iid=11223344&sign=66987CB115214E59E6EC978214934FB8
下面是我的代码
<?php
// 返回json格式
header("Content-type:application/json");
// app_key
$app_key = "填写你的";
// app_secret
$app_secret = "填写你的";
// 对uland.taobao.com链接进行解码
$urlDecode = urlDecode("https://uland.taobao.com/coupon/edetail?e=4bI0NgAcLX8E%2BdAb1JoOOjtaDeTCo3PUqDDkvb3q3IBUm%2Fg8xRLmNgq491a%2BRSPK6by1%2B2z8nqxZytX83D81bq06j9rExVodDfqEFBOhTcwqFY%2FHJzT7l7NbGDWR2SFGkgK4shmq4jnYQoT%2F5J6mnX4Pl%2BZxRCyGmKoWioKw4rz9zkxwTC9%2B9S3%2FM4lAwO%2BXrOugqOzy%2BV3F8WVlIJ68AEy5otPERvyn9J6TdzmyvhpDLsaEUNwvh%2BzlpZNJjeBYonv6QcvcARY%3D&traceId=0b51143615997926947266642e2629&ptl=floorId%3A33513&traffic_flag=lm&scm=20140618.1.01010001.s101c6&spm=a21wq.9116673.discovery.pageNum0_13&union_lens=lensId%3AAPP%401599792686%406374db9b-01b0-4a25-8ee3-578a291a99b7_622814146947%40043KSdARX36Py4uHGGwUBqcR&un=e06ed28165474e368a195baaa22d8f6a&share_crt_v=1&ut_sk=1.utdid_null_1599792694866.TaoPassword-Outside.lianmeng-app&sp_tk=THJ0MmNlQmpTRWI=&cpp=1&shareurl=true&short_name=h.VCXko6T&bxsign=scd1599792716655599149b5cbf77ff9f0fac572a35a695b");
// 对uland.taobao.com链接进行编码
$urlEncode = urlEncode($urlDecode);
// 拼接签名所需的字符串
$signStr = "app_key".$app_key."formatjsonmethodtaobao.tbk.tpwd.createsession6100a066e9c87a1e921e6d476485b4d2176aee87340bf85724156739sign_methodmd5textlikeyuntimestamp2020-09-11 23:59:59url".$urlDecode."v2.0";
// md5签名算法需要前后拼接app_secret
$signText = $app_secret.$signStr.$app_secret;
// 签名,返回的是大写的32位16进制字符串
$sign = strtoupper(MD5($signText));
// 拼接请求链接
$GetUrl = "http://gw.api.taobao.com/router/rest?method=taobao.tbk.tpwd.create&app_key=".$app_key."&session=6100a066e9c87a1e921e6d476485b4d2176aee87340bf85724156739×tamp=2020-09-11+23%3a59%3a59&format=json&v=2.0&sign_method=md5&text=likeyun&url=".$urlEncode."&sign=".$sign;
// 发起Get请求
echo file_get_contents($GetUrl);
?>
请求后返回的数据
注意事项
1、uland.taobao.com原链接一开始是有部分符号已经编码过的,我们要进行解码,获得原始未解码的链接
2、在签名的时候uland.taobao.com链接是使用未编码的链接进行签名
3、HTTP请求的链接是需要进行编码的,我们对已经解码的uland.taobao.com链接进行编码后才能正常发起,否则会报签名错误。
4、时间戳格式不是time()函数的生成的字符串,而是2020-09-11 12:00:59这样的格式,在HTTP请求链接里面也是要对时间戳进行编码。
Author:TANKING
Date:2020-09-11
Web:http://www.likeyun.cn/
WeChat:face6009
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。