支付宝电脑支付回调处理,下面是异步通知的处理方法,注意:
- 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
参考文档:https://docs.open.alipay.com/270/105902/
public function alipay_notify()
{
if (request()->isPost()) {
import('alipay.pagepay.service.AlipayTradeService');
$arr = request()->param();
$alipaySevice = new \AlipayTradeService(config('alipay'));
$alipaySevice->writeLog(var_export(request()->param(), true));
$result = $alipaySevice->check($arr);
if ($result) {//验证成功
//商户订单号
$out_trade_no = $arr['out_trade_no'];
//支付宝交易号
$trade_no = $arr['trade_no'];
if ($arr['trade_status'] == 'TRADE_FINISHED' || $arr['trade_status'] == 'TRADE_SUCCESS') {
//查询订单是否真的已支付
import('alipay.pagepay.buildermodel.AlipayTradeQueryContentBuilder');
$RequestBuilder = new \AlipayTradeQueryContentBuilder();
$RequestBuilder->setOutTradeNo($out_trade_no);
$response = $alipaySevice->Query($RequestBuilder);
if ($response->trade_status == 'TRADE_SUCCESS' || $response->trade_status == 'TRADE_FINISHED') {
}
}
echo "success";
} else {
//验证失败
echo "fail";
}
}
}