From 7ed1e4f30ba4d8204152cb157ceaee07374da080 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 17 三月 2025 14:29:14 +0800
Subject: [PATCH] fix: 修改支付方式选择

---
 packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue |  123 ++++++----------------------------------
 1 files changed, 19 insertions(+), 104 deletions(-)

diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
index a343098..4e927c5 100644
--- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
+++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -13,17 +13,12 @@
 </template>
 
 <script setup lang="ts">
-import IconWeixin from '../../../assets/icon-weixin-pay.png';
-import IconAliPay from '../../../assets/icon-alipay.png';
-import {
-  useLifeRechargeContext,
-  SetLifePayOrderPayTypeInput,
-  LifeRechargeConstants,
-  GetPayOrderForJsAPIInput,
-} from '@life-payment/core-vue';
-import { useQuery } from '@tanstack/vue-query';
+import IconWeixin from '../../assets/icon-weixin-pay.png';
+import IconAliPay from '../../assets/icon-alipay.png';
+import { LifeRechargeConstants } from '@life-payment/core-vue';
 import { Toast as NutToast } from '@nutui/nutui-taro';
-import { onMounted, reactive, ref, computed } from 'vue';
+import { computed, toRef } from 'vue';
+import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType';
 
 defineOptions({
   name: 'SelectPayTypeView',
@@ -55,106 +50,26 @@
   (e: 'payOrderForJsAPISuccess'): void;
 }>();
 
-const state = reactive({
-  show: false,
-  msg: '',
+const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
+  openId: toRef(props, 'openId'),
+  isInWeChat: toRef(props, 'isInWeChat'),
+  isH5: toRef(props, 'isH5'),
+  appId: toRef(props, 'appId'),
 });
 
-const { blLifeRecharge } = useLifeRechargeContext();
-
-async function handleAliPay() {
-  try {
-    let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.AliPay);
-    if (res) {
-      location.href = res;
-    }
-  } catch (error) {}
+function handleAliPay() {
+  invokeAliPay(props.orderNo);
 }
 
-async function handleWeixinPay() {
-  if (props.isH5) {
-    if (props.isInWeChat) {
-      handleWeixinPayByJsApi();
-    } else {
-      // try {
-      //   let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.WxPay);
-      //   if (res) {
-      //     location.href = res;
-      //   }
-      // } catch (error) {}
-      state.msg = '璇峰湪寰俊涓墦寮�';
-      state.show = true;
-    }
-  }
+function handleWeixinPay() {
+  invokeWeixinPay(props.orderNo);
 }
 
-async function handleWeixinPayByJsApi() {
-  try {
-    let params: GetPayOrderForJsAPIInput = {
-      orderNo: props.orderNo,
-      lifePayType: blLifeRecharge.constants.LifePayTypeEnum.WxPay,
-      openId: props.openId,
-      attach: Date.now().toString(),
-    };
-    let res = await blLifeRecharge.services.getPayOrderForJsAPI(params);
-    //@ts-ignore
-    if (res && WeixinJSBridge) {
-      //@ts-ignore
-      WeixinJSBridge.invoke(
-        'getBrandWCPayRequest',
-        {
-          appId: props.appId, //鍏紬鍙稩D锛岀敱鍟嗘埛浼犲叆
-          timeStamp: res.timestamp, //鏃堕棿鎴筹紝鑷�1970骞翠互鏉ョ殑绉掓暟
-          nonceStr: res.nonceStr, //闅忔満涓�
-          package: res.package,
-          signType: res.signType, //寰俊绛惧悕鏂瑰紡锛�
-          paySign: res.paySign, //寰俊绛惧悕
-        },
-        function (res) {
-          if (res.err_msg == 'get_brand_wcpay_request:ok') {
-            // 浣跨敤浠ヤ笂鏂瑰紡鍒ゆ柇鍓嶇杩斿洖,寰俊鍥㈤槦閮戦噸鎻愮ず锛�
-            //res.err_msg灏嗗湪鐢ㄦ埛鏀粯鎴愬姛鍚庤繑鍥瀘k锛屼絾骞朵笉淇濊瘉瀹冪粷瀵瑰彲闈狅紝鍟嗘埛闇�杩涗竴姝ヨ皟鐢ㄥ悗绔煡鍗曠‘璁ゆ敮浠樼粨鏋溿��
-          } else if (res.err_msg == 'system:access_denied') {
-            state.msg = '璇峰湪鎵嬫満寰俊涓墦寮�';
-            state.show = true;
-          } else {
-            state.msg = res.err_msg;
-            state.show = true;
-          }
-        }
-      );
-    }
-  } catch (error) {}
-}
-
-async function setLifePayOrderPayType(lifePayType: LifeRechargeConstants.LifePayTypeEnum) {
-  try {
-    let params: SetLifePayOrderPayTypeInput = {
-      orderNo: props.orderNo,
-      lifePayType: lifePayType,
-    };
-    return await blLifeRecharge.services.setLifePayOrderPayType(params);
-  } catch (error) {}
-}
-
-useQuery({
-  queryKey: ['platformServicePayServices/getPayStatusByOrderNo', props.orderNo],
-  queryFn: async () => {
-    return await blLifeRecharge.services.getPayStatusByOrderNo(
-      {
-        orderNo: props.orderNo,
-      },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  onSuccess(data) {
-    if (data !== blLifeRecharge.constants.LifePayStatusEnum.鏈敮浠�) {
-      emit('paySuccess', props.orderNo, props.lifePayOrderType);
-    }
-  },
-  refetchInterval: 1000 * 3,
+useGetPayStatusByOrderNo({
+  orderNo: toRef(props, 'orderNo'),
   enabled: computed(() => props.isFocus),
+  onPaySuccess() {
+    emit('paySuccess', props.orderNo, props.lifePayOrderType);
+  },
 });
 </script>

--
Gitblit v1.9.1