首先,官方的SDK中没有passback_params参数,需要自己修改/wappay/buildermodel/AlipayTradeWapPayContentBuilder.php文件
在AlipayTradeWapPayContentBuilder.php中添加如下代码
private $passback_params;
public function getPassbackParams(){
return $this->passback_params;
}
public function setPassbackParams($passback_params){
$this->passback_params = $passback_params;
$this->bizContentarr['passback_params'] = $passback_params;
}
然后在/wappay/pay.php中添加setPassbackParams();方法
当需要传递的参数较多时,可将数组编码后传递给支付宝,再由支付宝发送给服务端
由于支付宝的开发文档中规定passback_params的值需要经过Url编码后传递
这里可以使用http_build_query($arr)将数组转换为Url编码后的字符串
<?php
$arr = Array('uid'=>'1', 'type'=>'2');
echo http_build_query($arr);
?>
数组就会被编码成为
uid=1&type=2
通过parse_str($str,$arr);可以将Url编码后的字符串重新恢复为数组
<?php
$str = 'uid=1&type=2';
parse_str($str,$data);
print_r($data);
?>
在/wappay/pay.php里面添加setPassbackParams();,并将数组编码后传入
在接收异步通知页面接收passback_params参数并转换为数组
这样就可以解决在支付过程中需要传递数组的问题了