问题描述
我正在使用Laravel 7,并使用PayTabs付款网关进行付款。当用户从“付款”标签中重定向后,所有会话和Auth均会清除。
在重定向到Paytabs之前,在将数据放入会话中时会保存会话。
Session::put('data',$data);
Session::save();
if ($response->response_code == "4012") { //Page created
return redirect()->to($response->payment_url);
} else {
abort(404);
}
我还从CSRF令牌检查中排除了返回网址,如下所示:
protected $except = [
'/paytab_return'
];
我还检查了Paytabs是否使用https和www重定向到正确的URL。
收藏夹需要解决此问题。谢谢
解决方法
这适用于Laravel 6.19.1:
- 我在付款门的成功,错误或cancelUrl中添加了GET变量
- 该变量的名称与会话cookie的名称完全相同
$sessionKey = config('session.cookie') . '=' . session()->getId();
$successUrl = route('wirecardSuccess') . '?' . $sessionKey;
我要输入的网址是
http://beatbox.vnr:8082/vnr/payment/wirecard/success?self_service_local_vnr_session=qNSQ7SessionIdtEA3Z72ReuvgsFt
作为URL,其中self_service_local_vnr_session是我的会话cookie名称,而qNSQ7SessionIdtEA3Z72ReuvgsFt当前会话的ID。
- 然后我需要使用此代码扩展StartSession中间件
<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Illuminate\Contracts\Session\Session;
use Illuminate\Http\Request;
/**
* Class StartSession
* @package App\Http\Middleware
*/
class StartSession extends \Illuminate\Session\Middleware\StartSession
{
/**
* Get the session implementation from the manager.
*
* @param Request $request
* @return Session
*/
public function getSession(Request $request): Session
{
return tap($this->manager->driver(),static function ($session) use ($request) {
$sessionCookieName = config('session.cookie');
if ($request->has($sessionCookieName)) {
$sessionId = $request->input($sessionCookieName);
} else {
$sessionId = $request->cookies->get($session->getName());
}
$session->setId($sessionId);
});
}
}
- 已付款,重定向网址(带有会话ID)使我可以检索旧的会话信息。
我希望它能对登陆此页面的人有所帮助:)
,在 config/session.php 中编辑此字段
requestLocationUpdates