首先说在ThinkPHP中如何使用接口。我们需要在配置文件中写好支付宝各个参数,例如
$arr1 = include './config.ini.php';
$arr2 = array(
//支付宝配置参数
'alipay_config'=>array(
'partner' =>'', //成功申请支付宝接口后获取到的PID;
'key'=>'',//成功申请支付宝接口后获取到的Key
'sign_type'=>strtoupper('MD5'),
'input_charset'=> strtolower('utf-8'),
'cacert'=> getcwd().'\\cacert.pem',
'transport'=> 'http'
),
'alipay'=>array(
//申请接口时注册的支付宝账号
'seller_email'=>'',
//异步通知页面url,提交到项目的Pay控制器的notifyurl方法;
'notify_url'=>'/Pay/notifyurl',
//页面跳转通知url,提交到项目的Pay控制器的returnurl方法;
'return_url'=>'/Pay/returnurl'
//支付成功跳转到的页面
//'successpage'=>'',
//支付失败跳转到的页面
//'errorpage'=>'',
)
);
return array_merge($arr1,$arr2);
这里的同步通知好理解,就是你支付过后按照步骤支付宝最后会跳转回你的方法,可以在returnurl函数里设置跳转。但是同步通知的时候,如果用户在支付过后突然关闭页面,或者用户到支付宝后用app付款,则就没有办法把支付状态传递给网站,异步通知就是为了弥补这些,当支付宝状态变化后,会立即把状态发给网站后台,notifyurl可以据此直接进行数据库的操作,不会出现掉单的情况,所以,notifyurl必须是公网,是支付宝可以访问到的地址。一般来说,同步负责处理通知,异步负责处理逻辑。双重保险,同步也可以处理逻辑,然后异步再判断一次。同步用的是$_GET得到数据,异步则是$_POST。