From 6bc53a7251d5a323475757358d00ff051f166497 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期一, 10 三月 2025 10:24:17 +0800 Subject: [PATCH] fix: 二期需求 --- packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue | 110 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 81 insertions(+), 29 deletions(-) diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue index 4309f0c..c825572 100644 --- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue +++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue @@ -4,16 +4,17 @@ <img class="select-pay-type-view-item-icon" :src="IconAliPay" /> <div class="select-pay-type-view-item-text">鏀粯瀹濇敮浠�</div> </div> - <div class="select-pay-type-view-item" v-if="showWeixinPay" @click="handleWeixinPayByJsApi"> + <div class="select-pay-type-view-item" v-if="showWeixinPay" @click="handleWeixinPay"> <img class="select-pay-type-view-item-icon" :src="IconWeixin" /> <div class="select-pay-type-view-item-text">寰俊鏀粯</div> </div> + <NutToast :msg="state.msg" v-model:visible="state.show" type="warn" cover /> </div> </template> <script setup lang="ts"> -import IconWeixin from '../../../assets/icon-weixin-pay.png'; -import IconAliPay from '../../../assets/icon-alipay.png'; +import IconWeixin from '../../assets/icon-weixin-pay.png'; +import IconAliPay from '../../assets/icon-alipay.png'; import { useLifeRechargeContext, SetLifePayOrderPayTypeInput, @@ -21,6 +22,9 @@ GetPayOrderForJsAPIInput, } from '@life-payment/core-vue'; import { useQuery } from '@tanstack/vue-query'; +import { Toast as NutToast } from '@nutui/nutui-taro'; +import { onMounted, reactive, ref, computed } from 'vue'; +import Taro from '@tarojs/taro'; defineOptions({ name: 'SelectPayTypeView', @@ -35,6 +39,7 @@ isInWeChat?: boolean; isH5?: boolean; appId?: string; + isFocus?: boolean; }; const props = withDefaults(defineProps<Props>(), { @@ -50,6 +55,11 @@ ): void; (e: 'payOrderForJsAPISuccess'): void; }>(); + +const state = reactive({ + show: false, + msg: '', +}); const { blLifeRecharge } = useLifeRechargeContext(); @@ -67,17 +77,21 @@ if (props.isInWeChat) { handleWeixinPayByJsApi(); } else { - try { - let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.WxPay); - if (res) { - location.href = res; - } - } catch (error) {} + // 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 handleWeixinPayByJsApi() { +async function getPayOrderForJsAPI() { try { let params: GetPayOrderForJsAPIInput = { orderNo: props.orderNo, @@ -86,26 +100,63 @@ attach: Date.now().toString(), }; let res = await blLifeRecharge.services.getPayOrderForJsAPI(params); - //@ts-ignore - if (res && WeixinJSBridge) { + return res; + } catch (error) {} +} + +async function handleWeixinPayByJsApi() { + try { + let res = await getPayOrderForJsAPI(); + + if (res) { //@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锛屼絾骞朵笉淇濊瘉瀹冪粷瀵瑰彲闈狅紝鍟嗘埛闇�杩涗竴姝ヨ皟鐢ㄥ悗绔煡鍗曠‘璁ゆ敮浠樼粨鏋溿�� + 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) {} } @@ -133,10 +184,11 @@ ); }, onSuccess(data) { - if (data === blLifeRecharge.constants.LifePayStatusEnum.宸叉敮浠�) { + if (data !== blLifeRecharge.constants.LifePayStatusEnum.鏈敮浠�) { emit('paySuccess', props.orderNo, props.lifePayOrderType); } }, refetchInterval: 1000 * 3, + enabled: computed(() => props.isFocus), }); </script> -- Gitblit v1.9.1