淘宝客网站

使用淘宝客的商品、店铺、活动及订单等信息输出接口和链接转换接口,可以开发出各类面向消费者的应用,为消费者提供导购服务。消费者通过淘宝客网站的导购服务在淘宝或天猫购物后,可以按照卖家设定的佣金比例获得淘宝客佣金收益。

淘宝客网站创建流程

淘宝客网站接入规则

什么是网站验证?

站长必须通过上传一个指定文件至网站空间的方式,来验证填入的网站域名具有维护权限。网站验证是网站接入的第一步。

如何集成JSSDK?

详细文档请查看://open.taobao.com/doc/detail.htm?spm=0.0.0.36.OxNCSo&id=988

为什么需要集成淘宝JSSDK?

目前网站接入申请的准入和网站基本数据密切相关,暂定日UV大于100的网站可以激活提交审核按钮,集成JSSDK是验证网站数据的技术前提。集成JSSDK后,通过网站管理后台(计划中),站长可以直观的查看网站用户的淘宝数据。另外通过集成淘宝JSSDK可以让网站快速集成淘宝组件和更方便的使用TOP API。

JSSDK集成完成后,验证网站数据(激活提交审核按钮)需要多久?

JSSDK验证网站数据有一定的延后性(通常为一天),所以需要ISV等待一天的时间,在集成JSSDK的第二天,如果验证网站数据通过,ISV可以通过点击“审核”按钮,进入网站资料提交页面。

网站接入需要验证网站哪些数据?

目前暂定对网站的日UV进行验证,日UV大于100的网站可以提交网站接入申请。

审核不通过原因

网站名称、域名、favicon、内容等,侵犯阿里集团品牌,违反《淘宝联盟(推广者)合作规范》

网站无ICP备案

网站页面未能打开

网站UV(必须先集成JS SDK)未达到日均100以上

提交审核的网站名称(或logo),与实际的网站名称(或logo)不一致

网站未集成“淘宝账号登录”或“淘宝商品导购”中的一项服务,否则将无法接入淘宝开放平台

“使用淘宝帐号登录”不符合规范,需改用淘宝帐号登录组件

淘宝客API使用场景介绍

通过API快速的搭建一个自己的淘客网站,归根结底是一种导购类的网站,但是这些网站融入了一些其他的内容,就形成了返利类网站,社区类网站,搜索类购物应用。当然,还有更多丰富的内容可以融入其中,创造更多的玩法。

搭建一个淘客网站,涉及到的相关API:

API名称 描述
taobao.taobaoke.items.get 淘宝客商品搜索查询接口
taobao.taobaoke.shops.get 淘宝客店铺搜索查询接口
taobao.taobaoke.items.detail.get 淘宝客商品详情查询接口
taobao.taobaoke.items.relate.get 淘宝客商品关联推荐接口
taobao.taobaoke.shops.relate.get 淘宝客店铺关联推荐接口
taobao.taobaoke.items.coupon.get 淘宝客折扣商品查询接口
taobao.taobaoke.report.get 淘宝客订单查询接口
taobao.taobaoke.widget.items.convert 淘宝客商品链接转换客户端接口
taobao.taobaoke.widget.shops.convert 淘宝客店铺链接转换客户端接口
taobao.taobaoke.widget.url.convert 淘宝客活动链接转换客户端接口
taobao.taobaoke.items.convert 淘宝客商品链接转换服务端接口
taobao.taobaoke.shops.convert 淘宝客店铺链接转换服务端接口
taobao.taobaoke.url.convert 淘宝客活动链接转换服务端接口

API涉及到的业务场景详细介绍

首先,对于淘客API中的入参nick与pid介绍:nick一般建议使用淘宝账号,并且是推广者的淘宝账号,而非卖家的淘宝账号,如果在没有输入nick的情况下,pid也建议输入淘宝账号对应的pid,详细格式见API文档。因为如果是阿里妈妈账号对应的pid,那么报表无法通过接口获取。

taobao.taobaoke.items.get接口,几个比较常用的入参是cid,keyword,outer_code。这个接口一般是用于服务器采集商品数据用以分析,并展示在网站页面上。接口可以这么用:

用法一:使用类目ID(cid)采集数据,当你进入别人的网站一看,会发现有一个类目,这种类目查询的方式一般都是基于该接口进行查询的。比如先可以通过taobao.itemcats.get获取类目id(cid)、类目名称(name),类目名称(name)可以用于展示,实际点击之后的数据可以通过taobao.taobaoke.items.get设置cid获取到。

用法二:使用关键字keyword采集数据,当然展示的类目也可以只是一个关键字,点击之后的数据可以通过taobao.taobaoke.items.get设置keyword获取到。也可以通过设置keyword='商品标题'来实现商品标题的关联搜索。

如果是用户在搜索框中输入关键字来实现搜索(针对商品搜索、店铺搜索),搜索结果页面必须走S8页面,可以参考备注中的第四条。搜索结果页,可以是自己网站的页面,但是不允许出现让用户勾选'查询条件'该功能,比如:点击'价格排序'勾选框,'7天包退'勾选框,'价格区间'输入框等来实现筛选的功能,均不允许出现在搜素结果页。这个接口可以通过设置outer_code来标记渠道推广。其中很有名的一种就是返利模式:当网站的会员A(假设会员id为0x123)进入到这个搜索结果页,如果他完成了购买,网站想与他一起分享佣金,怎么办呢?在调用taobao.taobaoke.items.get接口的同时设置outer_code=0x123,那么在该会员完成交易后,通过taobao.taobaoke.report.get可以查询到这个字段,然后给该会员打钱。这个就是返利模式了。支持outer_code入参的淘客API都可以这么玩。注:这里的打钱不是真的打钱,而是在该会员id对应的表中记录可以提现的金额,至于真的要提现,得需要该会员自己使用支付宝去完成。

taobao.taobaoke.widget.items.convert接口,几个比较常用的入参是num_iids,outer_code。网站可以输入单个商品链接来做搜索条件,搜索结果跳转到自身网站的详情页面(前提是会使用正则表达式从商品链接中解析出num_iid)。一些做了缓存、做了永久存储的isv会想,推广链接过期了、商品下架了怎么办?其实推广链接会一直有效,直到该商品被下架、被删除。所以不需要为了验证商品推广链接是否过期、商品是否下架而实时的去调用该接口获取数据。由于单个应用的每分钟流量有限,对于网页上的商品,分批次的在不同的时间进行数据更新。对于数据实时性要求更高的社区类网站,可以申请加入xTao,使用xTao特有的商品变更通知。这个接口支持标记渠道推广吗?可以,详细用法同上。没加入淘客推广的商品,是获取不到任何数据的。

taobao.taobaoke.items.detail.get,接口,这个接口可以批量获取到商品的详细数据,比如一个商品的多张图片(item_imgs),SKU属性(skus)等。网站可以输入单个商品链接来做搜索条件,搜索结果跳转到自身网站的详情页面(前提是会使用正则表达式从商品链接中解析出num_iid)。获取商品详情的同时,可以获取is_virtual字段,并在自己的网页上做好提醒:虚拟商品不能获取佣金(淘宝联盟的规则是:虚拟商品必须得通过联盟的组件进行推广,才能获取佣金)。没加入淘客推广的商品,是获取不到任何数据的。

taobao.taobaoke.widget.shops.convert接口。这个接口可以实现店铺推广,怎么实现呢?在知晓卖家昵称的情况下,可以先通过taobao.taobaoke.shops.get批量获取卖家昵称,再通过taobao.taobaoke.widget.shops.convert这个接口进行转化获取店铺推广链接,那么通过该推广链接进入该店铺,都可以获取到佣金了。当然了,如果需要单个店铺中更详细的信息,也可以通过taobao.shop.get接口去获取。

taobao.taobaoke.items.coupon.get接口。这个接口可以查询到带有折扣比例(coupon_rate),折扣价格(coupon_price),折扣起始时间(coupon_start_time跟coupon_end_time)。由于这个接口中获取到的商品都是带有折扣的,所以成交转化率相对较高,非常适合搭建一个折扣频道。

taobao.taobaoke.items.relate.gettaobao.taobaoke.shops.relate.get接口。针对淘宝客开放的这两个关联推荐接口,可以帮助网站实现一些比较实用的功能,比如:猜你喜欢等应用。来提高网站的收益。详细的参数请看文档,这里需要提的一点是,入参cid为叶子类目ID,即通过taobao.itemcats.get接口获取到is_parent=false的cid,输入父类目ID将无法获取到数据。

taobao.taobaoke.widget.url.convert接口。这个接口可以转换天猫网、淘宝旅行、淘宝游戏、聚划算等平台的活动URL转换为淘宝客推广链接。 特别注意:天猫店铺和天猫商品页面不能使用此API转换,可能造成无法跟踪到订单。该API必须通过组件方式去调用,详细参考下//open.taobao.com/doc/detail.htm?id=1004

备注:推广链接会一直有效,直到商品下架或者被删除,所以不需要频繁的调用接口去获取最新的推广链接。

1.对于数据实时性要求更高的社区类网站,可以申请商品变更通知接口。

2.对于返利类网站,也可以保存推广链接,需要使用的时候直接在推广链接后面直接加上&unid=xxx,就可以代表outer_code参数了。例如:获取到的推广链接为//s.click.taobao.com/t?e=xxxxx。会员A(假设会员id为0x123)想购买这个商品,那么在该会员通过该推广链接访问该商品的时候直接使用//s.click.taobao.com/t?e=xxxxx&unid=0x123这个推广链接,那么该会员完成交易后,可以通过taobao.taobaoke.report.get查询到outer_code=0x123,就可以定位到是哪位会员购买了该商品。由于单个应用的每分钟流量有限,对于网页上展示的商品,分批次的在不同的时间进行数据更新。该方式能最大程度上节省应用本身的流量。

3.使用S8搜索页面,返利模式怎么玩呢?在调用taobao.taobaoke.listurl.get接口的同时,可以设置outer_code参数,来标记渠道来源。例如:会员A(假设会员id为0x123)访问的时候,传入outer_code=0x123,那么完成交易后,可以通过taobao.taobaoke.report.get查询到outer_code=0x123,就可以定位到是哪位会员购买了该商品。

淘宝客网站架构参考

(本方案由开发者roynal提供)

做一个淘宝客网站所需要的API,TOP几乎没有任何权限限制,唯一困扰各位淘客的应该就是流量了。以下详细讲解了四个案例,循序渐进,最终提供一个给各位淘客参考的网站架构,来解决这个流量超限的问题。

本文仅针对淘宝客网站初学者参考,适合对淘宝客网站开发有一定了解的人

案例一:无缓存实时架构

无缓存实时架构

这是一个最简单的模型。用户在访问网站的时候,程序接受用户访问请求后直接通过API获取数据,再显示在网页上。

优点: 数据的实时获取

缺点:

1.网站页面加载的速度慢

2.网站访问量大的时候造成API次数超过限制,导致网站挂掉

3.淘宝API服务器发生故障或维护,导致网站挂掉

案例二: 文件缓存

文件缓存

这个案例中以文件的形式作为缓存,通过API取到数据序列化后并将序列化之后的数据存入文件中,一般以json的方式存储,也有的php程序中采用数组来存储。

优点:淘宝API服务器发生故障或维护时,保证了网站的正常使用

缺点:

1. 页面显示速度慢,主要是在用户访问页面的时候触发API请求的

2. 网站访问量大的时候造成API次数超过限制,导致网站挂掉

案例三:使用memcached 作为缓存

使用memcached 作为缓存

这个方案中加入了缓存判断,程序首先从memcached取缓存中的数据,如果数据失效或者过期的话,即没有命中,那么程序就通过API去请求数据,取到数据后更新缓存,同时返回数据。如果数据存在且在有效期内的话,那么将直接返回缓存中的数据,这比用文件缓存速度快得多。硬盘快不过内存就是这个道理。

优点:页面显示速度快,在API服务器正常的时候还能自动更新缓存数据

缺点:

1. 缓存命中率的提高有难度,有过mm集群开发经验的同学应该感受到了

2. 网站访问量大的时候造成API次数超过限制网站挂掉

3. 服务器重启后缓存数据全部丢失(单机的情况下)

案例四:缓存+持久层结合架构

缓存+持久层结合架构

在案例三的基础上引入一个持久存储层MySQL,这样子可以避免重启,淘宝API服务器异常的情况。

优点:有持久层存储,数据不丢失。 服务器重启,淘宝API服务器维护等各种伤不起都是浮云。

缺点:

1. 用不多久,你会看着数据库中那高达几十GB的表而疯掉

2. 网站访问量大的时候造成API次数超过限制,导致网站挂掉

3. 数据迅速递增,查询相当缓慢

综合上面几个典型的案例,我们不难看出淘宝客网站在架构方面或多或少存在的问题:

1. 数据实时性问题

2. 读取数据的速度问题(网站页面显示速度)

3. 缓存失效问题

4. API次数超过限制问题

在以上4个问题中,尤其以API次数超过限制问题为主,如何解决呢?看下图架构:

API次数超过限制问题

该架构中,引入开源nosql产品 redis。在数据每秒都发生变化的时候,关系性数据库mysql 等扛不住递增的海量新数据,而redis等可以,为什么? Key! 大多的时候我们不用缓存淘宝的所有数据,一个好的key设计比什么都强。

在大多数应用中可以使用提交的参数md5的值为key。

获取key的方法详解:

如调用taobao.user.get接口,

所有入参有method=taobao.user.get,session=xxx,

timestamp=xxxx,format=json,app_key=123456,v=2.0,sign=ERJLJGDSFSDFSD,sign_method=md5,fields=nick,sex,nick=淘宝帐号。

由于timestamp,sign这两个参数几乎每时每刻都在变化,而session每次授权都在变化,所以先排除session,timestamp,sign这三个参数。再按照首字母升级排列:

app_key=12345

fields=nick,sex

format=json

method=taobao.user.get

nick=淘宝账号

sign_method=md5

v=2.0

拼接字符串为:app_key12345fieldsnick,sexformatjsonmethodtaobao.user.getnick淘宝账号sign_methodmd5v2.0

key=md5(app_key12345fieldsnick,sexformatjsonmethodtaobao.user.getnick淘宝账号sign_methodmd5v2.0)

可以使用这样的key为32位。新的数据只能刷新缓存值,增加的缓存能有多少。

taobao.taobaoke.items.get你能取多少页?按照不同的排序有多少?

具体的实现思路见上面流程图。其中网关实际上就是自己搭建一个读数据的接口,所有数据都从这里单点读取,由它来分发。网关的数据来源有:memcached缓存, Redis数据库。

在memcached缓存数据失效或者没有命中的时候通过API 取数据,这里的API 不是直接去淘宝取数据,引入了自己设定的每分钟频率,比如100次/分钟,超过的时候直接去redis 取数据返回,当然这里的redis最好不要设置比较长的refresh time,一般5~10分钟就可以。

淘宝客网站的架构中缓存是非常重要的一个环节,控制不好就会带来各种困扰。关键点是在部署缓存和缓存key的设计上。

优点: 自己搭建数据来源网关, 内存缓存与永久存储层的合理搭配。

需要了解的知识:

1. Memcache合理部署

2. redis 的基本功能及安装、维护。

建议:这里的memcached 部署一个缓存集群,在单点失效的情况下,数据不丢失,新机器恢复的时候自动从backup机器里恢复缓存。 Redis部署两台,一主一从。