速賣通AE平臺+聚石塔+奇門 完整教程V2
公司是跨境電商,在阿裏馬馬的速賣通平臺上開有店鋪,並且基於速賣通開放平臺,自主研發了ERP系統,居今已有3年多的時間了,一直很穩定。
今年初,速賣通AE開放平臺改版,並入淘寶開放平臺中,我們的麻煩就開始了。。。從最初始的申請資格開始,一步一步的研究、自測。到最近才小有成就。下面就把一路走來填的坑分享下,希望給新人指點吧
使用速賣通AE新版開放平臺,我們先看看需要哪些條件
1,要有一個企業級別的支付寶帳號,註:必須是企業級別。
2,要有軟著,就是軟件著作權證書
這2個都有了,才能去申請。
申請類型有2種
1,商用授權,適合專門的軟件公司
2,自研授權,適合電商公司有獨立研發團隊
我們公司申請的是自研類型
1,創建應用
這個環節用於獲取AppKey和Secret,後面獲取令牌用的。這裏要說下和老版的區別
1、新版本沒有Refresh和Access令牌的區別,只有Access令牌。正式發布後,這個令牌的期限是一年(相比老版本24小時的時限,時間延長了好久,給個贊)
2、我們使用SDK的時候,有的方法中,參數名稱是SessionKey,其實就是這個令牌(官方文檔從來不說,就是不告訴你)
2,授權報備
這裏是要綁定一個速賣通的店鋪,你會得到一個cn前綴的字符串,記住這個字符串,後面會很有用
3,下載SDK。這是淘寶官方提供的,各版本都有。我們使用的是Net版本。
註:這裏最後下載源碼加載至項目中,方便調試。因為後面有個坑,你不進入源碼調試,到死都不知道怎麽回事?!(官方就是不說)
註1:SDK我們是可以隨時編譯下載的
註2:如果我們使用自定義場景,創建成功若幹API的話,重新編譯下載SDK,會發現輸入輸出參數,已經幫我們定義好類了。我們還是像官方場景那樣,直接使用即可
註:這裏最後下載源碼加載至項目中,方便調試。因為後面有個坑,你不進入源碼調試,到死都不知道怎麽回事?!(官方就是不說)
4,托管服務器
這裏可能也不需要,我是直接托管的
5,設置白名單
一般設置3個IP地址就可以了
106.11.,沒錯,就是*.*,這個IP是奇門要求的
106.14.,這個是聚石塔裏的
註:聚石塔裏的數據,輸入輸出都要經過奇門,所有只要你想用AE平臺,先申請聚石塔吧
115.233,這個是我們自己的服務器IP。如果你還沒有買聚石塔的服務器,平臺可以給你3天的塔外測試。就是這個IP地址
6,綁定測試帳號
這個帳號就是之前申請的速賣通店鋪帳號,直接用這個帳號測試就可以。只有3天時間,但過期了可以延長的
7,設置回調地址
必須要設置的環節。用於獲取AccessToken令牌
好了,通過上面的幾步,準備工作算是完成了。下面,我們正式寫代碼,還是一步一步來
註:以aliexpress.logistics.listlogisticsservice,獲取物流服務列表的API為例
1,調用AE平臺的API。這是我們的關鍵業務,建議直接使用官方提供的SDK即可,簡單方便。
其中
AliApiUrlPrefix是AE開放平臺的調用地址:http://gw.api.taobao.com/router/rest。
AppKey和AppSecret是之前申請應用時得到的
這步一般是都可以調通的。註:此時還沒有塔和奇門
2,下面就開始搭塔了,就是聚石塔。
聚石塔可以理解為阿裏雲,即一個獨立的操作系統,你上面寫好的程序要部署的吧,你必須要部署在聚石塔裏才可以(別問我為什麽,官方說的)
2.1,部署好以後,直接調用塔裏的程序,還是通的。有人會問,即然通了,還要奇門幹啥
現在通了,是我們申請的塔外測試的原因。正式發布的程序,還是要通過奇門才能調用塔裏的數據
2.2,塔裏部署成功後,達到能訪問返回正確數據即可
3,下面就要講重頭戲了:奇門
什麽是奇門?奇門就是外部程序和聚石塔必須要經過的一道橋梁。沒有奇門,你就沒門進去,根本訪問不了聚石塔裏的應用
3.1,奇門的位置
雲工作臺->業務系統構建&集成
3.2,場景選擇
場景包含2種:自定義場景和官方場景。個人建議先選擇官方場景,因為它內置了傳入和傳出的參數格式。
我們肯定會自定義場景(因為官方場景只提供的30%的API)
3.3,官方場景API列表
場景由API組成,每個方法都需要配置和發布(發布前要自測通過+驗簽)
3.4,官方場景API配置(劃重點了,這裏有個大坑)
3.4.1,配置請求映射
這個坑,研究了2小時,得出結論
這個地址是聚石塔裏,你程序的部署地址
註1:是到方法名稱級別
註2:Net版本,可以部署成WebAPI程序(推理得出:WebService也可以,Handler也可以)
3.4.2,請求參數
記住這個格式,後面肯定會用到
3.4.3,請求Demo
這是標準的參數格式,含輸入和輸出。也要記住,後面會用到
3.4.4,響應參數(即輸出參數)
記住+1
3.4.5,請求和響應demo
這個最開始沒有註意,導致後面開發耽誤了時間。劃重點了
註意驗簽Demo的返回格式
3.4.6,自測API
到這個環節,就可以開始測試了。
註1:返回格式有2種:XML和Json。一般選擇Json
註2:Query id,這個參數是cn的那個字符串,但在這裏沒有影響,傳啥都可以
註2.1:這個參數我認為在發布後相當有關系。一個AppKey可能同時關聯多個店鋪,這是用來區分店鋪信息的。知道是哪個店鋪,才能獲取對應店鋪的令牌(令牌就是AccessToken,就是SDK中的SessionKey)
註3:有的API方法,參數有個param1的參數。這個怎麽理解呢?這個可以理解成方法需要的其他參數內容,都放到這裏,Json格式傳入。特別說明:它是有格式要求的,就是前面的輸入參數格式
到這時,你會發現各種調試失敗。。。但官方給出的錯誤碼並沒有什麽卵用。下面重新講一遍正確的姿勢,小板凳搬好
3.5,正確做法
3.5.1,先定義返回Model基類,按照3.4.4,響應參數定義即可(還有驗簽的格式)。相當於每個方法都會返回這些屬性值
這個類,同時還參照了奇門的輸出參數定
3.5.2,修改Service層的方法。
主要修改輸出參數,改成什麽格式呢?就是我之前提到的,驗簽Demo的那個格式。相當於方法必須返回驗簽Demo格式才行。否則,打死都通不過
看到木有?無論能否返回正確的數據,它要的驗簽格式。你必須返回。
而且你發現木有,驗簽的格式不光屬性,屬性值也要求完全一致。
3.5.3,Controller層方法(繼續劃重點,又一個大坑)
註1:這裏先解釋下什麽是驗簽,作者之前也理解錯誤,現在更正下:驗簽就是平臺給塔裏程序發個錯誤的請求,平臺要接收到它認為正確的數據,驗簽就通過了,其實就是這麽簡單)正確的數據就是上圖的數據,即是驗簽Demo的格式(屬性值也相同)
註2:再看看Net版本的驗簽,你會發現它的一個參數是System.Web.HttpRequest。我找了好久也沒找到在哪裏傳進去,百思不得其解。後來才發現它不是在Service層的,是在WebAPI的Controller層
看,這就是驗簽。是不是有種恍然大悟的感覺。而且這是Controller層完整的方法。包括驗簽+調用Service層+返回格式
3.5.4,外部程序調用?
驗簽通過以後,就可以發布了。發布成功,意味著外部程序可以直接使用了。註意:不是直接調用塔裏的程序,塔的所有數據,都要通過奇門
這裏根據奇門SDK寫的方法,外部程序最後調用的是這個方法。不是前面我們寫的那些
3.6,自定義場景
昨天也把自定義場景調試通過了。它和官方場景有什麽區別呢?如下所示
a,方法名稱自行定義
b,輸入參數自行定義
c,輸出參數自行定義
d,驗簽格式不可定義(必須按照官方的格式)
其他的沒有什麽坑,驗簽通過就可以發布(有個審核的操作,基本都通過的)
3.7,安全掃描
整個應用發布前,會有一個安全掃描的過程,官方說是3小時(實際要超出這個時間,都問題不大)
最後總結下
1,官方的文檔要認真看,每句話都有它的含義(為毛他們不明說呢,非要我們自己猜)
2,所有的環節都是互相關聯的,一步配置不對,就都有影響
3,申請令牌的程序是可以部署在塔外的
4,官方場景或自定義場景中,每個方法的驗簽返回格式不是都相同的。要註意,必須和驗簽格式完成相同才可以
5,多店鋪時,關於SessionKey(即AccessToken)如何使用?每個店鋪都有id(就是cn123456)的字符串,這是可以通過參數傳進去的。這樣可以在塔裏部署一個txt文件,定義好id和令牌的關系。這樣就可以根據Id獲取令牌了
附:
作者創建一個QQ群:558905448。用於分享和交流Net開發經驗,歡迎加入.進群請標明:程序員
速賣通AE平臺+聚石塔+奇門 完整教程V2