Paypal と IPN を扱うときにいくつかのセッション変数を削除しようとしている方法に問題があります。具体的には、オンライン小売店で誰かにログインしてもらいたい (またはログインせずに)、カートを通過して、リダイレクトされるようにしたいです。支払いのためにペイパルに送ってから、私のサイトにリダイレクトされます。
私はペイパルipnを使用して、支払いが完了したときにペイパルに通知してもらい、セッションを再開できるサイトにユーザーを戻すことができますが、カートの設定を解除できるようにしたいです(ただし、カート全体ではありませんログインしている場合はセッション) 支払いが完了するとすぐに。これは、ユーザーが私のサイトの支払い完了ページに戻らず、別のページでサイトに戻った場合に備えて、私の基盤をカバーすることです.
問題は、ペイパルに行く前のサイトの最後の配送情報ページと、支払いが完了したときにペイパルからサイトに戻ったランディングページの両方で同じセッションIDを取得していますが、ipnでこのセッションにアクセスできないことですPaypal に応答して私のサイトで実行されるスクリプト。これら 3 つのページのそれぞれで session_start() を実行していますが、配送方法のページと支払い完了のランディング ページにメールまたは投稿すると、同じセッション ID が取得されます。IPN スクリプトでセッション ID の結果を自分自身に電子メールで送信しても、何も得られません。
ペイパルに行く前にカートを閉じることはできますが、戻って変更したい場合はどうすればよいですか? ランディング ページでカートを停止することはできますが、別のページに移動した場合はどうなりますか? カートを破棄したいのですが、支払いの確認を受け取ったときにセッション全体を破棄したくはありませんが、方法がわかりません。私は私のipnページでこれを試しました:
session_start();
$a = session_id();
mail("webmaster@mysite.com", "ipn session id 0", $a, "From: webmaster@mysite.com");
//results in blank email, unlike in other locations on actual displayed pages
// Unset all of the session variables.
$_SESSION = array();
// Delete the session cookie to kill the session
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// Finally, destroy the session.
session_destroy();
unset($_SESSION['cart']);
unset($_SESSION['product_id_array']);
unset($_SESSION['pp_checkout_btn']);
unset($_SESSION['state']);
unset($_SESSION['total']);
unset($_SESSION['shipping']);
unset($_SESSION['grand_total']);
しかし、カートを見るページに戻ると、まだそこにあります。どんなアイデアでも大歓迎です。役立つ特定のコードがあれば、お知らせください。投稿します。