開發支付介面(如微信支付、支付寶)時,支付網關異步通知回調 URL,伺服器端無法讀取 Session 資料,導致用戶狀態驗證失敗。
SameSite=Lax,跨站請求不攜帶 Cookie支付回調**不依賴 Session**,改用以下機制驗證:
SUCCESS 確認收到
// PHP 設置 Cookie 支援跨域
ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', '1'); // 必須 HTTPS
session_start();
// 或在 Nginx/Apache 層設置
// Set-Cookie: PHPSESSID=...; SameSite=None; Secure
風險:CSRF 攻擊面擴大,需額外驗證來源 IP、簽名。
下單時將 Session ID 作為參數附加在回調 URL:
$notifyUrl = "https://example.com/pay/notify?sid=" . session_id();
回調入口:
if (isset($_GET['sid'])) {
session_id($_GET['sid']);
session_start();
}
SUCCESS、FAIL)原文分析:ZCOOL 文章