webhookとは

サーバーへのイベント通知の仕組みと検証が必要な理由を説明します。

更新日:

webhookは、イベントが発生したときに、あるサービスが別のアプリのアドレスへ送る通知です。たとえばCryptanioは店舗のサーバーへ暗号資産決済の状態変更を知らせます。アプリが同じ状態を繰り返し問い合わせなくても、変更を知ることができます。

この連携には、アクセス可能なサーバー側のHTTPS受信先が必要です。TelegramやDiscordの既成通知と違い、自分のサーバーがデータを受け取り、独自の処理を行います。検証用の秘密情報はサーバーに保管し、ブラウザーのコード、メッセージ、ログに公開しないでください。

処理前に、元のリクエストのバイト列に対する署名と、メッセージが許容時間内であることを確認します。その後イベントを識別し、対応するインボイスと状態を確認します。正しい署名は送信元を示しますが、金額、資産、注文の業務上の検証を代替しません。

通知は繰り返し届く可能性があります。イベント識別子を保存し、再送で商品を二重に提供しないよう更新します。状態変更は許容される順序で適用します。一時的な停止から復旧するときは、受信済み履歴を保ち、現在のデータと照合してください。

Cryptanioの固定された公開API v1契約を使います。HTTPリクエストの受信だけで商品を提供しないでください。取引の検出、送金の承認、注文の全額支払いは異なる条件です。取引の取り消しや決済例外にも対応します。