2

サードパーティのシステムと相互作用して支払いを処理するサブスクリプションベースのWebサイトがあります。新規加入者登録を処理する手順は次のとおりです。

  1. 購読者は購読フォームに自分の詳細を入力し、送信ボタンをクリックします。
  2. 指定された詳細が有効であると仮定すると、これらの詳細を格納するためにデータベースに新しいレコードが作成されます。
  3. 次に、加入者は、支払いを処理するためにサードパーティシステム(paypalと同様)のWebサイトにリダイレクトされます。
  4. 支払いが成功すると、サードパーティのWebサイトは、サブスクライバーを当社のWebサイトにリダイレクトします。
  5. この時点で、支払いが成功したことを知っているので、データベースのレコードが更新され、支払いが正常に行われたことが示されます。

私が頻繁に発生している問題は、サブスクライバーが支払いをしたがプロセスを正しく完了しなかった場合(たとえば、バックブラウザーを使用したり、ウィンドウを閉じたりした場合)、データベース内のサブスクライバーのレコードが更新されないことです。したがって、記録を見ただけで支払ったかどうかはわかりませんが、サードパーティシステムからの報告を待ってこれを見つける必要があります。

この問題をどのように解決しますか?

PS。支払いプロセスが完了する前に詳細をデータベースに保存する主な理由の1つは、詳細を再入力せずに戻って支払いを完了することができるようにするためです。たとえば、サードパーティのシステムによってクレジットカードが拒否され、金融機関でこれを整理する必要がある場合は、時間がかかることがあります。

4

1 に答える 1

3

サードパーティの支払いシステムは、ユーザーの行動に関係なく、トランザクションが成功したことを通知する必要があります。

たとえば、PayPalでは、IPN(即時支払い通知)が、指定したURLへのPOSTデータとしてサーバーに送信されます。次に、サーバーはPaypalでトランザクションが本物であることを確認し、本物である場合は、データベースレコードを更新して、サブスクリプションが有効であることを示します。将来のある時点で、PayPalはユーザーをWebサイトにリダイレクトする場合としない場合があります。(ユーザーがブラウザを閉じたり、戻るを押したり、新しいURLにジャンプしたりする場合などに、「発生しない可能性があります」が発生する可能性があります)

Paypalとサーバー間のこの「会話」は、ユーザーのセッションとは無関係であることに注意してください。これは、そのユーザーのトランザクションに関するユーザーとPayPal間の「プライベート会話」です。

明らかに、通信の停止やサーバーの障害が発生する可能性があるため、Paypalがサーバーから検証要求をすぐに受け取らない場合は、定期的にサーバーに再試行を送信して、トランザクションが最終的に完了するようにします。

支払いシステムにトランザクションの信頼性を確保するための基本的なメカニズムが少なくともいくつかない場合は、別のプロバイダーを選択してください。可能性はありますが、システムが正しく機能することを確認するには、サーバーに正しく実装する必要があります。

PS金融取引を開始する前に、ユーザーにログイン(したがってデータベースへの登録)を要求するのはごく普通のことです。購入後は、さらに情報を提供するために戻ってくることを保証する方法がないため、購入する前にすべての関連情報を収集する必要があります。

于 2010-04-10T14:25:24.187 に答える