支付寶電腦支付回調處理,下面是異步通知的處理方法,注意:
- 程序執行完後必須打印輸出“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";
}
}
}