支付宝pc端支付回调处理
- 程序执行完后必须打印输出“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"; } } }