在laravel 5.7中,会话在重定向到另一个页面后消失。我正在开发一个应用程序,我将用户推送到支付网关页面,然后根据laravel documentation将数据存储在会话中。当我尝试检索该会话时从支付网关返回后,它返回空。任何人都可以告诉我如何解决这个问题。
我的代码是这样的
public function processPayment(Request $request)
{
//...........
session()->put('order_checkout_data', [
'gateway' => 'paypal',
'data' => $paypalData
]);
//$request->session()->save(); <!-- This i tried after reading some solution but didnt help
//print_r(session('order_checkout_data')) <!-- I can see the session here
$paypal = new PayPal();
$response = $paypal->purchase($paypalData);
if ($response->isRedirect()) {
$response->redirect(); //This is where redireting to paypal
}
}
public function handleGatewayResponse(Request $request){
print_r(session('order_checkout_data')); //No data
}
我尝试使用会话全局函数和外观,就像这些
Session::put('order_checkout_data', [
'gateway' => 'paypal',
'data' => $paypalData
])
并且
session(['order_checkout_data'=>[
'gateway' => 'paypal',
'data' => $paypalData
]])
但没有价值。我的环境设置喜欢这个
SESSION_DRIVER=file
SESSION_LIFETIME=360
我尝试通过一些类似问题的链接,但没有帮助。以下是我所遵循的链接:
使用会话时,会向浏览器发送SESSION_ID(或类似)cookie,以了解与每个请求关联的会话。
您的processPayment
方法是在用户请求之后调用的(它肯定是您的js脚本发出请求但它是相同的),并且您将数据存储在链接到此特定用户的会话中。
在PayPal完成其工作后,它会向回调URL发出请求。此请求由PayPal完成,但不是由您存储数据的用户完成的。 PayPal不知道会话cookie,因此Laravel开始一个新的空会话。