我发现了一些相关问题,但他们没有对我的问题提供足够的解释/解决方案。我正在将 Paycorp 支付网关与现有项目集成。在 PaymentController.php 中,我将所有酒店 IPG 设置放入一个数组中并放入 session 中。一旦我将它放入 session 中,我尝试使用 vardump 打印它,它正在工作,它在 session 中!然后我启动付款并重定向到生成的网址。它重定向到 Paycorp 付款,我提供卡详细信息并提交。当它返回到 PaymentCompleteController.php 时,我需要完成付款,并且我需要我已在 session 中放入的酒店 IPG 设置。当我试图获取它时,什么也没有,而且它是 NULL。
PaymentController.php
$params['something1'] = $something1;
$params['something2'] = $something2;
$params['something3'] = $something3;
$params['something4'] = $something4;
Session::put(SampleModel::PARAMS, $params);
//At this point Params are in the session
//var_dump(Session::get(SampleModel::PARAMS)); exit();
//Initiate Payment and Redirect to URL
提供并提交卡详细信息后,它将重定向回
PaymentCompleteController.php
vardump(Session::get(SampleModel::PARAMS)); exit();
在 PaymentCompleteController.php 中, session 变量为空。但放在 PaymentController.php 之前的变量仍然存在。
最佳答案
当 Laravel 应用程序生命周期开始时,在应用程序生命周期结束之前,放入 Session 中的任何值都不会被存储。重定向阻止了这种情况。
在调用 put()
后立即保留 session 值:
Session::put(SampleModel::PARAMS, $params);
Session::save();
关于Laravel session 变量一旦重定向到支付网关并返回,就会变为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569009/