5

PayPalのPaymentsProNVP APIを使用して、当サイトでシームレスなクレジットカードとペイパルの処理を提供します。ユーザーがアイテムを購入してPaypalアカウントで支払うことができるように、顧客サイトに配置するiframeベースのカートウィジェットを作成しました。

クレジットカードでの取引は正常に機能しますが、ユーザーがPayPalアカウントで支払いを行おうとすると問題が発生します。APIはPayPalロゴをクリックするときにリダイレクトを使用しますが、PayPalのコードはフレームバスティングスクリプトを実行しているようで、トランザクションを続行できません。

iframeを介した支払いでPayPalを希望するユーザーを処理する方法についての提案またはサンプルコードを探しています。1つのオプションは、新しいウィンドウをポップアップすることですが、ユーザーはそのウィンドウとiframeを含むウィンドウを切り替えて、PayPalウィンドウが表示しているものとカートを同期させないため、デザインに問題が発生する可能性があります。

4

3 に答える 3

7

上記の答えは両方とも正しいです。ただし、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が表示されます。

于 2011-09-15T04:11:48.517 に答える
1

ProHostedのPayPalExpressCheckout /'Pay with PayPal'は、セキュリティ上の理由からiframeをサポートしていません。これを適切に処理する唯一の方法は、ポップアップウィンドウを開く(またはtarget = _parentを設定する)ことです。

于 2011-09-04T19:46:07.297 に答える
0

フォームのターゲットを--target="_top"に設定します

于 2011-09-09T23:13:37.277 に答える