仕組みから学ぶ Web
発展読了目安 30#決済#冪等性#Webhook#リトライ

「二重に引き落とされた」— 通知は1通しか届いていない

利用者は1回押した。請求は2件ある。ログには1件しか残っていない。5つの判断点で、あなたは何を選びますか。

このケースで問われること

このケースは、お金が絡む処理で、どこまでを「起きる前提」にするかを扱います。

二重決済は「バグを直せば起きなくなる」種類の問題ではありません。利用者は二度押しますし、ネットワークは切れますし、リトライは自動で走ります。起きることを前提に、起きても1回になる設計にするしかない。

そしてこのケースには、気づかれていない被害があります。7 件のうち問い合わせてきたのは 1 人です。残り 6 人にどう向き合うかは、技術の判断ではありません。

順に 5 つの判断点があります。それぞれで一度自分の答えを決めてから、先へ進んでください。結論を先に読むと、判断の練習になりません。

扱う範囲は api/idempotencyapi/retry-timeoutapi/async-queuedata/transaction-isolation にまたがります。

読み終わりましたか?

読了にすると、これを前提とする記事がロードマップで開放されます。

このケースが扱う仕組み