diff --git a/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php b/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php index bc2e7325..9e39addd 100644 --- a/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php +++ b/app/Endpoint/Callback/Http/Controllers/WeChatPayController.php @@ -32,36 +32,41 @@ class WeChatPayController extends Controller return true; } - $attach = json_decode(data_get($message, 'attach'), true); + $attach = json_decode($message['attach'], true); if (! isset($attach['pay_target'])) { return true; } switch ($attach['pay_target']) { - // 支付订单 case 'order': - try { - DB::beginTransaction(); - - (new OrderService())->paySuccess($message['out_trade_no'], [ - 'pay_sn' => $message['transaction_id'], - 'pay_way' => Order::PAY_WAY_WXPAY, - 'pay_at' => Carbon::parse($message['time_end']), - ]); - - DB::commit(); - } catch (BizException|ModelNotFoundException $e) { - DB::rollBack(); - } catch (Throwable $e) { - DB::rollBack(); - - throw $e; - } + $this->handlePaidNotifyForOrder($message); break; } return true; }); } + + /** + * 处理订单支付结果通知 + * + * @param array $message + * @return void + */ + protected function handlePaidNotifyForOrder(array $message): void + { + try { + DB::transaction(function () use ($message) { + (new OrderService())->paySuccess($message['out_trade_no'], [ + 'pay_sn' => $message['transaction_id'], + 'pay_way' => Order::PAY_WAY_WXPAY, + 'pay_at' => Carbon::parse($message['time_end']), + ]); + }); + } catch (ModelNotFoundException|BizException $e) { + } catch (Throwable $e) { + throw $e; + } + } }