1、支付报支付回调方法
public function aliPayNotify()
{
try {
$app = PayService::alipay();
$collect = $app->verify();
$collectData = $collect->all();//获取支付宝回调参数
$this->writeAliPayLog($collectData, true);
if ($collectData['trade_status'] != 'TRADE_SUCCESS' &&
$collectData['trade_status'] != 'TRADE_FINISHED') {
return;
}
//订单处理
} catch (InvalidSignException $e) {
$this->writeAliPayLog($e->raw, false);
echo "fail";
}
}
2、日志写入方法
private function writeAliPayLog($data, $success = true)
{
$logStr = "-----[APP]-ASYN-异步序列号-" . $this->indexNo . $this->dateTime . "-异步开始->BEGIN:-------" . "\n";
if ($success === false) {
$logStr = " ->APP-ASYN------验签是否通过:NO\n";
if (count($data) > 0 && array_key_exists("trade_no", $data)) {
$logStr .= " ->APP-DATA-LIST-支付宝交易号:" . $data["trade_no"] . "\n";
$logStr .= " ->APP-DATA-LIST-商户订单号:" . $data["out_trade_no"] . "\n";
} else {
$logStr .= " ->APP-ASYN------非法请求:拒绝响应\n";
}
} else {
$logStr .= " ->APP-ASYN------验签是否通过:OK\n";
// 写入支付完成时间
$logStr .= " ->APP-DATA-LIST-交易时间:" . $this->payTime . "\n";
$logStr .= " ->APP-DATA-LIST-商户订单号:" . $data["out_trade_no"] . "\n";
$logStr .= " ->APP-DATA-LIST-买家支付宝账号:" . $data["buyer_logon_id"] . "\n";
$logStr .= " ->APP-DATA-LIST-交易金额:" . $data["total_amount"] . "\n";
$logStr .= " ->APP-DATA-LIST-实收金额:" . $data["receipt_amount"] . "\n";
$logStr .= " ->APP-DATA-LIST-买家付款的金额:" . $data["buyer_pay_amount"] . "\n";
$logStr .= " ->APP-DATA-LIST-支付宝交易号:" . $data["trade_no"] . "\n";
// $logStr .= " ->APP-DATA-LIST-交易状态:" . $data["return_code"] . "\n";
$logStr .= " ->APP-DATA-LIST-交易状态:" . $data["trade_status"] . "\n";
//$logStr .= " ->APP-DATA-LIST-设备类型:" . $data["trade_type"] . "\n";
}
$logStr .= " -----[APP]-ASYN-异步序列号-" . $this->indexNo . "-异步完成->END-----------\n";
file_put_contents($this->aliPayNotifyPath, $logStr, FILE_APPEND);//this->aliPayNotifyPath日志地址
}