'use client' import {DialogClose, DialogContent} from '@/components/ui/dialog' import {Button} from '@/components/ui/button' import {toast} from 'sonner' import {CreditCard, Loader} from 'lucide-react' import {useState} from 'react' import Image from 'next/image' import {PaymentModalProps} from './payment-modal' import {getTradeMethodDecoration} from '@/lib/models/trade' export function MobilePayment(props: PaymentModalProps) { const decoration = getTradeMethodDecoration(props.method) const [loading, setLoading] = useState(false) // 加载状态 const [paymentInitiated, setPaymentInitiated] = useState(false) // 是否已发起支付 // 处理确认支付 const handleConfirmPayment = () => { try { const newWindow = window.open(props.pay_url, '_blank') if (!newWindow) { toast.error('请允许弹出窗口以完成支付') return } setPaymentInitiated(true) } catch (error) { toast.error('无法打开支付页面') } } // 处理支付完成确认 const handlePaymentComplete = async () => { setLoading(true) await props.onConfirm(true) // 调用父组件传入的确认方法 setLoading(false) } return (
{/* 支付确认信息 */}

确认支付

请确认以下支付信息

{/* 支付详情 */}
订单号 {props.inner_no}
支付方式
{decoration.icon && ( {decoration.text} )} {decoration.text}
支付金额 ¥ {' '} {props.amount.toFixed(2)}
{/* 操作按钮 */}
{!paymentInitiated ? ( // 未发起支付时显示 <> ) : ( // 已发起支付时显示 )}
) }