diff --git a/src/components/TopUpModal.tsx b/src/components/TopUpModal.tsx index 501e7f4..d4716d0 100644 --- a/src/components/TopUpModal.tsx +++ b/src/components/TopUpModal.tsx @@ -53,8 +53,13 @@ export default function TopUpModal({ method, onClose }: TopUpModalProps) { const { formatAmount, currencySymbol, convertAmount, convertToRub, targetCurrency } = useCurrency() const [amount, setAmount] = useState('') const [error, setError] = useState(null) + const [selectedOption, setSelectedOption] = useState( + method.options && method.options.length > 0 ? method.options[0].id : null + ) const popupRef = useRef(null) + const hasOptions = method.options && method.options.length > 0 + const minRubles = method.min_amount_kopeks / 100 const maxRubles = method.max_amount_kopeks / 100 @@ -121,7 +126,7 @@ export default function TopUpModal({ method, onClose }: TopUpModalProps) { status: string expires_at: string | null }, unknown, number>({ - mutationFn: (amountKopeks: number) => balanceApi.createTopUp(amountKopeks, method.id), + mutationFn: (amountKopeks: number) => balanceApi.createTopUp(amountKopeks, method.id, selectedOption || undefined), onSuccess: (data) => { const redirectUrl = data.payment_url || (data as any).invoice_url if (redirectUrl) { @@ -141,6 +146,7 @@ export default function TopUpModal({ method, onClose }: TopUpModalProps) { const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setError(null) + if (hasOptions && !selectedOption) { setError(t('balance.selectPaymentOption', 'Выберите способ оплаты')); return } const amountCurrency = parseFloat(amount) if (isNaN(amountCurrency) || amountCurrency <= 0) { setError(t('balance.invalidAmount', 'Invalid amount')); return } const amountRubles = convertToRub(amountCurrency) @@ -180,6 +186,33 @@ export default function TopUpModal({ method, onClose }: TopUpModalProps) {
+ {hasOptions && method.options && ( +
+ +
+ {method.options.map((option) => ( + + ))} +
+
+ )} +