From c7ab8c4fca1c690f3e5536dff520eaa9c4010fd1 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期一, 24 三月 2025 19:52:35 +0800 Subject: [PATCH] fix: 三期bug --- packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue | 147 +++++------------------------------------------- 1 files changed, 16 insertions(+), 131 deletions(-) diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue index c825572..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,139 +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(), - }; - 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