'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('SOL'); const [depositAddress, setDepositAddress] = useState(''); const [isVerifying, setIsVerifying] = useState(false); const [copied, setCopied] = useState(false); const [status, setStatus] = useState<'waiting' | 'verifying' | 'success' | 'error'>('waiting'); const [cryptoAmount, setCryptoAmount] = useState('Hesaplanıyor...'); useEffect(() => { async function fetchExchangeRate() { if (currency === 'TL' || currency === 'TRY') { try { const symbol = selectedCoin === 'SOL' ? 'SOLTRY' : 'USDTTRY'; const res = await fetch(`https://api.binance.com/api/v3/ticker/price?symbol=${symbol}`); const data = await res.json(); const rate = parseFloat(data.price); setCryptoAmount((amount / rate).toFixed(selectedCoin === 'SOL' ? 4 : 2)); } catch (error) { // Fallback rate if API fails setCryptoAmount((amount / 5500).toFixed(selectedCoin === 'SOL' ? 4 : 2)); } } else { // If already USD or USDT, 1:1 ratio setCryptoAmount(amount.toFixed(2)); } } fetchExchangeRate(); }, [amount, currency]); useEffect(() => { // Use a real valid Solana test wallet so Phantom doesn't say "Invalid Address" setDepositAddress('5pLH1tqZhx8p8WpZ18yr28N42KXB3FXVPzZ9ceCtpBVe'); }, [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: '5pLH1tqZhx8p8WpZ18yr28N42KXB3FXVPzZ9ceCtpBVe' // A placeholder valid Solana Devnet 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ğ: Solana (Devnet)

{status === 'success' ? (

Ödeme Onaylandı!

İşleminiz başarıyla blokzincirine kaydedildi.

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

Lütfen sadece test amaçlı Solana (Devnet) ağı üzerinden test SOL'ü gönderimi yapın. Gerçek ağ veya USDT bu ortamda kabul edilmez.

Explorer'da Gör
)}
); }