Skip to main content
モード C は、ユーザーアカウントに直接クレジットをチャージできるサプライヤー向けです。ユーザーが支払いを完了すると、Waffo Point Topup がサプライヤーの API を呼び出してチャージを実行するため、ユーザーはポイントコードを扱う必要がありません。

メリット

  • シームレスなユーザー体験(ポイントコード不要)
  • 即時アカウントクレジット
  • 高いコンバージョン率

ユースケース

  • アカウントチャージシステムを持つゲームパブリッシャー
  • 会員 / サブスクリプションサービス

連携フロー

モード C のシンプルなフロー:サプライヤーが署名付きリダイレクトリンクを生成、ユーザーが Waffo で決済、Waffo がサプライヤーの履行エンドポイントを呼び出す

API 一覧

最小構成は 1 番と 4 番だけです。署名リダイレクト + 履行結果通知 Webhook で、履行 API を実装しない形になります。この場合 Webhook が返すのは PAY_SUCCESSPAYMENT_FAILED のみで、PAY_SUCCESS を受け取った後にサプライヤー側で発送処理を行います。

URL 署名とリダイレクト

パラメータの完全性を保証するため、署名検証付きの URL パラメータでユーザー情報を渡します。これは Waffo が提供するエンドポイントです。 パラメータの一覧、型、必須区分、例は API リファレンス:署名リダイレクトを参照してください。 本セクションでは署名の計算方法を説明します。
署名は必ずサプライヤーのバックエンドで生成してください。SECRET_KEY をフロントエンドで公開してはなりません。 署名の有効性はタイムスタンプで制御され、2 時間以上経過したリクエストは拒否されます。
URL 形式:
{supplier} は、オンボーディング時に Waffo から割り当てられる専用サブドメインです。
サプライヤー独自のカスタムドメインも利用できます。 その場合、サプライヤー側で当該ドメインを Waffo のエンドポイントに向ける必要があります。カスタムドメインを使う場合、署名対象文字列のベース URL もそのカスタムドメインに置き換えてください。署名はベース URL を含むため、ドメインが一致しないと検証に失敗します。

署名アルゴリズム

1

パラメータの除外

signature パラメータを除外し、値が空(空文字・空白)のパラメータをすべて除きます
2

パラメータのソート

残りのパラメータを、キー名の ASCII 昇順で並べ替えます。
3

文字列の連結

署名対象文字列を {baseUrl}?key1=value1&key2=value2&... の形式で構築します。ベース URL(スキーム + ホスト + パス、例:https://supplier.waffoplay.com/redirect)を必ず含めてください。
4

署名の計算

共有の SECRET_KEY を HMAC キーとして、署名対象文字列に対し HMAC-SHA256 を計算します。
5

大文字への変換

16 進数(HEX)にエンコードし、大文字に変換します。

署名例

指定されたパラメータ: ステップ 1 - パラメータのソートと連結:
ステップ 2 - HMAC-SHA256 を計算し、大文字に変換:
完全な URL の例:
署名対象文字列では returnUrlエンコードしない値を使い、最終的な URL では URL エンコードした値を使います。署名と送信は別の工程なので、両者を混同しないでください。

Java 実装例

Node.js 署名実装ガイド(HMAC-SHA256 & RSA-SHA256)

Waffoplay Sign Methods.zip をダウンロードしてください。Node.js による HMAC-SHA256 と RSA-SHA256 の署名実装が含まれます。

検証フロー

ユーザーが署名付き URL にアクセスすると、Waffo Point Topup バックエンドは以下を実行します。
  1. すべての URL パラメータを受信
  2. 必須パラメータ(faceValuesalesOrderIdsupplierIdsupplierUserAccountsiteCodetimestampsignature)が全て存在することを検証
  3. timestamp が有効期間内(2 時間)であることを確認
  4. 同じアルゴリズムで署名を再計算
  5. リクエスト内の署名と計算した署名を比較
  6. 検証成功時、JWT トークンを生成しユーザーセッションに設定
  7. 対象の siteCode 購入ページへリダイレクト
エラー処理:

即時履行

ユーザーが支払いを完了した後、Waffo Point Topup によって呼び出されます。
本セクションで定義する API 仕様はサンプル/参考用のみです。すでにポイント直接チャージ用の API を有している場合、既存の API ドキュメントを Waffo Point Topup に提供すれば統合を行うことができます。Waffo Point Topup はサプライヤーの既存 API インターフェースに適合します。
冪等性の要件: サプライヤーは salesOrderId + supplierId を使用して冪等性をサポートする必要があります。同じリクエストが複数回受信された場合、同じ成功レスポンスを返してください。
推奨事項: 同一の salesOrderId において、faceValueamountcurrency が内部システムの注文情報と厳密に一致しているかを確認することを強く推奨します。業務チェック(バリデーション)に失敗した場合は、該当する取引のフルフィルメント(注文履行)を拒否してください。

リクエスト

requestedAt において、T は日付と時刻の区切り記号、.000 はミリ秒、Z は協定世界時(UTC)を示します。例:2025-01-05T10:30:00.000Z は、UTC の 2025 年 1 月 5 日 10 時 30 分 00 秒を指します。

レスポンス

レスポンス例:

即時履行結果照会

Waffo Point Topup がサプライヤーに履行結果を照会するために呼び出します。
即時履行エンドポイント自体が冪等であれば、この照会エンドポイントは不要です。Waffo は同じ salesOrderId で再試行し、サプライヤーが冪等処理を保証します。

リクエスト

レスポンス

レスポンス例:

履行結果通知 Webhook

Waffo Point Topup は、署名リダイレクトの notifyUrl パラメータで指定したエンドポイントに最終的な履行ステータスを POST します。「決済成功後の履行失敗」「決済失敗」「タイムアウトによる未払い」の各ケースに対応しています。 全フィールド、failureCode の一覧、リクエスト例は API リファレンス:履行結果 Webhookを参照してください。
冪等性の要件: サプライヤーは salesOrderId + supplierId を使用して冪等性をサポートする必要があります。同じ通知が複数回受信された場合、同じ成功レスポンスを返してください。
連携ロジックを決めるのは fulfillmentStatus です。
最小構成(署名リダイレクト + 本 Webhook のみ、履行 API なし)を選択した場合、Waffo が返すのは PAY_SUCCESSPAYMENT_FAILED のみです。

レスポンスと再試行ポリシー

履行コールバックを受信した後、正常に処理できた場合は HTTP 200 OK を返し、メッセージ本文に success を含めてください。Waffo Point Topup はこれをもって履行結果がサプライヤーに正常に通知されたと判断します。それ以外の場合、Waffo Point Topup は履行通知を再試行します。

Waffo 即時履行結果照会 API

サプライヤーが Waffo Point Topup に対してモード C 注文の履行結果を能動的に照会するためのエンドポイントです。履行結果通知 Webhook のプル型の対応版であり、通常は消込(リコンサイル)や Webhook 通知を受信できなかった場合に使用します。レスポンスの data 構造は Webhook の data と同一です。 完全なパラメータ、レスポンス例、オンライン実行は API リファレンス:即時履行結果照会を参照してください。 照会キー:supplierId は必須、salesOrderIdpayOrderId のいずれか一方は必須です。注文が存在しない、または呼び出し元のサプライヤーに属さない場合は、エラーコード仕様に従いエラーレスポンスを返します。

次のステップ

API 共通仕様

メッセージ構造、RSA 署名と検証、エラーコード、鍵の生成。

連携の概要

3つのモードの詳細比較と準備チェックリスト。