import React, { useState, useCallback } from 'react'; import { ModalFooter, ModalBody, Button, Input, Box, Grid } from '@chakra-ui/react'; import { getPayCode, checkPayResult } from '@/web/support/wallet/pay/api'; import { useToast } from '@/web/common/hooks/useToast'; import { useQuery } from '@tanstack/react-query'; import { useRouter } from 'next/router'; import { getErrText } from '@fastgpt/global/common/error/utils'; import { useTranslation } from 'react-i18next'; import Markdown from '@/components/Markdown'; import MyModal from '@/components/MyModal'; import { priceMd } from '@/web/common/system/staticData'; const PayModal = ({ onClose }: { onClose: () => void }) => { const router = useRouter(); const { t } = useTranslation(); const { toast } = useToast(); const [inputVal, setInputVal] = useState(''); const [loading, setLoading] = useState(false); const [payId, setPayId] = useState(''); const handleClickPay = useCallback(async () => { if (!inputVal || inputVal <= 0 || isNaN(+inputVal)) return; setLoading(true); try { // 获取支付二维码 const res = await getPayCode(inputVal); new window.QRCode(document.getElementById('payQRCode'), { text: res.codeUrl, width: 128, height: 128, colorDark: '#000000', colorLight: '#ffffff', correctLevel: window.QRCode.CorrectLevel.H }); setPayId(res.payId); } catch (err) { toast({ title: getErrText(err), status: 'error' }); } setLoading(false); }, [inputVal, toast]); useQuery( [payId], () => { if (!payId) return null; return checkPayResult(payId); }, { enabled: !!payId, refetchInterval: 3000, onSuccess(res) { if (!res) return; toast({ title: '充值成功', status: 'success' }); router.reload(); } } ); return ( {!payId && ( <> {[10, 20, 50, 100].map((item) => ( ))} { setInputVal(Math.floor(+e.target.value)); }} > )} {/* 付费二维码 */} {payId && 请微信扫码支付: {inputVal}元,请勿关闭页面} {!payId && ( <> )} ); }; export default PayModal;