3

我正在使用 Laravel 7 并使用 PayTabs 支付网关进行支付。当用户从 Paytabs 重定向回来时,所有会话和身份验证都将被清除。

在重定向到 Paytabs 之前,我会在将数据放入会话时保存会话。作为

Session::put('data', $data);
Session::save();

并且到 Paytabs 的重定向如下:

if ($response->response_code == "4012") { //Page created
    return redirect()->to($response->payment_url);
} else {
    abort(404);
}

我还从 CSRF 令牌检查中排除了返回 url,如下所示:

验证CsrfToke.php

protected $except = [
   '/paytab_return'
];

我还检查了 Paytabs 是否使用 https 和 www 重定向到正确的 URL。

需要帮助解决这个问题。谢谢

4

2 回答 2

1

在 config/session.php 中编辑此字段

'path' => '/;samesite=none',
'secure' => true,
'same_site' => 'none',
于 2021-06-01T15:09:16.253 回答
1

这适用于 Laravel 6.19.1:

  1. 我在付款门的成功、错误或 cancelUrls 中添加了一个 GET 变量
  2. 此变量的调用方式与会话 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。

  1. 然后我需要用这段代码扩展 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);
        });
    }
}
  1. 付款已完成,重定向 url(带有会话 ID)允许我检索旧会话信息。

我希望它能帮助登陆此页面的人:)

于 2020-10-27T17:47:24.893 回答