使用第三方支付回调时SESSION失效的问题

来源:互联网 发布:电脑翻墙软件 编辑:程序博客网 时间:2024/05/17 03:27

最近使用支付宝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不允许自定义参数,否则会导致验证失败,因此需要严格遵守文档中的命名格式,该参数名在各版本中可能会有所不同。

1 1
原创粉丝点击