2013-02-11 5 views
6

イベント(コンサートなど)のオンラインチケットシステムを開発中です。基本的な部分は、訪問者が選択可能な座席/チケットを提示される座席図です。彼らが選択すると、システムはただちに(チケットIDがキーであるテーブルにチケットIDを入力することによって)10分間チケットを予約しようとします。 予約が成功した場合にのみ、ペイパルボタンが表示され、支払いが行われます。PayPalを使用したオンラインチケット予約:複数の訪問者が同じチケットを購入するのを防ぐ

これはすべて正常に動作します。チケット予約は私にとっては問題ではありません。私は私のシステムでそれを処理することができます。しかし、ペイパルがゲームに入ったら、物事は難しくなる。

問題:何らかの理由でユーザーが何らかの理由でPayPalで多くの時間を費やした場合(10分以上)、私のウェブサイトのチケット予約が失効し、別の訪問者がチケットを購入する可能性があります訪問者1が支払いを行う前に。訪問者1はまだ彼がまだペイパルであるためにこれを見ません...ある時点で、彼はpaypalが期限切れの予約について何も知らないので(例えば15分後)、支払いを行うことができます。

最終的に、2人の訪問者が同じ航空券を払っている可能性があります。

どうしたら起こるのを防ぐことができますか? 2つのシステムが関与し、そのうちの1つが制御できない場合、どのように競合状態を処理しますか?

私の考えは:実際には支払いが行われる直前に行われるべきですが、もちろん私はpaypalで何が起こるかについてはコントロールできません!

私はPaypalのIPNなどを使用することができますが、これは遅すぎる支払い後にのみ発生します。

また、paypalが支払いを確認するためにAPIを通じて私に尋ねた場合は、素晴らしいことです。チケットが他の誰かに売られた場合、私は「いいえ」と言うことができます。しかし、私はこれがpaypalで可能だとは思わない。

答えて

2

Express Checkoutの使用をおすすめします。エクスプレスチェックアウトでは、実際に支払いを処理するためにPayPalへのAPI呼び出しを呼び出すことになるため、支払いがいつ行われるかを制御できます。

あなたが調べることのできるもう1つの可能性は、販売取引ではなく承認を使用していることです。そうすれば、別の買い手が座席を取った場合、あなたは承認を無効にすることができ、買い手は請求されません。 (ただし、PayPalは恐らく無効化された承認のために請求します)

+0

ありがとうございます。エクスプレスチェックアウトは良く聞こえ、私はそれを研究します。 2番目の部分について:これはpaypalの特定の機能ですか?私は検索し、本当に「認可」に関する何かを見つけなかった。 – user1595494

+0

いいえ、認証はクレジットカード業界ではかなり標準的です。このページでは、Express Checkoutが提供するさまざまな支払いタイプのかなり良いランダウンを提供しています:https://www.x.com/developers/paypal/documentation-tools/express-checkout/integration-guide/ECRelatedAPIOps –

1

Matt Coleが提案した1つの解決策は、「販売」ではなく「承認」を使用することです。

Paypal支払いを作成しているときにPaypal APIへの呼び出しで 'sale'({intent: "authorize"})ではなく 'intent'を 'authorize'に設定することでこれを行うことができます。お客様が取引を承認したら、支払いを取り込んでこの取引を承認するかどうかはあなた次第です。

関連する問題