2011-10-20 6 views
1

私は状況があるIPN + PDTを実施しています:ペイパルから来るIPNの前にPDTが起動するか、IPNとPDTを同期させることができますか?

IPN、その後私は(いくつかの時間を取って検証を)バックPayPalにそれを送信するIPNを検証していますし、すべての良いが、私はそのデータベースにフラグを設定していますならばIPNはOKです(取引は依然として支払われません)。私がトランザクションIDを検証し、その翻訳のIPNステータスがOKであったかどうかをチェックした後、現在のトランザクションをpayedとして設定しています。

開発環境(私の開発PC + paypalサンドボックス)ではこれまでのところよく見えましたが、理論的にはIPNが歳入/完了(IPN検証が遅れて、何らかの理由で時間がかかる)する前に起こる可能性があります。その結果、取引は支払われたとしてマークされることができず、それは問題となる。

私はそれをGoogleで検索して言っWhat is the sequence of Event Firing - IPN & PDTが見つかりました:

ので、appearantly IPNは、PDTの前に起動します。しかし時々、PayPalはあなたのウェブサイトから http http 200を得ることができません(そして何らかの理由で) IPNが正しく発射されなかったと考えると、PayPalは の後に再びIPNを送ります。その場合、IPNの前にPDTを発動する機会があります。

誰かがそれを確認してもらえ:

  1. は、いくつかのいずれかが、PDTが完成IPN前に送っ取得経験はありますか?
    前の質問の答えがYESであれば - そのような場合には、私の2番目の質問:
  2. は(IPNが完了するまで遅延PDT)IPNおよびPDTを同期する方法はありますか?

答えて

2

注文管理にPDTを使用しないでください。 PDTは、買い手があなたのウェブサイトに戻ったときに取引の詳細を表示するためのやや簡単な解決策です。これは、あなたが同様に言及したように、あなたのウェブサイトに戻る買い手に依存するため、注文管理タスクを処理するために使用すべきではありません。

IPNは常にIPNスクリプトにPOSTされるという点で信頼性があります。

PDTとIPNのシーケンスについて:PDTは(あなたからPayPalへの)プルリクエストであり、IPNは(PayPalから)あなたにプッシュリクエストであるため、何もありません。

要するに、良いPDNを表示してIPNを使用して支払いが完了したことを確認し、それに従ってデータベースを更新しない限り、PDTをドロップしてください。

関連する問題