プラットフォーム テクノロジー - SPI サービス アクセス ドキュメント


SPI とは

  • サービス プロバイダー インターフェイス
    • API: プラットフォームはインターフェイスを提供し、それを実装します。これを呼びます
    • SPI:プラットフォームが標準を提供し、ユーザーがそれを実装します。実装方法は複数あります

imageSPI 決済プロセス

##あなたがしなければならないのは、3 番目のボックス内の作業です。 image

アプリケーション ビジネス シナリオ

まず、「サードパーティ アプリケーション」というラベルが付いた APP が必要です。

ここ

をクリックして申請してください。

アプリケーションが成功したら、アプリケーションのコンソールに入ると、「API サービス プロバイダー」メニューが表示されます。

注: 現在のアプリケーションを確認できます。 AppKey と AppSecret の概要を参照してください。 image

AppKey: 2 つの機能があります。

    シーンの所有者 (SPI へのアクセスを紹介した人) がこの AppKey をシーンにバインドすると、特定の機能にアクセスできるようになります。シーン。開発権があるため、このページでこのシーンを見ることができます。
    • SPI 呼び出し元は、実装したサービスに転送するために、TargetAppkey にこの AppKey を入力する必要があります;
    • AppSecret: 実装したサービスを呼び出すときにオープン プラットフォーム (TOP)メッセージは署名されます (詳細については、署名関連の章を参照してください)。このキーは署名時に使用されます。署名の検証にはこのキーを使用する必要があります。
  • 「天気」シーンを例に考えてみましょう。シーン所有者がこのシーンを AppKey にバインドすると、このページに「天気」シーンが表示されます。
現時点でのシーンのステータスは「開発中」です。このステータスに加えて、シーンには「オンラインおよび実行中」や「アップグレード中」などのいくつかのステータスもあります。

「開発中」から「オンラインおよび実行中」: リリースの申請が承認されました;

    「オンラインおよび実行中」から「アップグレード中」: クリックしてアップグレードを開始した後、 API の場合は、クリックしてバージョンをアップグレードします。 「アップグレードをキャンセル」をクリックするか、リリースを申請して審査に合格すると「オンラインで実行中」に戻ります。

#シーンに入ると、次の図に示すように、シーンに実装されるすべての API が表示されます。 image

一方、シーンの隣には現在の状態が表示されます。 image

ドキュメントを読む

開発前に必ずドキュメントをよくお読みください。「ドキュメントの開発」をクリックすると、下の図が表示されます。

ドキュメントに従って厳密に開発してください。次の点に特に注意してください。 image

  • リクエスト メソッド: POST または GET;
  • リクエスト エンコード: UTF-8 または GBK;
  • パブリック リクエスト パラメータ、ビジネス リクエスト パラメータ、およびレスポンス パラメータは、書類。戻り値については、戻り例を参照してください;
  • 例外処理: ここの仕様に従って、指定されたフィールドを返します。オープン プラットフォームはこれを使用して、戻りが成功したか失敗したかを判断します。
  • リクエストの例: ここでパラメータを例に置き換えて、実装したサービスをテストできます。この方法は、エラーのトラブルシューティングに非常に役立つことに注意してください。

サービス開発

サービス開発は、お客様による独自の研究開発のプロセスであり、ドキュメントに記載されたプロトコルに厳密に従って開発するだけで完了します。開発言語や展開環境に特別な要件はありません。

セキュリティのため、サービスで署名を検証し、要求者の IP を検証することを強くお勧めします。開発を容易にするために、SDK を提供しています。SDK のダウンロード ページは、下の図を参照してください。

image

署名の検証

必須!署名検証の目的は、ハッカーが悪意を持ってサービスを呼び出すのを防ぎ、サービスの開始元が Alibaba プラットフォームであることを確認することです。

現在、署名検証方法は JAVA、PHP、.NET の 3 つのバージョンの SDK のみが提供されており、他の言語は自分で実装する必要があります。

署名メソッドの生成ルールは次のとおりです。

  • 後で使用できるように、クエリ パラメーターとヘッダー パラメーターをマップに保存します。説明の便宜上、このマップには params という名前が付けられます。注: クエリの符号パラメータを params に入れることはできません;
  • 本体の型が form-data の場合は、ファイルを除く本体のすべてのパラメータを params に入れます。いくつかの技術的な理由により、フォームデータを介して渡されるファイルは署名されません;
  • 本文のタイプが json または xml の場合は、後で使用できるように本文を一時的に保存します。説明の便宜上、このコンテンツには body; という名前を付けます;
  • 説明の便宜上、パラメータを key のアルファベット順に並べ替えてからそれを走査し、 key1 value2 key2 value2... に従って文字列を形成します。は後で署名文字列と呼ばれます。値が空の場合は、代わりに「」を使用します。本文が空でない場合は、本文のすべての内容を署名文字列の末尾に追加します。
  • 署名文字列の先頭と末尾に Secret を追加します。このシークレットは、SP がアプリケーションを申請するときに取得されます。この時点で、署名文字列が生成されます。
  • 署名文字列に対して md5 と hex を実行し、最後に署名を取得します。要約すると、符号を生成する式は次のとおりです。
    hex(md5(secretsorted(header_params url_params form_params) body) Secret)
  • 最後に、生成された符号をクエリから取得した符号と比較します。署名が確認できます。

署名検証のサンプル コードは次のとおりです。

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.taabao.api.internal.spi.CheckResult;
import com.taabao.api.internal.spi .SpiUtils;

public class TestHttpServlet extends HttpServlet {

private static final long serialVersionUID = -7841738585932624564L;

protected void doPost(HttpServletRequest req, HttpServletResponse rsp) throwサーブレット例外、IO例外{
CheckResult result = SpiUtils.checkSign(req, "fb821bc8785f2409a942eec601e6071d");
System.out.println(result.isSuccess());
System.out.println(result.getRequestBody());
}

}
注: HTTP リクエスト内の URL パラメータのエンコード文字セットと、文字列を MD5 ダイジェストのバイト ストリームに変換するときの文字セットは一致している必要があります。一致していないと、中国語パラメータを含む署名が TOP と一致しなくなります。

IP ソースの検証

必須!ハッカーがオープン プラットフォームによって開始された HTTP リクエストを傍受し、リプレイ攻撃のために他の場所に持ち込むことを防ぎます。

タオバオ オープン プラットフォーム ゲートウェイの出力 IP セグメントは、taabao.top.ipout.get を通じて取得できます。不定期に更新されるため、最新のデータを取得するには API を定期的に呼び出す必要があります。

IP ソース検証のサンプル コードは次のとおりです。

public class TestHttpServlet extends HttpServlet {

private staticfinallongserialVersionUID = -7841738585932624564L ;

protected void doPost(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
// 最新の IP セグメント リストは、taabao.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.0/24") 56.0/24 ");
Boolean Issuccess = Spiutils.Checkremoteip (REQ, iPlist);
if (! Issuccess) {
RSP.getWriter ().Write (" Access Denied ");
RS p.getWriter ().flush();
}
}

}

もう 1 つの方法は、HTTP サーバーで IP アクセス ルールを構成することです。たとえば、TOP IP のみが /taabao ディレクトリにアクセスできるように Nginx を構成します:

#location /taabao {
140.205.144.0/24 を許可;
140.205.145.0/24 を許可;
140.205.39.0/24 を許可;
140.205.40.0/24 を許可;
140.205.51.0 /24 を許可;
140.205.56.0/24 を許可;
すべて拒否;
}

Configuration Service

[開発とテスト]をクリックして、以下に示すページに入ります:

image

ここには 2 つのアドレス入力ボックスがあります:

  • テスト環境アドレス: このアドレスはテスト専用です。これについては、次のセクションで詳しく説明します。
  • オンライン環境アドレス: この SPI サービスがリリースされてオンラインになった場合、オンライン環境によって呼び出されるアドレスはこの URL です。

テスト サービス

テストを開始するには 2 つの場所があります。

1) SPI テスト ツール。このページの「テストに入る」をクリックしてこのツールに入ります。以下の画像を参照してください:

image

#デフォルトでは、テスト ケースは 1 つだけです: スモーク テスト。このテストは、プロトコルに従って SPI テスト ツールによって組み立てられ、テスト環境のアドレスに送信される HTTP リクエストです。

テストケースを追加したい場合は、SPIプラットフォーム担当者までお問い合わせください。

テストが完了すると、テストの詳細でこの HTTP リクエストのすべてのパラメーターを表示できます。特に、最初にサービスが正常かどうかを確認する「応答情報」の内容には注意してください。

image

2) 毎日の API テスト ツール、サンドボックス環境: ここでのテストは、SPI の完全なプロセスをテストすることであり、サービスをオンラインでリリースする前の重要なステップです。このステップに合格した場合にのみ、サービスが正常に実行されていることが証明されます。

TOP API を呼び出します。TOP はリクエストをテスト環境のアドレスにルーティングします。API 呼び出し元に AppKey を伝える必要があります。後者はその前に「10」を追加し、パラメーター targetAppkey を入力します。 。

あなた自身がゲスト API 呼び出し元になることもできます。前提条件として、まずシーン所有者がこの API をサンドボックスに追加し、次にこの API を呼び出す許可を申請する必要があります。サンドボックス テストの targetAppkey も、先頭に「10」を付けた appkey であり、署名キーもサンドボックス キーであることに注意してください。

ここ にアクセスして、API を呼び出す方法に関するドキュメントを読むことができます。

リリース申請

テスト完了後、「テスト完了」をクリックすると図5のシーン一覧ページに戻ります。新しく設定した URL を公開して有効にできると思われる場合は、「公開を申請」をクリックします。このシナリオが「レビューが必要」として構成されている場合、リリースして有効にする前に SPI プラットフォームの担当者によるレビューが必要になりますが、それ以外の場合はすぐに有効になります。

FAQ

    このドキュメントに関する FAQ はありません