亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

淘寶開放平臺開發(fā)文檔 / 平臺技術-SPI服務接入文檔

平臺技術-SPI服務接入文檔

什么是SPI

  • 服務商提供接口(Service Provider Interface)
    • API:平臺提供接口并實現(xiàn),您來調(diào)用
    • SPI:平臺提供標準,您來實現(xiàn),可以有多個實現(xiàn)方

image

SPI入駐流程

image

您需要做的是第三個方塊中的工作。

申請業(yè)務場景

首先,您得有一個擁有“三方應用”標簽的APP。點這里進行申請。

申請成功后,進入這個應用的控制臺,就能看見“API服務提供”菜單

image

注意:在概覽里可以看見當前應用的AppKey和AppSecret。

  • AppKey:有兩個作用.
    • 場景Owner(就是引見您接入SPI的人)將此AppKey與場景綁定后,您就擁有了某場景的開發(fā)權,在此頁面就能看見這個場景。
    • SPI調(diào)用方需要在TargetAppkey填寫這個AppKey,才能調(diào)到您實現(xiàn)的服務;
  • AppSecret:開放平臺(TOP)在調(diào)用您實現(xiàn)的服務時,會對報文進行簽名(詳見簽名相關章節(jié))。簽名時就是使用這個密鑰。您需要使用這個密鑰進行驗簽。

我們拿“氣象”場景舉例。當場景Owner將此場景與您的AppKey綁定以后,在這個頁面就能看見“氣象”場景。

此時的場景狀態(tài)是“開發(fā)中”。除了這個狀態(tài),場景還有“上線運行中”、“升級中”等幾個狀態(tài)。

  • “開發(fā)中”至“上線運行中”:申請發(fā)布審核通過;
  • “上線運行中”至“升級中”:點擊進入升級后,對任何一個API點擊升級版本。點擊“取消升級”或申請發(fā)布并通過審核會重新回到“上線運行中”。

image

進入場景后可見到場景中的所有待實現(xiàn)的API,見下圖。

image

與此同時,場景旁邊是它的當前狀態(tài)。

閱讀文檔

開發(fā)前一定要先仔細閱讀文檔,點擊“開發(fā)文檔”后可見到下圖。

image

請嚴格按照文檔進行開發(fā),具體關注:

  • 請求方法:POST 或 GET;
  • 請求編碼:UTF-8 或 GBK;
  • 公共請求參數(shù)、業(yè)務請求參數(shù)以及響應參數(shù)要與文檔完全一致。返回值可參考返回示例;
  • 異常處理:按照這里的規(guī)范返回指定的字段,開放平臺藉此判斷您的返回是成功或失敗;
  • 請求示例:可使用這里的示例替換上您的參數(shù),測試您實現(xiàn)的服務。注意,這個方法對排查錯誤非常有用。

服務開發(fā)

服務開發(fā)完成是您自主研發(fā)的過程,您只需要嚴格按照文檔中的協(xié)議進行開發(fā)即可。開發(fā)語言、部署環(huán)境都沒有特別的要求。

為了安全,我們強烈建議您的服務要驗證簽名以及驗證請求方的IP。為了方便您的開發(fā),我們有SDK提供給你,SDK下載頁面請看下圖。

image

簽名校驗

必選!驗簽的目的是防止黑客惡意調(diào)用你的服務,確保服務發(fā)起來源是阿里平臺。

目前驗簽方法只提供了JAVA、PHP、.NET三個版本的SDK,其它語言需要自行實現(xiàn)。

簽名方法生成規(guī)則是:

  • 將query參數(shù)、header參數(shù)存入一個map中備用。為了方便說明,這個map取名為params。注意:query中的sign參數(shù)不能放入params;
  • 如果body中的類型是form-data,將body中的所以除文件以外的參數(shù)放入params。因為一些技術原因,通過form-data傳遞的文件不進行簽名;
  • 如果body中的類型是json或xml,暫時將body保存起來后面?zhèn)溆?。為了方便說明 ,這段內(nèi)容取名為body;
  • 將params進行按key的字母先后順序排序,然后遍歷它,按key1+value2+key2+value2……的方式形成一個字符串,為了方便說明,后續(xù)稱之為簽名串。如果value為空,則用””來代替。如果body不為空,則在簽名串最后增加body的所有內(nèi)容;
  • 在簽名串的頭和尾加上secret。這個secret是sp申請應用時獲得的。至此,簽名串生成好了;
  • 對簽名串進行md5以及hex,最后得到sign。總結一下,生成sign的公式是:
    hex(md5(secret+sorted(header_params+url_params+form_params)+body)+secret)
  • 最后,將生成的sign與從query中獲取到的sign進行對比,即可校驗簽名的正確性。

驗簽示例代碼如下:

import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.taobao.api.internal.spi.CheckResult;
import com.taobao.api.internal.spi.SpiUtils;
 
public class TestHttpServlet extends HttpServlet {
 
    private static final long serialVersionUID = -7841738585932624564L;
 
    protected void doPost(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
        CheckResult result = SpiUtils.checkSign(req, "fb821bc8785f2409a942eec601e6071d");
        System.out.println(result.isSuccess());
        System.out.println(result.getRequestBody());
    }
 
}
注:HTTP請求中的URL參數(shù)編碼字符集、字符串轉字節(jié)流進行MD5摘要時的字符集要保持一致,否則會導致含中文參數(shù)的簽名與TOP不一致。

IP來源校驗

必選!防止黑客截取到開放平臺發(fā)起的HTTP請求,拿到別的地方進行重放攻擊。

淘寶開放平臺網(wǎng)關的出口IP段可以通過taobao.top.ipout.get來獲取,不定期更新,需要定時調(diào)用API獲取最新數(shù)據(jù)。

IP來源校驗示例代碼如下:

public class TestHttpServlet extends HttpServlet {
 
    private static final long serialVersionUID = -7841738585932624564L;
 
    protected void doPost(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
        // 最新IP段列表可通過taobao.top.ipout.get獲得
        List<String> ipList = new ArrayList<String>();
        ipList.add("140.205.144.0/24");
        ipList.add("140.205.145.0/24");
        ipList.add("140.205.40.0/24");
        ipList.add("140.205.39.0/24");
        ipList.add("140.205.51.0/24");
        ipList.add("140.205.56.0/24");
        boolean isSuccess = SpiUtils.checkRemoteIp(req, ipList);
        if (!isSuccess) {
            rsp.getWriter().write("access denied");
            rsp.getWriter().flush();
        }
    }
 
}

另外一種做法是在HTTP Server上配置IP訪問規(guī)則,如在Nginx上配置只允許TOP的IP訪問/taobao目錄:

location /taobao {
    allow 140.205.144.0/24;
    allow 140.205.145.0/24;
    allow 140.205.39.0/24;
    allow 140.205.40.0/24;
    allow 140.205.51.0/24;
    allow 140.205.56.0/24;
    deny all;
}

配置服務

點擊“開發(fā)測試”進行下圖的頁面:

image

這里有兩個地址輸入框:

  • 測試環(huán)境地址:此地址僅供測試使用。下一節(jié)詳細討論。
  • 線上環(huán)境地址:當此SPI服務發(fā)布上線后,線上環(huán)境調(diào)用的地址就是此URL。

測試服務

共有兩個地方或以發(fā)起測試,

1) SPI測試工具。點擊本頁面的“進入測試”即可進入此工具。請見下圖:

image

默認情況下,只有一個測試用例:冒煙測試。這個測試僅僅是由SPI測試工具按照協(xié)議拼裝一個HTTP請求發(fā)送給測試環(huán)境地址。

如果希望增加測試用例,請聯(lián)系SPI平臺負責人。

測試結束后,可以在測試詳情中查看這次HTTP請求的所有參數(shù)。您尤其要關注“響應信息”中的內(nèi)容,它可能初步檢查你的服務是否正常。

image

2) API測試工具日常、沙箱環(huán)境:這里的測試是對SPI完整流程進行的測試,是您的服務發(fā)布上線前必不可少的步驟,只有這個步驟通過,才能證明您的服務運行正常。

調(diào)用一個TOP API,TOP把請求路由到您的測試環(huán)境地址,您需要把AppKey告訴API調(diào)用者,后者將在它前面加上“10"填入?yún)?shù)targetAppkey。

您也可以親自客串a(chǎn)pi調(diào)用者,前提條件是場景owner先將此API加入沙箱,然后您申請調(diào)用此api的權限。要注意的是,沙箱測試的targetAppkey也是您的appkey前面加上“10”;還有,簽名密鑰是沙箱密鑰。

API的調(diào)用方法可以去這里看文檔。

申請發(fā)布

測試結束后,點擊“完成測試”回到圖5的場景列表頁。如果您覺得可以將新配置的URL發(fā)布生效,點擊“申請發(fā)布”。如果此場景配置成“需要審核”,則需要SPI平臺負責人審核通過方可發(fā)布生效;否則,可立即生效。

FAQ

  • 關于此文檔暫時還沒有FAQ