私は最近、クライアントのために完成させようとしていた ASP.NET MVC プロジェクトで、まさにこの懸念を抱いていました。
次の 2 つのことを学びました。
この状況に対処する方法は、企業が個人小切手を処理する方法と似ています。
- 個人の小切手は通貨のように見えますが (通常はそうです)、多くの企業は、支払いを受け入れる前に、銀行に資金が利用可能であることを何らかの形で確認してもらいたいと考えています。
- マシンが資金が利用可能であると言う場合、ビジネスはそれを信頼し、トランザクションを完了します. ただし、マシンは通常、「資金が利用できないか、何か問題が発生した」ことを意味するエラーメッセージを表示する可能性があり、ビジネスは次の決定を下す必要があります。
- 私たちは顧客を信頼し、小切手を受け取り、製品を配達し、後で小切手を銀行に入金するときに最善を尽くすことができます.
- または、小切手が決済され、小切手が入金され、資金が実際に口座に入金されるのを待ち、(成功した場合) ビジネスが資金を受け取った後に製品を配送するまでに時間がかかることを顧客に伝えることができます。
これは、今日の多くのビジネスの運営方法では非効率に思えますが、実際に発生するものです。実際、これが多くの企業が個人小切手の受け入れを避ける理由であり、他の支払い方法と比較して信頼性が低い.
これは Paypal 支払いの処理とどのように関連していますか?
- Paypal での支払いは通貨のように見えますが (通常はそうです)、多くの企業は、支払いを受け入れる前に資金が利用可能であることを Paypal から確認する必要があるため、Paypal PDT、IPN、またはその他の方法を使用してトランザクション適切に処理されました。
- Paypal が検証要求の 1 つに適切に応答した場合、企業はそれを信頼して取引を完了することができます。 ただし、Web サイトが何らかのエラーをスローする場合があります (つまり、Paypal が の IPN 応答で応答し
NOTVALID
たり、Paypal から応答をまったく得られなかったりするなど)。ビジネスには次の決定があります。
- ビジネスは顧客を信頼し、顧客が Paypal で支払いを行ったことを受け入れることができます。
- または、Paypal の支払いには 72 時間の処理期間がある可能性があることをチェックアウト時に顧客に伝えることができます。
これはあなたのビジネスを運営する最良の方法とは思えないかもしれませんが、不完全なインターネットに対処しなければならない方法です.
次のような Paypal 支払いフローを設定します。
- ユーザー A は、Paypal を使用して別のユーザー B に 100 ドルを送金したい
- UserA は「チェックアウト フィールド」に値を入力し、トランザクションを確認するために Paypal に送信されます。
- UserA は Paypal からあなたの Web サイトに送り返され、あなたの Web サイトは、Paypal がサイトに投稿した詳細を使用して IPN チェックを実行します (この場合、IPN を選択しました。Paypal が他の支払いゲートウェイではなく、エクスプレス チェックアウトを使用しているかのように)提供しています)。
- IPN が の場合、
VALID
期待どおりにトランザクションを処理します。
- IPN が でない場合は
VALID
、処理に遅延が生じる可能性があることを顧客に伝え、Paypal トランザクションの問題が発生した可能性があるという通知をアプリケーションから送信してもらいます (参照 ID を含めて、どの問題かすぐにわかるようにすることをお勧めします)。この通知が参照しているトランザクション)、およびトランザクションをpending
対照として、complete
または同様のものとしてマークします。
- これらの通知を処理するサイトの管理者は、トランザクションを手動で調査し (または、ウェブサイトに Paypal を再度確認させる - 詳細については Paypal API のドキュメントを参照してください)、手動でトランザクションを
complete
またはとしてマークしfailed
ます。
- 取引の状況を関係者に通知します。
お金が送金されたことを確認するために追加の手順が必要になるのは面倒ですが、前述のように、不完全なシステムを使用しており、金融取引の成功/失敗を非常に確実にしたいと考えています.
このプロセスの追加のボーナスは、誰かが Paypal 支払いシステムを改ざんしているときに通知がある可能性が高いことです。これにより、将来的に悪意のある者に対処するための準備が整います.