diff --git a/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php b/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php index 17240214..336806cf 100644 --- a/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php +++ b/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php @@ -36,21 +36,23 @@ class WeChatPayController extends Controller $payLog = DB::transaction(function () use ($message) { $payService = new PayService(); - if (data_get($message, 'result_code') !== 'SUCCESS') { + if (data_get($message, 'result_code') === 'SUCCESS') { return $payService->handleSuccessByPaySerialNumber($message['out_trade_no'], [ - 'pay_sn' => $message['transaction_id'] ?? null, + 'out_trade_no' => $message['transaction_id'], + 'pay_at' => Carbon::parse($message['time_end']), + ]); + } elseif (data_get($message, 'result_code') === 'FAIL') { + return $payService->handleFailedByPaySerialNumber($message['out_trade_no'], [ + 'out_trade_no' => $message['transaction_id'] ?? null, 'failed_reason' => '['.$message['err_code'].']'.$message['err_code_des'], ]); } - - return $payService->handleFailedByPaySerialNumber($message['out_trade_no'], [ - 'out_trade_no' => $message['transaction_id'], - 'pay_at' => Carbon::parse($message['time_end']), - ]); }); - if ($payLog->payable instanceof Order) { - OrderPaid::dispatchIf($payLog->payable->isPaid(), $payLog->payable); + $payable = $payLog?->payable; + + if ($payable instanceof Order) { + OrderPaid::dispatchIf($payable->isPaid(), $payable); } } catch (ModelNotFoundException | BizException $e) { } catch (Throwable $e) {