From c2356da5538dda595e2320083689adf0e3a8fbc3 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sat, 15 Apr 2023 14:23:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/order/StoreOrderRepository.php | 11 ++++++ .../api/store/order/StoreMicropayOrder.php | 3 +- app/event.php | 1 + .../pay/OrderMicroPaySuccessListen.php | 39 +++++++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 crmeb/listens/pay/OrderMicroPaySuccessListen.php diff --git a/app/common/repositories/store/order/StoreOrderRepository.php b/app/common/repositories/store/order/StoreOrderRepository.php index c2851c07..6fe79553 100644 --- a/app/common/repositories/store/order/StoreOrderRepository.php +++ b/app/common/repositories/store/order/StoreOrderRepository.php @@ -469,6 +469,17 @@ class StoreOrderRepository extends BaseRepository Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->uid, 'type' => 'pay_num', 'inc' => 1]); app()->make(UserBrokerageRepository::class)->incMemberValue($groupOrder->uid, 'member_pay_num', $groupOrder->group_order_id); event('order.paySuccess', compact('groupOrder')); + //店内扫码支付 + if (isset($groupOrder['micro_pay']) && $groupOrder['micro_pay'] == 1) { + $groupOrder->status = 2; + $groupOrder->verify_time = date('Y-m-d H:i:s'); + $user=Db::name('user')->where('uid',$groupOrder->uid)->find(); + Db::transaction(function () use ($groupOrder, $user) { + $this->takeAfter($groupOrder, $user); + $groupOrder->save(); + }); + } + } /** diff --git a/app/controller/api/store/order/StoreMicropayOrder.php b/app/controller/api/store/order/StoreMicropayOrder.php index bbdd5819..6d0b015d 100644 --- a/app/controller/api/store/order/StoreMicropayOrder.php +++ b/app/controller/api/store/order/StoreMicropayOrder.php @@ -150,10 +150,9 @@ class StoreMicropayOrder extends BaseController return $orderCreateRepository->v2CreateOrder(array_search($payType, StoreOrderRepository::PAY_TYPE), $this->request->userInfo(), $cartId, $extend, $mark, $receipt_data, $takes, $couponIds, $useIntegral, $addressId, $post,$source); }); try { - $param['openid']=''; $param['order_sn']=$groupOrder['group_order_sn']; $param['pay_price']=$groupOrder['pay_price']; - $param['attach']=['type'=>1]; + $param['attach']='micro_pay'; $param['body']='店内支付'; $service = new PayService('weixinQr',$param); $code = $service->pay(null); diff --git a/app/event.php b/app/event.php index 98f8b22f..fe668017 100644 --- a/app/event.php +++ b/app/event.php @@ -59,6 +59,7 @@ return [ 'pay_success_user_recharge' => [\crmeb\listens\pay\UserRechargeSuccessListen::class], 'pay_success_user_order' => [\crmeb\listens\pay\UserOrderSuccessListen::class], 'pay_success_order' => [\crmeb\listens\pay\OrderPaySuccessListen::class], + 'pay_success_micro_pay' => [\crmeb\listens\pay\OrderMicroPaySuccessListen::class], 'pay_success_presell' => [\crmeb\listens\pay\PresellPaySuccessListen::class], 'pay_success_meal' => [\crmeb\listens\pay\MealSuccessListen::class], 'community_address'=>[\app\listener\CommunityAddress::class], diff --git a/crmeb/listens/pay/OrderMicroPaySuccessListen.php b/crmeb/listens/pay/OrderMicroPaySuccessListen.php new file mode 100644 index 00000000..49a40dce --- /dev/null +++ b/crmeb/listens/pay/OrderMicroPaySuccessListen.php @@ -0,0 +1,39 @@ + +// +---------------------------------------------------------------------- + + +namespace crmeb\listens\pay; + + +use app\common\repositories\store\order\StoreGroupOrderRepository; +use app\common\repositories\store\order\StoreOrderRepository; +use crmeb\interfaces\ListenerInterface; + +class OrderMicroPaySuccessListen implements ListenerInterface +{ + + public function handle($data): void + { + $orderSn = $data['order_sn']; + $is_combine = $data['is_combine'] ?? 0; + $groupOrder = app()->make(StoreGroupOrderRepository::class)->getWhere(['group_order_sn' => $orderSn]); + if (!$groupOrder || $groupOrder->paid == 1) return; + $orders = []; + if ($is_combine) { + foreach ($data['data']['sub_orders'] as $order) { + $orders[$order['out_trade_no']] = $order; + } + } + $groupOrder['micro_pay']=1; + app()->make(StoreOrderRepository::class)->paySuccess($groupOrder, $is_combine, $orders); + } +}