From 2525f53411b131ecb9926409a523f0e44df6d20c Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 21 五月 2025 16:18:33 +0800
Subject: [PATCH] fix: 修改ui

---
 packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue |  148 +++++--------------------------------------------
 1 files changed, 16 insertions(+), 132 deletions(-)

diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
index 435a7c9..2b50807 100644
--- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
+++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -15,16 +15,10 @@
 <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 { LifeRechargeConstants } from '@life-payment/core-vue';
 import { Toast as NutToast } from '@nutui/nutui-taro';
-import { onMounted, reactive, ref, computed } from 'vue';
-import Taro from '@tarojs/taro';
+import { computed, toRef } from 'vue';
+import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType';
 
 defineOptions({
   name: 'SelectPayTypeView',
@@ -35,11 +29,11 @@
   lifePayOrderType?: LifeRechargeConstants.LifePayOrderTypeEnum;
   showAliPay?: boolean;
   showWeixinPay?: boolean;
-  openId?: string;
   isInWeChat?: boolean;
   isH5?: boolean;
   appId?: string;
   isFocus?: boolean;
+  getOpenId?: () => Promise<string>;
 };
 
 const props = withDefaults(defineProps<Props>(), {
@@ -56,140 +50,30 @@
   (e: 'payOrderForJsAPISuccess'): void;
 }>();
 
-const state = reactive({
-  show: false,
-  msg: '',
+const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
+  getOpenId: toRef(props, 'getOpenId'),
+  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;
-    }
+    await invokeAliPay(props.orderNo);
   } catch (error) {}
 }
 
 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;
-    }
-  } else if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP) {
-    handleWeixinPayByMini();
-  }
-}
-
-async function getPayOrderForJsAPI() {
   try {
-    let params: GetPayOrderForJsAPIInput = {
-      orderNo: props.orderNo,
-      lifePayType: blLifeRecharge.constants.LifePayTypeEnum.WxPay,
-      openId: props.openId,
-      attach: Date.now().toString(),
-      payAppId: props.appId,
-    };
-    let res = await blLifeRecharge.services.getPayOrderForJsAPI(params);
-    return res;
+    await invokeWeixinPay(props.orderNo);
   } catch (error) {}
 }
 
-async function handleWeixinPayByJsApi() {
-  try {
-    let res = await getPayOrderForJsAPI();
-
-    if (res) {
-      //@ts-ignore
-      if (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 handleWeixinPayByMini() {
-  try {
-    let res = await getPayOrderForJsAPI();
-
-    if (res) {
-      Taro.requestPayment({
-        timeStamp: res.timestamp,
-        nonceStr: res.nonceStr,
-        package: res.package,
-        signType: res.signType as any,
-        paySign: res.paySign,
-        success: function (res) {
-          console.log('res: ', res);
-          // if(res.errMsg)
-        },
-        fail: function (res) {},
-      });
-    }
-  } 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