上記の答えは両方とも正しいです。ただし、PayPalテクニカルサポートは、以下に提供するより完全な一連の手順を提供しました。うまくいけば、彼らは他の誰かを助けるでしょう。
SetExpressCheckout呼び出しを変更して、RETURNURLパラメーターとCANCELURLパラメーターが、ポップアップウィンドウを閉じ、通常のチェックアウトプロセスを続行するための特別な戻りページを指すようにします(これについては後で詳しく説明します)。
次に、購入者をPayPalWebサイトにリダイレクトするスクリプトを変更します。通常、このスクリプトはブラウザに「302 Found」(または同様の)応答を返し、他のページへのリダイレクトに従う必要があることをブラウザに通知します。(PHPでは、これは通常、「ヘッダー」関数を使用して実行されます。たとえば、header(“Location: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=$token”);
。)代わりに、このスクリプトは次のHTML / JavaScriptコードを出力する必要があります(「TOKEN」をPayPalから受け取ったトークンに置き換えます)。これにより、購入者がPayPalでチェックアウトプロセスを続行できるポップアップウィンドウが開きます。必要に応じて追加のテキストを挿入して、ポップアップウィンドウを使用してチェックアウトを完了する必要があることを購入者に示すことができます。ポップアップブロッカーの問題を回避するために、ページ上にリンクまたはボタンを作成して、続行するにはリンク/ボタンをクリックする必要があることを購入者に示し、このコードをオブジェクトの「onClick」ハンドラーに使用できます。
<script type="text/javascript">
window.open("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN","_blank","width=1024,height=768,location=1,resizable=1,scrollbars=1,status=1",true);
</script>
次に、次のコードを実行する新しいページを作成します(または同様のコード-このコードはPHPに基づいており、使用している言語に合わせて必要に応じて調整します)。このコードはポップアップウィンドウを閉じ、既存のiframeでチェックアウトプロセスを続行します。SetExpressCheckout呼び出しのRETURNURLパラメーターは、このページを指している必要があります。「paypalreturn.php」を、PayPalからショッピングカートに戻る購入者を処理するために現在使用しているスクリプトに置き換えます。
<html>
<body>
<script type="text/javascript">
window.opener.location="http://www.regattacentral.com/paypalreturn.php?token=<? echo $_REQUEST["token"]; ?>&PayerID=<? echo $_REQUEST["PayerID"]; ?>";
window.close();
</script>
</body>
</html>
最後に、CANCELURLハンドラーに対してこの手順を繰り返します。
•購入はiframe内で完了し、購入のトランザクションIDが表示されます。