イベントタイプ
共通構造
すべての Webhook は同じリクエスト構造を使用します。
PAYMENT_NOTIFICATION
決済完了後に送信されます。
REFUND_NOTIFICATION
返金完了後に送信され、返金作成時に指定した refundNotifyUrl に配信されます。
TOKENIZATION_NOTIFICATION
Tokenization の完了、Token ステータスの変更、または Token のカード情報が更新されたときに送信されます。Waffo は Generate token の呼び出し時に渡された notifyUrl にこの通知を送信します。
SUBSCRIPTION_STATUS_NOTIFICATION
サブスクリプションのステータスが変化したとき (アクティベーション、キャンセル、課金結果などを含む) に送信されます。
SDK では 2 つのハンドラーが提供されています。
onSubscriptionStatus() — このイベントを直接処理します
onSubscriptionPayment() — onSubscriptionStatus が登録されていない場合のフォールバック処理
SUBSCRIPTION_PERIOD_CHANGED_NOTIFICATION
サブスクリプションの期間が終局状態に達したときに送信され、更新 (継続課金) 結果の追跡に使用します。
SUBSCRIPTION_CHANGE_NOTIFICATION
サブスクリプション変更 (アップグレード/ダウングレード) が完了したときに送信されます。
加盟店の応答
すべての Webhook に対して HTTP 200 を返す必要があり、応答ボディは {"message":"success"} でなければなりません。また X-SIGNATURE 応答ヘッダーも必ず含める必要があります (加盟店の秘密鍵で応答ボディを署名してください)。
Waffo は HTTP ステータスコードと応答ボディの両方を検証します。応答フォーマットが不正であったり署名が欠けている場合、Waffo は配信失敗として扱い再送します。
SDK を使用する (推奨)
SDK の handleWebhook() メソッドは、署名検証、イベントルーティング、応答の署名を自動的に実行します。
手動応答
SDK を使わない場合、応答ボディは以下のいずれかである必要があります。
{"message":"success"} — 処理成功
{"message":"failed"} — 処理失敗。Waffo は再送します
{"message":"unknown"} — ステータス不明。Waffo は再送します
再送ポリシー: failed または unknown を返した場合、Waffo は最大 8 回 (初回を含む) 再送します。間隔は 30 秒から 8 時間まで徐々に長くなります。詳細は再送と障害復旧をご覧ください。
サブスクリプション通知の選択ガイド
サブスクリプションのシナリオでは 3 種類の通知が関係します。必要なものをサブスクライブしてください。
SUBSCRIPTION_STATUS_NOTIFICATION と SUBSCRIPTION_PERIOD_CHANGED_NOTIFICATION は非同期で配信される Webhook で、キュー消費・再送・ネットワーク遅延などの影響により受信順序は保証されません。受信順序をビジネス状態管理の根拠にしないでください。正しい処理方法(冪等な重複排除、いずれかのコールバック受信後に subscription/inquiry で最終状態を確認)は 処理のベストプラクティス を参照してください。
推奨する組み合わせ:
- 最小限の連携:
SUBSCRIPTION_STATUS_NOTIFICATION + SUBSCRIPTION_PERIOD_CHANGED_NOTIFICATION をサブスクライブ
- フル連携: すべて 3 種類をサブスクライブ。
PAYMENT_NOTIFICATION を使って再試行ごとの詳細な失敗理由を取得します