web-dev-qa-db-ja.com

PaypalでのIPNとPDT

Paypalの即時支払い通知(IPN)と支払いデータ転送(PDT)を選択するのに問題があります。

基本的に、ユーザーは私のサイトで1回限りの製品を購入し、Paypalで支払い、サイトに戻ります。 IPNの仕組みを理解していますが、PDTを使用すると、購入が成功した後に行われるさまざまなアクションを、PDTで簡単にトリガーできることがわかりました。 。

ただし、PaypalのPDTドキュメントには、「PDTはクレジットカードまたはエクスプレスチェックアウトのトランザクションで使用することを意図したものではありません」という不可解な行が含まれています。 ...しかし、私はこのトピックに関してこれ以上何も見つけることができません。

  1. クレジットカードは本当にPDTで使用するためのものではありませんか?一文以上欲しいです。

  2. それは、ユーザーが支払うためにPaypalアカウントを持っている/作成する必要があるということですか?

  3. ユーザーがPaypalアカウントで、および/またはクレジットカードで直接支払うことを許可する場合、IPNを実装する必要があるということですか?

これを経験した人は親切に光を当てることができますか?

94
Tom

PDTとIPNのAPIは似ています。主な違いは、通知を受け取ったときです。そのため、両方を実装することをお勧めします。

  • PDTを使用すると、通知を即座に取得し、必要な追加処理を実行して、ユーザーに確認ページを表示できます。
  • IPNを使用すると、ユーザーのコンピューターがPDTを送信する前に爆発した場合でも、支払いが受領されたことが通知されることが保証されます。

両方を実装して、両方の長所を活用してください。ただし、1つだけを実行している場合、IPNは信頼できるものです。

1つの問題:両方を実装すると、支払いが2回処理される可能性があります。それが起こらないように注意してください。私が書いたアプリケーションはPDTとIPNをほぼ同じように処理し(バックエンド部分は同じです)、そのコードはデータベースでWebユーザーごとのロックを取得するため、同じユーザーがまったく同じ支払いを複数回送信しようとすると一度だけ処理できます。処理されると、そのプロセスの結果は、それを処理する後続の試行に再利用されます。

Editもう1つ、IPNはPDTよりも多くの情報を伝達します。 IPNから受け取ることができるチャージバック通知など、さまざまなメッセージがたくさんあるため、実際に実装する必要があります。


PaypalのPDTシステムは、Paypal Payments Standardを使用する加盟店サイトに注文確認を送信し、この情報を認証させます。そのようなサイトは、このデータをローカルで「注文確認」ページに表示できます。

PDTを使用する場合

IPNは、上記と同じ機能を提供します。それで、いつIPNの代わりにPDTを選択すべきですか?

PDTを使用すると、顧客が支払いを完了するとすぐにサイトに通知されます。ただし、IPNでは、顧客が支払いを完了してからサイトがこのイベントの通知を受け取るまでに重大な遅延があります。

そのため、サイトに支払いの即時通知が必要な機能が含まれている場合は、PDTを使用してください。

たとえば、デジタルミュージックストアを考えます。 PDTを使用すると、このストアでは、PDTが注文確認をすぐに送信するため、顧客は購入した商品をすぐにダウンロードできます。 IPNでは、そのような即時注文の履行は不可能です。

IPNの利点

PDTには大きな弱点があります。注文確認を1回だけ送信します。その結果、PDTが確認を送信するとき、サイトが実行されている必要があります。そうしないと、メッセージを受信しません。

これに対して、IPNでは、サイトが受領を確認するまで確認を再送信するため、注文確認の配信は事実上保証されます。このため、Paypalでは、PDTではなくIPNを実装することをお勧めします。

IPNのもう1つの利点は、PDTが注文確認のみを送信するのに対し、多くの種類の通知を送信することです。したがって、IPNを使用すると、サイトは、たとえば、注文確認と同様にチャージバック通知を受信できます。注:サイトに支払いをすぐに通知する必要がある場合は、IPNとPDTの両方を実装できます。ただし、その場合、サイトは販売ごとに2つの注文確認を受け取ります。そのため、所定の確認メッセージのコピーを1つだけ処理するように注意する必要があります(製品の出荷など)。

ドキュメントはこちら

Re 1. PDTは、Webペイメントの自動復帰機能で使用するためのものです。自動リターンは、売り手にお金を支払った後、PDTサイトにリダイレクトします。残念ながら、Paypalアカウントオプションと一緒にその機能を使用することはできません-クレジットカード支払いを有効にするために使用されます。 Paypalからの注意事項は次のとおりです。「 自動復帰 をオンにして、新しいユーザーに対してオプションのPaypalアカウントをオンにした場合、新しいユーザーは自動的にWebサイトに戻されませんが、戻るオプションが与えられました。ユーザーは、サイトに戻る(PDTステップ)か、Paypalサイトにとどまるかを選択できます。ユーザーが「ストアリンクに戻る」をクリックしない場合、クレジットカードで支払うときにPDTステップをスキップできます。

日時2.どの支払いオプションを許可するかはあなた次第です。 Paypalアカウントなしで支払いを許可する場合は、 アカウントオプション を有効にできます。 Paypalアカウントを持つユーザーのみを許可する場合は、その機能を無効にします。さらにオプションがあります。

日時3.あなたの場合、購入が成功した後にアクションをトリガーする必要があります。推奨される方法は、IPNを実装することです。 PDTはすべての場合に機能するわけではなく、メッセージの配信を保証するものでもありません。そのトピックをカバーするドキュメントへのリンクは次のとおりです PDT vs IPN

1
jan salawa

これは古い質問ですが、私の簡単な答えは-PDTとIPNの両方を使用しないのはなぜですか?彼らはカード取引のためにうまく動作します。

PDTはWebサイトに即時の取引ステータスを提供できます。そこで、支払いの成功または失敗のステータスをすばやく確認し、ユーザーに適切なメッセージを提供できます。

その間、バックグラウンドでIPNからの完全な検証を待つことができます。受け取ったら、これを使用してDBをさらに更新し、注文を処理できます。

このステップバイステップガイドに従うことができます。このガイドは非常に明確で役立つことがわかりました。2018年も引き続き有効です。

https://www.codexworld.com/Paypal-standard-payment-gateway-integration-php/

0
Sol