1. 程式人生 > >使用第三方支付回撥時SESSION失效的問題

使用第三方支付回撥時SESSION失效的問題

最近使用支付寶api的過程中,遇到了一個問題,完成支付後由支付寶回撥的return_url.php檔案開始,之前儲存使用者登陸資訊的SESSION失效了。百度之後看到一篇帖子寫的頗為清晰,他的方法我並沒能理解,因此找出了適合自己的方法。

1、在付款的表單中新加一個隱藏的input,用於放SESSION中的登陸資訊。當然也可以在第二部中直接從SESSION中讀取資訊,但是那樣做耦合度太高,因此採用這種方式

<input type="text" name="WIDextra_common_param" value="..select from session..">

2、在alipayapi.php檔案中找到要請求的引數陣列$parameter,並將該input值加入其中

$parameter = array(
    ....
    "extra_common_param"=> $_POST['WIDextra_common_param']
);
3、在return_url.php中,使用GET方法獲取extra_common_param的值並更新SESSION
$extra_common_param = $_GET['extra_common_param'];
//更新SESSION
再進行自定義跳轉,即可。

extra_common_param為AlipayAPI中的公共引數(以前好像叫私有域),就是專門用來存放使用者的其他資訊,在構造請求引數陣列的時候它的名字必須是API文件中寫的名字,這樣才能GET到該引數。Alipay不允許自定義引數,否則會導致驗證失敗,因此需要嚴格遵守文件中的命名格式,該引數名在各版本中可能會有所不同。