前言
最近接了个需求,是给公司做个用于手机淘宝的小页面,用到了手淘的几个接口。
在阅读文档时,发现手淘的JSSDK文档很有问题,和实际用起来差异很大,坑的我意识模糊。
就想写篇小笔记,抛砖引玉一下,给后来者有个小借鉴。
正文
我是用vue-cli直接搭的项目,基本都是默认选项,部分代码基于es6语法。
接入流程
<script src="//g.alicdn.com/tmapp/tida2/2.2.16/tida.js?appkey=应用的前台appkey"></script>
注:EWS环境必须手动引用Tida!同时每个页面上的head里面加入 <meta name="spm-id" content="a1z51.互动应用前台appkey"/>开启数据统计功能复制代码
官方文档说得很清楚,调用JSSDK是要有前提的,必须是在手淘或者猫客App和*.ews.m.jaeapp.com域名下,其实在天猫手机端也是可以调用的。
调用接口
Tida.ready
Tida.ready({
// interactId:"", // 互动实列ID type string 若无抽奖模块,此参数无须传入。给错误的实例ID会走错误流程
// module: [] // 应用所需要的模块。非必选,默认加载所有模块。支持的模块见注释。
// sellerNick:"" // 商家名称
// shopId:123 // 店铺ID 从url中取 可选
}, function(){
// TODO
})复制代码
所有的接口调用前必须首先调用ready方法进行必要的初始化工作。
这里如果你没用到一些需要授权的接口,全部参数不填也可以,建议在app.vue里create钩子直接调用。
Tida.mixNick
/**
* 混淆nick
*
* @memberOf Tida
* @name mixNick
* @function
*
* @param {object} options 入参
* @param {number} options.sellerNick 卖家昵称,微淘应用必填,互动应用选填
* @param {function} callback 回调函数
*
*/
var options = {
sellerNick: "茵曼旗舰店"
};
Tida.mixNick(options, function (data) {
alert(JSON.stringify(data))
});复制代码
获取混淆nick就不用多说了,后台很多操作都需要这个nick。
额外提示一句,引入tida.js的时候如果Appkey填错,nick是无法获取的,这个接口是需要权限的,我当时调用一直失败,回调的报错也看不懂,后来换了Appkey才能调通。
Tida.itemFavor
Tida.itemFavor({
itemId, // 商品ID 注意这里只能用string
action: 'add'
}, data => {
if (data) {
if (data.errorCode === 0 || data.errorCode === '0') {
Tida.toast('收藏成功!')
} else if (data.errorCode === 3002 || data.errorCode === '3002' || data.errorCode === 'ALREADY_COLLECTION'){
Tida.toast('您已收藏过此宝贝!')
} else {
Tida.toast('收藏宝贝失败了哦!')
}
}
})复制代码
商品的收藏回调文档没说清楚,这是我借鉴其他家的写法修改的。
Tida.follow
Tida.follow({
pubAccountId:'86428989' // 店铺或达人ID,
sellerId:'86428989' // 卖家id,
}, function(data){
});复制代码
这个接口在手淘的ios端老版本会出现无法调用的情况,安卓平台也有问题,总之最好别用。
Tida.shopFavor
Tida.shopFavor({
shopId:'107922698' // 卖家店铺id,
sellerId:'1917047079' // 卖家id,
}, function(data){
console.log(data);
});复制代码
这个接口也有问题,不推荐用。
Tida.social
Tida.social({
sellerId: Tida.getParam('sellerId')||'2335371108',
action: "follow"
}, function (e) {
alert(JSON.stringify(e));
});复制代码
这个接口是官方例子里的写法,我本来以为是没问题的,没想到........
在部分手淘的ios端调用失败,失败的原因没看出来,感觉和ios版本无关。
Tida.follow2
Tida.follow2({
sellerId
}, data => {
if ((typeof (data.success) === 'undefined' && data.errorCode === 0) || data.success === true || data.success === 'true') {
console.log('执行收藏店铺回调')
} else {
console.log('收藏失败')
}
})复制代码
这是最稳定的接口了,但是没直接写在文档里,我是翻别人的代码抄下来的(滑稽)。
我当时弄出收藏功能后,已经是生无可恋了。