queue = config('queue.names.recharge'); } public function handle(PaySuccessEvent $event) { switch ($event->userType) { case UserType::CUSTOMER: $this->customerRechargeSuccess($event); break; case UserType::SELLER: $this->sellerRechargeSuccess($event); break; } } public function sellerRechargeSuccess(PaySuccessEvent $event) { /** @var ShopRecharge $recharge */ $recharge = ShopRecharge::sn($event->rechargeSn)->first(); if ($recharge->isCompleted()) { return; } DB::beginTransaction(); try { $recharge->setCompleted(); // 如果订单没有充值成功,则退出 if (!$recharge->isSuccess()) { Log::error('RechargeListener店主充值没有成功', [ 'recharge_sn' => $event->rechargeSn ]); DB::commit(); return; } SellerWalletService::recharge($recharge); DB::commit(); } catch (JingCaiException $e) { DB::rollBack(); Log::error('RechargeListener店主充值失败(JingCaiException):', [ 'error' => $e->getMessage(), 'tradeInfo' => $event->tradeInfo, 'recharge_id' => $recharge->id, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); } catch (\Exception $e) { DB::rollBack(); Log::error('RechargeListener店主充值失败(Exception):', [ 'error' => $e->getMessage(), 'tradeInfo' => $event->tradeInfo, 'recharge_id' => $recharge->id, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); } } public function customerRechargeSuccess(PaySuccessEvent $event) { $pay = Pay::create($event->payType); if (!$pay->tradeSuccessed($event->tradeInfo)) { Log::error('RechargeListener彩民交易未成功,不予处理', [ 'tradeInfo' => $event->tradeInfo, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); return; } Log::info('customerRechargeSuccess', [ 'tradeInfo' => $event->tradeInfo, 'rechargeSn' => $event->rechargeSn, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); $rechargeSn = $event->tradeInfo['out_trade_no']; /** @var CustomerRecharge $recharge */ $recharge = CustomerRecharge::sn($rechargeSn)->first(); if ($recharge->isCompleted()) { return; } DB::beginTransaction(); try { // 保存第三方交易信息 $trade = Trade::saveCustomerTrade($recharge, $event->tradeInfo); if ($trade->id < 1) { Log::error('RechargeListener彩民保存第三方交易数据失败', [ 'tradeInfo' => $event->tradeInfo, 'recharge_id' => $recharge->id, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); DB::commit(); return; } $recharge->setCompleted(); // 如果订单没有充值成功,则退出 if (!$recharge->isSuccess()) { Log::error('RechargeListener彩民充值没有成功111', [ 'recharge_sn' => $event->rechargeSn ]); DB::commit(); return; } CustomerWalletService::recharge($recharge); // 如果有订单,则处理订单支付状态 if ($recharge->order_id > 0) { /** @var OrderService $orderService */ $orderService = app(OrderService::class); $orderService->setOrderPaySuccess($recharge->order); } DB::commit(); } catch (JingCaiException $e) { DB::rollBack(); Log::error('RechargeListener彩民充值失败(JingCaiException):', [ 'error' => $e->getMessage(), 'tradeInfo' => $event->tradeInfo, 'recharge_id' => $recharge->id, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); } catch (\Exception $e) { DB::rollBack(); Log::error('RechargeListener彩民充值失败(Exception):', [ 'error' => $e->getMessage(), 'tradeInfo' => $event->tradeInfo, 'recharge_id' => $recharge->id, 'payType' => $event->payType, 'tradeRole' => $event->userType, ]); } } }