リターン URL に依存しないでください。買い手は、支払いを完了した後、ブラウザー/タブを閉じることができます (そして閉じます)。
代わりに、PayPal Instant Payment Notifications を使用して、PayPal からサーバー間通知を受け取ります。これを後で検証し、phpBB クローズド スレッドの適切なフラグでデータベースを更新するために使用できます。
IPN は次のように機能します。
- PayPal を作成し、「notify_url」を含めます。このパラメーターの値は、「IPN スクリプト」または「IPN ハンドラー」と呼ばれるサーバー上のスクリプトへの完全な URL になります。
ウェブ ペイメント スタンダードでは、次のように IPN ハンドラを指定できます。
<input type="hidden" name="notify_url" value="http://blah.com/ipn.php
Express Checkout または Web Payments Pro の場合は、SetExpressCheckout/DoExpressCheckoutPayment または DoDirectPayment API 呼び出しにそれぞれ以下を含めるだけです。
NOTIFYURL=http://blah.com/ipn.php
- 買い手が PayPal 経由で取引を完了する
- 買い手は取引を完了すると、ブラウザを閉じるか、あなたのウェブサイトに戻ることができます。
- PayPal がトランザクションを受け入れて処理すると、PayPal は http://blah.com/ipn.phpに通知を送信します。
- このスクリプトに送信されたすべての POST データを取得し、https://www.paypal.com/cgi-bin/webscr?cmd=_notify- validate に POST する必要があります。
- 送り返されたデータが PayPal から送信されたデータと一致する場合、「VERIFIED」応答が返されます。
- 応答が VERIFIED である場合は、この時点で一致するトランザクション/バイヤーを検索し、phpBB スレッド ステータスを適切に更新します。
PayPal IPN のサンプル コードとドキュメントは、https:
//www.paypal.com/ipn/ で入手できます
。また、安全な IPN スクリプトを作成するためのヒントは、https://www.x.com/developers/community で入手できます。 /blogs/ppmtsrobertg/securing-your-instant-payment-notification-ipn-script
注: 後で読み取ることができるトランザクションと共にカスタム データを含めたい場合は、'custom' を使用します。
<input type="hidden" name="custom" value="xxxxx">
これは、PayPal から送信される IPN POST データでも返されます。