'use client'; import React, { useState, useEffect } from 'react'; import { Coins, Copy, CheckCircle2, ExternalLink, RefreshCw, AlertCircle, QrCode } from 'lucide-react'; interface CryptoCheckoutProps { amount: number; currency: string; txId: string; onSuccess: (txHash: string) => void; } export default function CryptoCheckout({ amount, currency, txId, onSuccess }: CryptoCheckoutProps) { const [selectedCoin, setSelectedCoin] = useState('USDT'); const [depositAddress, setDepositAddress] = useState(''); const [isVerifying, setIsVerifying] = useState(false); const [copied, setCopied] = useState(false); const [status, setStatus] = useState<'waiting' | 'verifying' | 'success' | 'error'>('waiting'); // Exchange rate mock: 1 USD = 35 TRY, 1 USDT = 1 USD const cryptoAmount = (currency === 'TL' ? (amount / 35) : amount).toFixed(2); useEffect(() => { // Mock address generation setDepositAddress('0x' + Math.random().toString(16).slice(2, 42)); }, [selectedCoin]); const handleCopy = () => { navigator.clipboard.writeText(depositAddress); setCopied(true); setTimeout(() => setCopied(false), 2000); }; const verifyPayment = async () => { setIsVerifying(true); setStatus('verifying'); try { const response = await fetch('/api/crypto-sweep', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ txId: txId, merchantAddress: '0x123...MERCHANT_WALLET' }) }); const data = await response.json(); if (data.success) { setStatus('success'); onSuccess(data.hashes.merchant); } else { setStatus('error'); } } catch (err) { setStatus('error'); } finally { setIsVerifying(false); } }; return (

Kripto Ödeme

On-Chain Güvenli Transfer

{cryptoAmount} {selectedCoin}

Ağ: Polygon (MATIC)

{status === 'success' ? (

Ödeme Onaylandı!

İşleminiz başarıyla blokzincirine kaydedildi.

) : ( <> {/* QR Code Placeholder */}
Büyüt
{depositAddress}
Önemli Uyarı

Lütfen sadece Polygon (PoS) ağı üzerinden gönderim yapın. Yanlış ağ üzerinden gönderilen varlıklar kurtarılamaz.

Explorer'da Gör
)}
); }