手淘JSSDK部分接口調用報告

前言

最近接了個需求,是給公司作個用於手機淘寶的小頁面,用到了手淘的幾個接口。
在閱讀文檔時,發現手淘的JSSDK文檔頗有問題,和實際用起來差別很大,坑的我意識模糊。
就想寫篇小筆記,拋磚引玉一下,給後來者有個小借鑑。vue

手淘JSSDK文檔ios

正文

我是用vue-cli直接搭的項目,基本都是默認選項,部分代碼基於es6語法。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域名下,其實在天貓手機端也是能夠調用的。vue-cli

調用接口

Tida.ready

Tida.ready({
    // interactId:"", // 互動實列ID type string 若無抽獎模塊,此參數無須傳入。給錯誤的實例ID會走錯誤流程
    // module: [] // 應用所須要的模塊。非必選,默認加載全部模塊。支持的模塊見註釋。
    // sellerNick:"" // 商家名稱
    // shopId:123 // 店鋪ID 從url中取 可選
}, function(){
    // TODO
})複製代碼

全部的接口調用前必須首先調用ready方法進行必要的初始化工做。bash

這裏若是你沒用到一些須要受權的接口,所有參數不填也能夠,建議在app.vue裏create鉤子直接調用。app

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('收藏寶貝失敗了哦!')
        }
    }
})複製代碼

商品的收藏回調文檔沒說清楚,這是我借鑑其餘家的寫法修改的。ui

Tida.follow

Tida.follow({
    pubAccountId:'86428989' // 店鋪或達人ID,
    sellerId:'86428989' // 賣家id,
}, function(data){

});複製代碼

這個接口在手淘的ios端老版本會出現沒法調用的狀況,安卓平臺也有問題,總之最好別用。url

Tida.shopFavor

Tida.shopFavor({
    shopId:'107922698' // 賣家店鋪id,
    sellerId:'1917047079' // 賣家id,
}, function(data){
    console.log(data);
});複製代碼

這個接口也有問題,不推薦用。spa

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('收藏失敗')
    }
})複製代碼

這是最穩定的接口了,可是沒直接寫在文檔裏,我是翻別人的代碼抄下來的(滑稽)。
我當時弄出收藏功能後,已是生無可戀了。

這篇小報告只是爲了讓後面的人不要掉進坑裏了,但願你們輕拍,不要打臉。
相關文章
相關標籤/搜索