Skip to main content
本ページはモード B およびモード C の連携に適用されます。モード A は API を使用しないため対象外です。

共通インターフェース情報

API レスポンスは、HTTP ステータスコードによってリクエスト処理の成功または失敗を示します。
HTTP 200 は業務上の成功を意味しません。 通信が正常に行われた(リクエストが到達し、受理され、レスポンスが返った)ことだけを示します。実際の業務結果は、さらに次の 2 点で判断してください。
  1. レスポンス本文の code0 のみが受理成功であり、それ以外はエラーコードに従って処理します。
  2. data 内の業務ステータスフィールド(statusfulfillmentStatus など)。
例えば履行が失敗した注文も HTTP 200 かつ code0 で返却され、失敗の内容は fulfillmentStatusPAY_SUCCESS_SUPPLY_FAILED および failureCode / failureReason に現れます。HTTP ステータスコードだけを見ると成功と誤認します。

API メッセージ構造

API リクエストおよびレスポンスメッセージは JSON 形式でフォーマットされ、UTF-8 でエンコードされます。メッセージはヘッダーとボディの 2 つの部分で構成されます。 ディストリビューター(Waffo Point Topup)からサプライヤーへの API リクエスト例:
ここでの X-SIGNATURE は、Waffo Point Topup が自身の秘密鍵でボディメッセージ全体に署名した値です。 サプライヤーの API レスポンス例:
ここでの X-SIGNATURE は、サプライヤーが自身の秘密鍵でボディメッセージ全体に署名した値です。リクエストが失敗した場合、data は空になります。

API セキュリティ

Waffo Point Topup とサプライヤー間のメッセージの非否認性を確保するために、トランザクションの署名と検証を行います。署名アルゴリズムには SHA256WithRSA を使用します。
1

サプライヤーのオンボーディング段階

Waffo とサプライヤーは、まず相互に RSA 公開鍵を交換します。各当事者は自身の RSA 秘密鍵を厳重に保管し、公開鍵のみを相手側と共有します。
2

API リクエスト段階

Waffo は自身の RSA 秘密鍵を使用してメッセージに署名し、サプライヤーに送信します。サプライヤーは Waffo の公開鍵を使用してメッセージを検証します。検証に成功した場合、サプライヤーは Waffo のリクエストを処理します。検証に失敗した場合、サプライヤーは Waffo に対して Invalid Signature(無効な署名)というエラーを返します。
3

API レスポンス段階

サプライヤーは自身の RSA 秘密鍵を使用してレスポンスメッセージに署名し、Waffo に返信します。Waffo はサプライヤーの公開鍵を使用してメッセージを検証します。検証に成功した場合、Waffo はサプライヤーのレスポンスを処理します。検証に失敗した場合、Waffo は調査を行い、サプライヤーに連絡します。その間、問題が解決するまで、Waffo はサプライヤーへの新規トランザクションの送信を停止します。 これは、サプライヤー側でリクエストの処理が完了しているにもかかわらず、署名検証の失敗により Waffo 側でレスポンスの処理が完了していない可能性があるためです。
Waffo Point Topup とサプライヤー間の SHA256WithRSA 署名・検証フロー

エラーコード

エラーコードの接頭辞による分類:
E0001(不明なステータス)を受信した場合、取引を失敗と判断しないでください。明確な成功または失敗の最終ステータスを取得するまで照会を続けてください。

RSA 鍵の生成

サプライヤーは openssl ツールを使用して RSA 鍵ペアを生成できます。
1

openssl のインストール

openssl.org/source から openssl をダウンロードしてインストールしてください。
2

鍵ペアの生成

3

公開鍵の交換

supplier_public_key.pem を Waffo に渡し、Waffo 側の公開鍵を受け取ってください。
秘密鍵は安全に保管し、絶対に第三者に開示しないでください。

次のステップ

モード B:ポイントコード取得 API

リアルタイム取得のリクエスト・レスポンス項目と冪等性の要件。

モード C:即時履行 API

URL 署名リダイレクト、即時履行、即時履行結果照会。