From ea211e85a9056e3304866f3281e4ed5f231fb1c9 Mon Sep 17 00:00:00 2001 From: luorijun Date: Fri, 9 May 2025 16:37:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=BE=AE=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=94=9F=E6=88=90=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../composites/purchase/_client/pay.tsx | 57 ++++----- src/components/composites/recharge/index.tsx | 111 +++++++++--------- src/middleware.ts | 1 - 3 files changed, 88 insertions(+), 81 deletions(-) diff --git a/src/components/composites/purchase/_client/pay.tsx b/src/components/composites/purchase/_client/pay.tsx index 078e365..b71b113 100644 --- a/src/components/composites/purchase/_client/pay.tsx +++ b/src/components/composites/purchase/_client/pay.tsx @@ -5,7 +5,7 @@ import alipay from '../_assets/alipay.svg' import wechat from '../_assets/wechat.svg' import balance from '../_assets/balance.svg' import Image from 'next/image' -import {useContext, useRef, useState} from 'react' +import {useContext, useEffect, useRef, useState} from 'react' import {StoreContext, useProfileStore} from '@/components/providers/StoreProvider' import {Alert, AlertDescription} from '@/components/ui/alert' import { @@ -38,6 +38,14 @@ export default function Pay(props: PayProps) { const [open, setOpen] = useState(false) const [payInfo, setPayInfo] = useState() const canvas = useRef(null) + useEffect(() => { + if (canvas.current && payInfo) { + qrcode.toCanvas(canvas.current, payInfo.pay_url, { + width: 200, + margin: 0, + }) + } + }, [payInfo]) const onOpen = async () => { setOpen(true) @@ -48,12 +56,12 @@ export default function Pay(props: PayProps) { let resp: ApiResponse switch (props.method) { - case 'alipay': - resp = await prepareResourceByAlipay(props.resource) - break - case 'wechat': - resp = await prepareResourceByWechat(props.resource) - break + case 'alipay': + resp = await prepareResourceByAlipay(props.resource) + break + case 'wechat': + resp = await prepareResourceByWechat(props.resource) + break } if (!resp.success) { toast.error(`创建订单失败: ${resp.message}`) @@ -62,7 +70,6 @@ export default function Pay(props: PayProps) { } setPayInfo(resp.data) - await qrcode.toCanvas(canvas.current, resp.data.pay_url) } const router = useRouter() @@ -70,19 +77,19 @@ export default function Pay(props: PayProps) { let resp: ApiResponse try { switch (props.method) { - case 'alipay': - resp = await createResourceByAlipay({ - trade_no: payInfo!.trade_no, - }) - break - case 'wechat': - resp = await createResourceByWechat({ - trade_no: payInfo!.trade_no, - }) - break - case 'balance': - resp = await createResourceByBalance(props.resource) - break + case 'alipay': + resp = await createResourceByAlipay({ + trade_no: payInfo!.trade_no, + }) + break + case 'wechat': + resp = await createResourceByWechat({ + trade_no: payInfo!.trade_no, + }) + break + case 'balance': + resp = await createResourceByBalance(props.resource) + break } if (!resp.success) { @@ -175,14 +182,10 @@ export default function Pay(props: PayProps) { ) : (
-
+
{payInfo ? ( props.method === 'alipay' - ?