2

私はなんとかカスタムウェブサイトをペイパルと統合することができました...このウェブサイトでアカウントを作成するときは、ペイパルを介して料金を支払う必要があります...したがって、登録後にユーザーをペイパルにリダイレクトします。 URLのトークンキーをパラメーターとして使用して、私のWebサイトの成功ページにリダイレクトされました(マーチャントアカウントからその成功ページを入力しました)。唯一の質問は、このトークンキーを使用して、ペイパルの応答から、登録して支払いを行ったばかりの顧客の電子メールを取得するにはどうすればよいかということです。

次のようなカスタムフォームを作成した場合:

     <form id="paypalForm" method="POST" action="https://www.paypal.com/cgi-bin/webscr">
        <input type="hidden" name="cmd" value="_notify-synch">
        <input type="hidden" name="tx" value="<?php echo $tokenKey; ?>">
        <input type="hidden" name="at" value="<?php echo $merchantPayPalltoken; ?>">
        <input type="submit">
     </form>

[送信]をクリックすると、ペイパル画面にリダイレクトされ、必要な情報が一覧表示されます。

しかし、私は次のように、jQuery.ajaxを介してこの投稿を呼び出そうとしました:

    var postVars = jQuery('#paypalForm').serialize();
    var url = 'https://www.paypal.com/cgi-bin/webscr';
    jQuery.ajax({
        type: "POST",
        url: url,
        data: postVars,
        success: function(data){
              alert("success email = "+data.payer_email);

          },

      error:function(xhr, ajaxOptions, thrownError){

               alert('status = '+xhr.status+' thrownError = '+thrownError+ ' response = '+xhr.responseText);


          } 
    });

しかし、それは常に応答のエラー部分に入り、成功しません。

彼が支払った後、私のウェブサイトでそのユーザーアカウントをアクティブにするには、ペイパルからのその電子メール情報が必要になります。

または、支払いのためにペイパルにリダイレクトする直前にユーザーの電子メールでセッション変数を作成し、ユーザーが成功ページにリダイレクトされたときにセッションから電子メールを取得することで、この部分を作成する必要があります。これは安全な方法でしょうか?

どうもありがとう

4

1 に答える 1

4

その情報をサイトに戻す方法は 2 つあります。PDT または IPN のいずれかを使用できます。どちらも情報をサイトに返します。IPN は、購入者が返品するかどうかに関係なく、情報をサイトに返信します。これは、ブラウザーがクラッシュしたりウィンドウを閉じたりするなど、購入者が戻ってこない場合に使用するより良い方法です。このようにして、システムは引き続き更新されます。もう 1 つの方法である PDT は、使用しようとしているもののように見えますが、購入者がサイトに戻ってくるかどうかによって異なります。サイトにリダイレクトされると、一部の情報とともに送り返されます。PayPal で情報を検証するためにポスト バックを行うと、PayPal はすべての情報を返信します。

PDT の詳細については、https: //www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNPDTAnAlternativetoIPN を参照してください。そのページにはドキュメントとサンプルがあります。IPN の詳細については、そのページのリンクを見つけるか、https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNOperationsにアクセス してください。使用する方法。私は通常、両方を組み合わせて使用​​します。データベースに書き込む前に、IPN スクリプトと PDT スクリプトをチェックして、他のスクリプトからポストをまだ受け取っていないことを確認するだけです。もしそうなら、2番目の投稿は無視します。動的領収書を作成するために PDT リターン ページをより多く使用し、システムで更新を行うために IPN にもっと依存しています。

IPN の優れた点は、投稿を最初に受信したときに何らかの理由でエラーが発生した場合や、ネットワークの問題があった場合に、投稿をシステムに再送信できることです。PDT では、この情報を再送信する方法がありません。そのため、データベースを手動で更新する必要があります。

お役に立てれば!!:)

于 2013-02-27T14:33:54.873 に答える