阅读 1342

手淘JSSDK部分接口调用报告

前言

最近接了个需求,是给公司做个用于手机淘宝的小页面,用到了手淘的几个接口。
在阅读文档时,发现手淘的JSSDK文档很有问题,和实际用起来差异很大,坑的我意识模糊。
就想写篇小笔记,抛砖引玉一下,给后来者有个小借鉴。

手淘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('收藏失败')
    }
})复制代码

这是最稳定的接口了,但是没直接写在文档里,我是翻别人的代码抄下来的(滑稽)。
我当时弄出收藏功能后,已经是生无可恋了。

这篇小报告只是为了让后面的人不要掉进坑里了,希望大家轻拍,不要打脸。