1

私の問題は、Paypal IPN プロセス中に SESSION 変数が破棄されていることです。

Paypal と通信するための IPN リスナーの作成に成功しました。Paypal POST から返される定義済みの IPN 変数を問題なく操作できます。それにもかかわらず、Paypal での支払いが行われる前に作成された SESSION 変数にアクセスできません。Paypalに接続すると、それらが破壊されていると思います。

私はかなりの数の変数を持っているので、Paypal の「カスタム」フィールドだけを使用するのは有料ではありません。

例として、顧客が私のサイトで注文プロセス中に作成した SESSION 変数 (名前は $_SESSION['order_type'] ) を含む電子メールを顧客に送信したい場合:

<?php

//enable sessions
if (!isset($_SESSION)) {
  session_start();
}

**** Accept payment/verify using paypal listener etc****

// If everything is successful and the payment is accepted then send an email containing some previously stored session variables

   $mail_From = "From: me@example.com";
   $mail_To = "email@email.com";
   $mail_Subject = "Your payment has been made successfully” ;
   $mail_Body = "you have successfully made a ". $_SESSION['order_type']."order";
   mail($mail_To, $mail_Subject, $mail_Body, $mail_From);

   ?>

メールにセッション変数が含まれていないため、セッション変数が破壊されていると思われます...助けてください!

どうもありがとう、

デビッド

4

2 に答える 2

2

セッション保存ハンドラーを作成して、すべてのセッションデータをデータベースに保存できます。フィールドでセッションIDをPayPalに渡し、customPayPalから戻ったときにセッションを復元します。

http://nl.php.net/manual/en/function.session-set-save-handler.phpの例から始めます

于 2012-01-04T16:31:38.027 に答える
2

セッションはクライアントに固有です。PayPal IPN リスナーは、ブラウザーからではなく、Paypal から送信されたメッセージを処理します。したがって、技術的には、支払いプロセスの同じ「SESSION」にはありません。支払いプロセスで設定されたすべてのセッション変数は、IPN リスナー コードでは見えません。

この問題を解決するには、支払いプロセスですべての変数を「トランザクション ID」とともにデータベース (またはファイル) に保存します。そして、後でそのトランザクション ID に基づいて IPN リスナーでそれらを取得します。

于 2014-07-25T08:30:42.687 に答える