2017-11-17 7 views
0

PayPal APIを使用して支払い処理システムを作成しています。問題は、ユーザーをPayPalにリダイレクトすると、情報の後にセッション内に「paypal_hash」が格納されることですPayPalシステムに入力されると、ユーザーはWebページにリダイレクトされ、 'paypal_hash'はもう存在しません。
process_payment.php:このコードが実行された後2ページリダイレクト後のPHPセッションデータワイプ

session_start(); 
$payment->create($api); 

//Generate hash 
$hash = md5($payment->getId()); // Will encrypt better at a later point 
$_SESSION['paypal_hash'] = $hash; 

//Prepare and execute transacting storage 
$store = $db->prepare(" 
    INSERT INTO transactions_paypal (user_id, payment_id, hash, complete) VALUES (:user_id, :payment_id, :hash, 0) 
    "); 

$store->execute([ 
    'user_id' => $_SESSION['user_id'], 
    'payment_id' => $payment->getId(), 
    'hash' => $hash 
]); 
header('Location: ' . $paypal_url); // the url where the user pays via a paypal.com site 

、ユーザはpay.phpにリダイレクトされる。

session_start(); 
var_dump($_SESSION); // This returns an empty array 
$paymentId = $db->prepare(" 
    SELECT payment_id 
    FROM transactions_paypal 
    WHERE hash = :hash 
    "); 
$paymentId->execute([ 
    'hash' => $_SESSION['paypal_hash'] 
]); 

ハッシュがデータベースに適切に格納されているが、後にセッションに保持されていませんPayPalからリダイレクトされています。

+2

返すときにドメインがまったく同じであることを確認します。 https://www.myDomainから開始し、paypalがhttps:// myDomainにリダイレクトする場合。 Cookieは、サブドメインに対してワイルドカードされていることが指定されていない限り、ドメイン固有です。 – DevionNL

+2

まったく同じURLですか? domain.comとwww.domain.comはどうですか? –

+1

ありがとう、それはまさに私の問題でした。 1つのファイルにはhttps://があり、1つのファイルにはhttps:// wwwがあります。それはそれを解決しました! –

答えて

0

さて、いくつかの有用なコメントの直後、私はいくつかのファイルがhttps://といくつかのファイルを入れていたことを知りましたhttps://www。 - それを同じものに変更することで問題が解決しました。

関連する問題