イベント (コンサートなど) のオンライン チケット システムを開発しています。基本的な部分は、訪問者が選択できる座席/チケットを提示する座席表です。ユーザーが選択すると、システムはすぐに 10 分間チケットを予約しようとします (チケット ID がキーであるテーブルにチケット ID を入力することによって)。予約が成功した場合にのみ、支払いを行うためのペイパル ボタンが表示されます。
これはすべて正常に機能します。チケットの予約は私にとって問題ではありません。私のシステムでそれを処理できます。しかし、ペイパルがゲームに登場すると、事態は難しくなります。
問題: ユーザーが何らかの理由で Paypal で長い時間 (10 分以上) を費やした場合、私の Web サイトでのチケット予約は期限切れになり、別の訪問者がチケットを購入できるようになります。支払い。訪問者 1 はまだ PayPal を使用しているため、これは何も表示されません...ある時点で、支払いを行うことができます (たとえば、15 分後)。これは、PayPal が期限切れの予約について何も知らないため、完全に機能します。 .
最終的には、2 人の訪問者が同じチケット/座席を支払った可能性があります!
どうすればそれを防ぐことができますか?2 つのシステムが関係していて、そのうちの 1 つが制御できない場合、競合状態をどのように処理しますか?
私の考えは次のとおりです。実際には、支払いが行われる直前に小切手が行われるべきですが、もちろん私はペイパルで何が起こるかを制御することはできません!
Paypal の IPN などを使用できることはわかっていますが、これは支払い後にのみ発生し、遅すぎます。
または、Paypal が API を介して支払いを確認するように要求してくれたら素晴らしいと思います。チケットが他の誰かに売られた場合に備えて、私は「いいえ」と言うことができます. しかし、これはペイパルでは不可能だと思います。