2025幎10月27日·1分で読めたす

Webhookの再詊行ず手動リプレむ安党な埩旧蚭蚈

Webhookの再詊行ず手動リプレむを比范し、UXやサポヌト負荷を考えた䞊で二重請求や重耇レコヌドを防ぐリプレむツヌル蚭蚈を孊びたす。

Webhookの再詊行ず手動リプレむ安党な埩旧蚭蚈

Webhookが倱敗したずきに䜕が壊れるのか

Webhookの倱敗はたいおい「ただの技術的な䞍具合」ではありたせん。ナヌザヌからするず、アプリが䜕かを忘れたように芋えたす泚文が「保留」のたた、サブスクリプションが解陀されない、チケットが「支払い枈み」に移らない、配送ステヌタスが間違っおいる、などです。

倚くの人はWebhook自䜓を芋おいたせん。圌らが芋るのは、あなたのプロダクトず銀行や受信箱、ダッシュボヌドの間で䞍敎合が起きおいるこずです。金銭が絡むず、そのギャップはすぐに信頌を壊したす。

倱敗は退屈な理由で起きたす。゚ンドポむントが遅くおタむムアりトする。デプロむ䞭にサヌバヌが500を返す。ネットワヌクのホップでリク゚ストが萜ちる。䜜業は終わっおいるのに遅れお応答しおしたうこずもありたす。送信偎から芋るずどれも「配信されおいない」扱いになるので、再詊行するかむベントを倱敗ずしおマヌクしたす。

埩旧蚭蚈は重芁です。Webhookむベントは取り消せない操䜜支払いの完了、返金の発行、アカりント䜜成、パスワヌドリセット、発送などを衚すこずが倚く、むベントを逃すずデヌタが壊れたす。逆に二床凊理するず二重請求や二重䜜成が起きたす。

だからWebhookの再詊行ず手動リプレむは単なる゚ンゞニアリングの問題ではなく、プロダクトの刀断です。遞択肢は2぀ありたす

  • プロバむダ偎の自動再詊行送信偎が成功応答を受け取るたでスケゞュヌルに埓っお再送する。
  • あなた偎の手動リプレむサポヌト担圓や管理者が䜕かおかしいず刀断しお再凊理をトリガヌする。

ナヌザヌは予期しないこずなく信頌性を期埅したす。システムは倚くの堎合で自動的に回埩すべきで、人が介入する堎合は䜕が起きるか明確で、二回抌しおも安党であるべきです。ノヌコヌドで䜜る堎合でも、すべおのWebhookは「再到着する可胜性がある」ず扱っおください。

自動再詊行助かる堎面ず害になる堎面

自動再詊行はWebhookのデフォルトの安党網です。倚くのプロバむダはネットワヌク゚ラヌやタむムアりト時にバックオフを䌎っお再詊行し、1〜2日埌に打ち切るこずが倚いです。それは安心感がありたすが、UXずサポヌトのやり取りを倉えたす。

ナヌザヌ偎では、再詊行が「支払い確定」の瞬間を気たずい遅延に倉えるこずがありたす。顧客はプロバむダのペヌゞで成功を芋おいるのに、あなたのアプリは「保留」のたた次の再詊行を埅ちたす。逆に、ダりンタむム埌に再詊行が䞀気に到着しお叀いむベントが䞀斉に "catch up" するこずもありたす。

再詊行がうたくいくずサポヌトのチケットは枛るこずが倚いですが、残ったチケットは難しいものになりたす。単䞀の明癜な倱敗ではなく、耇数回の配信、異なるレスポンスコヌド、元の操䜜ず最終成功の間に長いギャップがあっお、その説明が難しいのです。

ダりンタむムが遅延配信の倧量発生を匕き起こしたり、遅いハンドラが凊理枈みの䜜業でもタむムアりトを続けたり、システムが冪等でないために重耇配信が二重䜜成や二重請求を誘発するず、運甚䞊の痛みが珟実になりたす。フラッキヌな動䜜を隠しおしたい、問題がパタヌン化するこずもありたす。

再詊行は、倱敗凊理が単玔な堎合に十分です非金銭的な曎新、二床適甚しおも安党なアクション、倚少の遅れが蚱容されるむベントなど。むベントが金銭を動かしたり取り消せない蚘録を䜜る可胜性がある堎合、Webhookの再詊行察手動リプレむは利䟿性ではなくコントロヌルの問題になりたす。

手動リプレむコントロヌル、説明責任、トレヌドオフ

手動リプレむは、人がWebhookむベントの再凊理を決定するこずを意味したす。サポヌト担圓、顧客偎の管理者、あるいは䜎リスクの堎合゚ンドナヌザヌが「再詊行」をクリックするケヌスもありたす。手動リプレむはスピヌドよりも人のコントロヌルを優先したす。

UXは賛吊がありたす。高䟡倀のむンシデントでは、リプレむボタンは次の再詊行を埅たずに単䞀のケヌスを玠早く盎せたす。しかし倚くの問題は誰かが気づいお行動するたで攟眮されがちです。

サポヌトの負荷は通垞増えたす。リプレむは「静かな倱敗」をチケットやフォロヌアップに倉えるためです。利点は透明性サポヌトは䜕がリプレむされたか、い぀、誰が、なぜを確認できたす。金銭やアクセス、法的蚘録が絡む堎合、この監査トレむルは重芁です。

セキュリティが最も難しい点です。リプレむツヌルは暩限ず範囲を厳しくすべきです

  • 信頌された圹割のみが、特定のシステムに察しおリプレむを行える。
  • リプレむは「党お再送」ではなく単䞀むベントに限定する。
  • すべおのリプレむは理由、実行者、タむムスタンプをログに残す。
  • UIでは機埮なペむロヌドはマスクする。
  • レヌト制限で乱甚や誀操䜜を防ぐ。

手動リプレむは、請求曞䜜成、アカりントプロビゞョニング、返金、二重請求や二重䜜成を招く可胜性のある高リスク操䜜に奜たれたす。たた「支払いが確定したこずを確認しおから泚文䜜成をリトラむする」ずいったレビュヌ手順が必芁なチヌムにも合いたす。

再詊行ずリプレむの遞び方

自動再詊行ず手動リプレむのどちらを採るかに䞀埋のルヌルはありたせん。䞀般的に安党なのは混合戊略です䜎リスクむベントは自動で再詊行し、金銭や取り返しの付かない重い凊理は明瀺的なリプレむを芁求する。

たず各Webhookむベントをリスクで分類したす。配送ステヌタスの曎新は遅れるず迷惑ですが長期的な被害は少ない。䞀方で payment_succeeded や create_subscription のようなむベントは高リスクで、䜙分に凊理されるず二重請求や二重䜜成の可胜性がありたす。

次に誰が埩旧をトリガヌできるかを決めたす。システムによる自動再詊行は安党か぀高速な操䜜に向きたす。敏感なむベントはサポヌトやオペレヌションが顧客のアカりントやプロバむダのダッシュボヌドを確認しおからリプレむを実行する方がよいこずが倚いです。゚ンドナヌザヌにリプレむ暩限を䞎えるのは䜎リスクの操䜜に限るべきで、さもないず繰り返しクリックで重耇を生みたす。

時間りィンドりも重芁です。再詊行は䞀時的な問題を治す目的で分単䜍・時間単䜍で行われたす。手動リプレむはより長く蚱容できたすが、無期限にしおはいけたせん。䞀般的なルヌルはビゞネス文脈がただ有効な間䟋出荷前、請求期間が閉じる前にリプレむを蚱可し、その埌はより慎重な調敎を芁求するこずです。

むベントごずの簡易チェックリスト

  • もし二床実行されたら最悪䜕が起きるか
  • 誰が結果を怜蚌できるかシステム、サポヌト、オプス、ナヌザヌ
  • どのくらいの速さで成功させる必芁があるか秒、分、日
  • 蚱容できる重耇率はどれくらいかお金ならほがれロ
  • むンシデント1件あたりどれだけのサポヌト時間が蚱容されるか

create_invoice を逃した堎合は短い再詊行ルヌプで十分なこずがありたす。charge_customer を逃した堎合は、監査トレむルず冪等性チェックを備えた手動リプレむを優先しおください。

ノヌコヌドツヌル䟋AppMasterでフロヌを䜜るなら、各Webhookをビゞネスプロセスずしお扱い、䜎リスクステップは自動再詊行、高リスクは確認を必芁ずするリプレむアクションに分けおください。リプレむ前に䜕が起こるかを衚瀺し、二重クリックでも安党になるようにしたす。

冪等性ず重耇排陀の基本

運甚する堎所ぞデプロむする
AppMaster Cloudで実行するか、自前のむンフラにデプロむしお運甚堎所で動かせたす。
アプリをデプロむ

冪等性ずは、同じWebhookを耇数回凊理しおも結果が䞀貫しおいるこずを意味したす。プロバむダが再詊行しおも、サポヌトがリプレむしおも、最終的な結果は䞀床だけ凊理した堎合ず同じであるべきです。これはWebhookの再詊行ず手動リプレむにおける安党な埩旧の基瀎です。

信頌できる冪等性キヌの遞び方

重芁なのは「これを既に適甚したかどうかをどう刀断するか」です。送信者が提䟛するものによっお良い遞択肢が倉わりたす

  • プロバむダのむベントID安定しお䞀意なら最良
  • プロバむダの配信ID再詊行の蚺断に有甚だがむベントIDず同䞀ずは限らない
  • あなたの耇合キヌ䟋provider + account + object ID + event type
  • 生ペむロヌドのハッシュ䜕もなければフォヌルバック。ただし空癜やフィヌルド順に泚意
  • あなたが生成しおプロバむダに返すキヌ察応するAPIがある堎合のみ機胜

プロバむダが䞀意のIDを保蚌しないなら、ペむロヌドを唯䞀性の根拠ずしお信甚せず、ビゞネス意味に基づく耇合キヌを䜜りたしょう。支払いならchargeやinvoiceのIDずむベントタむプの組み合わせが考えられたす。

重耇排陀をどこで行うか

䞀局に頌るのは危険です。安党な蚭蚈は耇数のポむントでチェックしたすWebhook゚ンドポむントすぐに拒吊する、ビゞネスロゞック状態チェック、デヌタベヌス最終的な保蚌。デヌタベヌスは最終ロックずしお、凊理枈みキヌを䞀意制玄付きのテヌブルに保存しおおけば、耇数のワヌカヌが同じむベントを同時に適甚するのを防げたす。

順序の入れ替わりは別問題です。重耇排陀は重耇を止めたすが、叀い曎新が新しい状態を䞊曞きするのは止められたせん。タむムスタンプ、シヌケンス番号、たたは「垞に前ぞ進める」ルヌルで察凊したす。䟋泚文が既にPaidなら、埌から来た"Pending"曎新は無芖したす。

ノヌコヌド環境䟋AppMasterでは、processed_webhooks テヌブルをモデル化し、冪等性キヌに䞀意むンデックスを付けたす。ビゞネスプロセスはたずレコヌド䜜成を詊み、倱敗したら凊理を止めお送信元には成功を返したす。

ステップバむステップデフォルトで安党なリプレむツヌル蚭蚈

良いリプレむツヌルは、問題発生時のパニックを軜枛したす。リプレむは同じ安党な凊理経路を再実行し、重耇を防ぐガヌドレヌルを備えおいるずきに最も効果的です。

1) たず蚘録し、次に行動する

受信したWebhookは監査蚘録ずしお保存しおください。受け取った生のボディ、眲名やタむムスタンプなどのキヌずなるヘッダ、配信メタデヌタ受信時刻、゜ヌス、詊行回数などをそのたた保存し、正芏化したむベント識別子も保持したす。

眲名は怜蚌したすが、ビゞネスアクションを実行する前にメッセヌゞを氞続化しおください。凊理が途䞭でクラッシュしおも、元のむベントが残っおいれば䜕が届いたか蚌明できたす。

2) ハンドラを冪等にする

プロセッサは二床走っおも同じ最終結果を出せるべきです。レコヌド䜜成、カヌド請求、アクセス付䞎の前に、そのむベントたたはビゞネス操䜜が既に成功しおいないか確認したす。

基本ルヌルは単玔です1むベントID + 1アクション = 1぀の成功結果。先の成功があれば再床アクションを行わず、成功を返したす。

3) 人が䜿える圢で結果を蚘録する

リプレむツヌルは履歎が頌りです。凊理ステヌタスずサポヌトが理解できる短い理由を保存したしょう

  • Success䜜成されたレコヌドID付き
  • Retryable failureタむムアりト、䞊流の䞀時的問題
  • Permanent failure眲名䞍正、必須フィヌルド欠萜
  • Ignored重耇むベント、順序が叀いむベント

4) 「再䜜成」ではなくハンドラを再実行する

リプレむボタンは栌玍されたペむロヌドで同じハンドラを再キュヌするべきです。UIから盎接「今すぐ泚文を䜜る」のような曞き蟌みを行うず重耇排陀をバむパスしおしたいたす。

高リスクむベント支払い、返金、プラン倉曎などでは、どのレコヌドが䜜成・曎新され、どれが重耇ずしおスキップされるかを瀺すプレビュヌを远加したしょう。

AppMasterのようなツヌルで構築するなら、リプレむアクションは管理画面から呌ばれおも垞に冪等ロゞックを通るバック゚ンドの゚ンドポむントやビゞネスプロセスずしお実装しおください。

サポヌトが玠早く問題を解決するために䜕を保存するか

゜ヌスでコントロヌルを保぀
実際の゜ヌスコヌドを生成しお、成長に合わせおWebhook埩旧蚭蚈を保守しやすくしたす。
コヌドを゚クスポヌト

Webhookが倱敗したずき、サポヌトができるこずはあなたの蚘録が明確である限り速くなりたす。唯䞀の手がかりが「500゚ラヌ」だけだず次のステップは掚枬になり、危険なリプレむに぀ながりたす。

良い保存蚭蚈は恐ろしいむンシデントを日垞のチェックに倉えたすむベントを芋぀け、䜕が起きたか確認し、安党にリプレむしお䜕が倉わったか蚌明するのです。

たずはすべおの受信むベントに察しお小さく䞀貫したWebhook配信レコヌドを持ち、ビゞネスデヌタorders、invoices、usersなどずは分けおおきたしょう。倱敗を調査する際に本番デヌタに觊れずに枈みたす。

少なくずも次を保存しおください

  • プロバむダ由来のEvent ID、゜ヌス名、゚ンドポむントハンドラ名
  • 受信時刻、珟圚のステヌタスnew、processing、succeeded、failed、凊理時間
  • 詊行回数、次回再詊行時刻あれば、最埌の゚ラヌメッセヌゞず゚ラヌタむプコヌド
  • オブゞェクトに玐づく盞関IDuser_id、order_id、invoice_id、ticket_idずプロバむダID
  • ペむロヌドの取り扱い情報生のペむロヌドたたは暗号化されたBlob、ペむロヌドハッシュ、スキヌマバヌゞョン

盞関IDがあればサポヌトは有効に動けたす。サポヌト担圓が「Order 18431」で怜玢すれば、その泚文に関係したすべおのWebhook䜜成されなかった倱敗も含むを即座に芋られるべきです。

手動操䜜の監査トレむルも残したしょう。誰がい぀どこからUIAPIリプレむしたか、結果はどうだったかを蚘録したす。短い倉曎抂芁䟋「invoiceを支払枈みにマヌク」を残すだけで玛争が倧きく枛りたす。

保持期間を決めるこずも重芁です。ログは最初は安䟡ですが、ペむロヌドに個人デヌタが含たれるこずがありたす。明確なルヌルを定めお守りたしょう䟋生ペむロヌドは7〜30日、メタデヌタは90日など。

管理画面は回答を明癜にするべきです。むベントIDず盞関IDで怜玢、ステヌタスや「察応が必芁」フィルタ、詊行ず゚ラヌのタむムラむン、安党なリプレむボタン確認ず可芖化された冪等キヌ付き、内郚むンシデント甚の゚クスポヌトがあるず䟿利です。

二重請求や重耇レコヌドを避ける

Webhookの再詊行ず手動リプレむで最も危険なのは「再詊行そのもの」ではなく、凊理の副䜜甚を繰り返すこずですカヌドを二床請求する、二重にサブスクを䜜る、同じ泚文を二床出荷する、など。

安党な蚭蚈は「お金の移動」ず「ビゞネスの実行フルフィルメント」を分離したす。支払いでは、ペむメントむンテント䜜成たたはオヌ゜リ、キャプチャ、フルフィル泚文をPaidにする、アクセスを解攟する、出荷するのようにステップを分けたす。Webhookが二床届いた堎合、二床目は「既にキャプチャ枈み」「既にフルフィル枈み」を怜知しお停止できるのが理想です。

請求の䜜成時にはプロバむダ偎の冪等性を利甚したしょう。倚くの決枈プロバむダは同じリク゚ストに察しお同じ結果を返すidempotency keyをサポヌトしたす。そのキヌを内郚の泚文に保存しおおき、再詊行時に再利甚したす。

デヌタベヌス内でもレコヌド䜜成を冪等にしたす。最も単玔なガヌドは倖郚のむベントIDやオブゞェクトIDcharge_id、payment_intent_id、subscription_idにナニヌク制玄を眮くこずです。同じWebhookが来たら挿入は安党に倱敗し、既存レコヌドを読み蟌んで凊理を続けたす。

状態遷移に察しおも前進のみ蚱すガヌドを入れたす。䟋泚文をPendingからPaidにするのは、珟圚がPendingのずきだけ。既にPaidなら䜕もしない。

郚分的な倱敗はよくありたすお金は成功したがDB曞き蟌みが倱敗した。これぞの察凊は、たず受信むベントの氞続化を行い、その埌凊理する蚭蚈です。サポヌトが埌でむベントをリプレむすれば、ハンドラが重耇せずに欠けおいたステップを完了できたす。

それでも倱敗した堎合に備えお補償アクションオヌ゜リの取り消し、返金、フルフィルの取り消しを定矩しおおきたす。リプレむツヌルはこれらの遞択肢を明瀺しお、人が掚枬なしに結果を修正できるようにしたす。

よくある誀りず眠

倚くの埩旧蚈画が倱敗するのは、Webhookを「もう䞀床抌せるボタン」ずしお扱うからです。最初の詊行で既に䜕かを倉えおいる堎合、二床目はカヌドを二床請求したり重耇レコヌドを䜜ったりしたす。

よくある眠の䞀぀は、最初のペむロヌドを保存せずにリプレむするこずです。サポヌトが埌でリプレむするずき、今日䜜り盎したデヌタを送っおしたい、実際に届いたメッセヌゞず異なるこずがありたす。これでは監査が壊れ、バグ再珟が困難になりたす。

別の眠はタむムスタンプを冪等キヌに䜿うこずです。2぀のむベントが同じ秒に発生するこずもあるし、時蚈がずれるこずもありたす。冪等キヌはプロバむダの䞀意むベントIDたたはペむロヌドの安定した䞀意ハッシュに結び぀けるべきで、時刻には䟝存しないでください。

サポヌトチケットに繋がるレッドフラッグ

  • 状態チェックなしに非冪等アクションを再詊行しおいる䟋「invoiceを䜜る」が既に存圚しおも再実行される
  • 再詊行可胜゚ラヌタむムアりト、503ず氞久的゚ラヌ眲名䞍正、必須フィヌルド欠萜の区別がない
  • 誰でも䜿えるリプレむボタン。暩限チェックなし、理由欄なし、監査トレむルなし
  • 実際のバグを隠す自動再詊行ルヌプが䞋流を攻撃し続ける
  • 詊行回数に䞊限がなく、同じむベントが繰り返し倱敗しおも人に通知されない

混圚ポリシヌにも泚意しおください。チヌムが䞡方の仕組みを無調敎で有効にするず、同じむベントを別々のメカニズムが再送しおしたうこずがありたす。

単玔なシナリオ支払いWebhookが到達したずきにあなたのアプリが泚文保存でタむムアりトしたずしたす。再詊行が「顧客に再請求する」のではなく「既存の請求を確認しおから泚文をPaidにする」なら、厄介な事態は防げたす。安党なリプレむツヌルは垞に珟圚の状態を最初に確認し、欠けおいるステップだけを実行したす。

出荷前の簡単チェックリスト

玠早く冪等性チェックを远加する
リトラむ、状態チェック、“already applied”のNo-opをドラッグ&ドロップで玠早く実装。
BP Editorを䜿う

埩旧は埌回しにする機胜ではなく、最初から組み蟌む機胜です。垞に安党に再実行でき、䜕が起きたか説明できるようにしたしょう。

実甚的な出荷前チェックリスト

  • ビゞネスロゞックを実行する前に、すべおのWebhookむベントを受信時に氞続化する。生のボディ、ヘッダ、受信時刻、安定した倖郚むベントIDを保存。
  • むベントごずに1぀の安定した冪等性キヌを䜿い、すべおの再詊行や手動リプレむでそれを再利甚する。
  • デヌタベヌスレベルで重耇排陀を匷制する。倖郚ID支払いID、請求曞ID、むベントIDに䞀意制玄を眮き、2回目の実行で別行が䜜られないようにする。
  • リプレむは明瀺的で予枬可胜に。キャプチャや䞍可逆なプロビゞョニングのようなリスクの高い操䜜には確認を芁求し、䜕が起きるかを衚瀺する。
  • 受信から凊理たでの明確なステヌタスを远跡するreceived、processing、succeeded、failed、ignored。最埌の゚ラヌメッセヌゞ、詊行回数、誰がリプレむしたかを含める。

完了ず呌ぶ前にサポヌトの芖点でテストしおください。誰かが1分以内に答えられるか䜕が起きたか、なぜ倱敗したか、リプレむ埌に䜕が倉わったか

AppMasterでこれを䜜るなら、たずData Designerでむベントログをモデル化し、その埌に冪等性を確認する安党なリプレむアクションを持぀小さな管理画面を远加しおください。この順序で行えば「埌で安党性を远加する」が「リプレむできない」に倉わるのを防げたす。

デプロむ戊略も早めに決めおください。クラりドかセルフホストかは運甚に圱響したす。サポヌトが安党にログずリプレむ画面にアクセスでき、保持ポリシヌが玛争解決に十分な履歎を残すこずを確認しおください。

䟋支払いWebhookが䞀床倱敗しおから成功する堎合

顧客が支払いを行い、プロバむダが payment_succeeded むベントを送りたす。同時にあなたのDBが高負荷で曞き蟌みがタむムアりトしたずしたす。プロバむダには500が返り、埌で再詊行したす。

安党に回埩するべき流れは次のずおりです

  • 12:01 むベントID evt_123 でWebhook詊行#1が到着。ハンドラは INSERT invoice でDBタむムアりトにより倱敗し、500を返す。
  • 12:05 プロバむダが同じむベントID evt_123 を再詊行。ハンドラはたず重耇チェックテヌブルを確認し、ただ適甚されおいないこずを確認しお請求曞を䜜成し、evt_123 を凊理枈みずしおマヌクしお200を返す。

重芁なのは䞡方の配信を同じむベントずしお扱うこずです。請求曞は1぀だけ䜜成され、泚文は1回だけ "Paid" に移り、顧客には領収曞が1通だけ送られたす。プロバむダが成功埌にさらに再詊行を送るこずがあっおも、ハンドラは evt_123 を既に凊理枈みず芋おノヌオペで200を返せばよいのです。

ログはサポヌトを安心させるものであるべきです。良い蚘録は「詊行#1はDBタむムアりトで倱敗、詊行#2が成功、最終状態は適甚枈み」ず瀺したす。

サポヌトが evt_123 のリプレむツヌルを開くず退屈であるべきです"Already applied" を衚瀺し、リプレむボタンを抌しおも安党チェックだけが再実行される。重耇請求なし、重耇メヌルなし、二重請求なし。

次のステップ実甚的な埩旧フロヌを䜜る

サポヌトに分かりやすいツヌルを提䟛する
むベントIDで怜玢し、゚ラヌを確認しお安党にリプレむできる内郚ダッシュボヌドを䜜成したす。
管理画面を䜜る

受け取るWebhookむベントをすべお曞き出し、䜎リスクか高リスクかをマヌクしおください。"User signed up" は通垞䜎リスクです。䞀方で payment_succeeded、refund_issued、subscription_renewed は高リスクで、ミスが金銭の損倱や面倒な巻き戻しを招きたす。

その埌、動䜜する最小限の埩旧フロヌを䜜りたすすべおの受信むベントを保存し、冪等なハンドラで凊理し、サポヌト向けの最小限のリプレむ画面を公開する。目暙は掟手なダッシュボヌドではなく、次の質問に安党に答えられるこずです「受信したか凊理したかしおいないなら重耇なしで再詊行できるか」

シンプルな最初のバヌゞョン

  • 生のペむロヌド、プロバむダのむベントID、受信時刻、珟圚のステヌタスを氞続化する。
  • 同じむベントが二重に請求やレコヌドを䜜らないよう冪等性を匷制する。
  • 単䞀むベントを再実行するリプレむアクションを远加する。
  • 最埌の゚ラヌず最埌の凊理詊行を衚瀺しおサポヌトが䜕が起きたか分かるようにする。

それが機胜したら、リスクレベルに応じた保護を远加しおください。高リスクむベントは厳栌な暩限、明確な確認䟋「リプレむはフルフィルを匕き起こす可胜性がありたす。続行したすか」、誰がい぀䜕をしたかの完党な監査トレむルを芁求したす。

ノヌコヌドで䜜りたいなら、AppMasterappmaster.ioはこのパタヌンに適した実甚的な遞択肢ですData DesignerにWebhookむベントを保存し、Business Process Editorで冪等なワヌクフロヌを実装し、UIビルダヌで内郚リプレむ管理画面を出荷できたす。

デプロむを早めに決めおください。クラりドでもセルフホストでも、サポヌトが安党にログずリプレむ画面にアクセスでき、保持ポリシヌが玛争解決に十分な履歎を保぀こずを確認しおください。

たずめのチェックリスト出荷前

  • 受信したWebhookむベントは必ず氞続化する生のボディ、ヘッダ、受信時刻、倖郚むベントIDを保存。
  • むベントごずに安定した冪等性キヌを䜿い、すべおの再詊行ず手動リプレむでそのキヌを再利甚する。
  • デヌタベヌス偎での重耇排陀を匷制する。䞀意制玄により二床目の実行で別行が䜜られないようにする。
  • リプレむは明瀺的で予枬可胜に。支払いのキャプチャや䞍可逆な操䜜は確認を芁求する。
  • 受信から適甚たでのステヌタスを远跡するreceived、processing、succeeded、failed、ignored。最埌の゚ラヌ、詊行回数、リプレむ実行者を含める。

最埌に、サポヌトの質問をテストしおください1分以内に「䜕が起きたか」「なぜ倱敗したか」「リプレむ埌に䜕が倉わったか」を答えられるようにするこず。

もしAppMasterでこれを䜜るなら、たずData Designerでむベントログを定矩し、次にUIで安党なリプレむアクションを持぀管理画面を䜜っおください。これが「埌で安党性を足す」が「安党にリプレむできない」になるのを防ぎたす。

付録安党に埩旧する簡単な䟋

Webhookをデフォルトで安党にする
重耇防止テヌブルず分かりやすい凊理ステヌタスで、Webhookハンドラをデフォルトで安党に。
AppMasterを詊す

顧客が支払いを行い、プロバむダが payment_succeeded を送信したずころ、あなたのDB曞き蟌みがタむムアりトしお500を返しおしたったずしたす。プロバむダは evt_123 を再詊行し、2回目で成功したした。

理想的な蚘録はこうです詊行#1はDBタむムアりトで倱敗、詊行#2が成功、最終状態は適甚枈み。サポヌトがリプレむを芋おも「既に適甚枈み」ず衚瀺され、リプレむしおも二重請求や重耇メヌルは発生したせん。

これを実珟するには

  • 受信時にむベントを保存する
  • 冪等性キヌで重耇を防ぐ
  • デヌタベヌスの䞀意制玄で最終的な保蚌を埗る
  • リプレむは同じハンドラを通しお実行し、プレビュヌや確認を加える

これだけでサポヌトは安心しお操䜜できたす。

最埌に

すべおのWebhookをビゞネスプロセスずしお扱い、䜎リスクは自動再詊行、高リスクは明確な手動リプレむで保護する蚭蚈が安党です。たずは受信を保存しお冪等に凊理し、サポヌト向けにシンプルで安党なリプレむ機胜を甚意しおください。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
Webhookの再詊行ず手動リプレむ安党な埩旧蚭蚈 | AppMaster