1.配置参数
'alipay'=>array(
//手机支付配置
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者id,以2088开头的16位纯数字
'partner' => '',
//收款支付宝账号,一般情况下收款账号就是签约账号
'seller_id' => '',
//商户的私钥(后缀是.pen)文件相对路径
'private_key_path' => getcwd().'/Application/Api/Conf/key/rsa_private_key.pem',
//支付宝公钥(后缀是.pen)文件相对路径
'ali_public_key_path'=> getcwd().'/Application/Api/Conf/key/alipay_public_key.pem',
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//签名方式 不需修改
'sign_type' => strtoupper('RSA'),
//字符编码格式 目前支持 gbk 或 utf-8
'input_charset'=> strtolower('utf-8'),
//ca证书路径地址,用于curl中ssl校验
//请保证cacert.pem文件在当前文件夹目录中
'cacert' => getcwd().'\\cacert.pem',
//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
'transport' => 'http',
),
2.引入支付宝SDK
public function __construct()
{
parent::__construct();
//引入支付宝APP支付SDK
vendor('Alipay.Corefunction');
vendor('Alipay.RSAfunction');
vendor('Alipay.Notify');
}
3.异步通知
/*
*支付宝异步跳转
*/
public function notifyurl()
{
$alipay_config = C('alipay');
//计算得出通知验证结果
$alipayNotify = new \AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result){//验证成功
$out_trade_no = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
if($trade_status == 'TRADE_FINISHED'||$trade_status == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
}
echo "success"; //请不要修改或删除
}else{
//验证失败
echo "fail";
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
}