Web Sitesine USDT ile Ödeme Nasıl Eklenir? Adım Adım Rehber (2026)
Bir web sitesine USDT ile ödeme eklemek, kredi kartı entegrasyonundan daha karmaşık değildir; hatta çoğu zaman daha kısadır. Bu rehberde bir ödeme geçidi kullanarak sıfırdan çalışan bir akış kuruyoruz: hesap açmaktan webhook'u doğrulamaya kadar.
Neden USDT?
USDT (Tether), değeri ABD dolarına sabitlenmiş bir stablecoin'dir. Bitcoin veya Ether ile ödeme almanın en büyük sorunu fiyat oynaklığıdır: müşteri öderken 100 dolar eden tutar, siz cüzdanınıza baktığınızda 93 dolar olabilir. USDT'de bu sorun yoktur; 100 USDT bugün de yarın da yaklaşık 100 dolardır. Bu yüzden dünya genelinde kripto ile yapılan ticari ödemelerin büyük kısmı stablecoin'lerle, özellikle USDT ile yapılır.
USDT birden fazla blok zincirinde bulunur. TRC-20 (TRON ağı) sürümü, düşük işlem ücreti ve saniyeler içinde onay süresi nedeniyle günlük ödemelerde en yaygın kullanılan sürümdür. Ethereum ağındaki ERC-20 sürümünde ağ ücretleri yoğun zamanlarda onlarca dolara çıkabilir; TRON'da bu maliyet çoğu zaman birkaç doların altında kalır. Ayrıntılar için TRC-20 USDT nedir yazısına bakın.
Akış nasıl çalışır?
Bir kripto ödeme geçidi kullanırken akış üç tarafı içerir: siteniz (sunucunuz), ödeme geçidi ve müşteri. Sıra şöyledir:
- Müşteri sitenizde "Kripto ile öde" düğmesine basar.
- Sunucunuz ödeme geçidine fatura oluştur isteği gönderir (tutar, geri bildirim adresi).
- Geçit, bu faturaya özel bir TRON adresi ve hazır bir ödeme sayfası bağlantısı döner.
- Müşteri ödeme sayfasında QR kodu okutur ya da adresi kopyalar, cüzdanından USDT gönderir.
- Geçit zinciri izler; ödeme göründüğünde sunucunuza imzalı bir webhook gönderir.
- Sunucunuz imzayı doğrular ve siparişi tamamlar.
Kritik nokta: Fatura oluşturma isteği tarayıcıdan değil, sunucunuzdan yapılır. API anahtarınız hiçbir zaman istemciye inmez. Aynı şekilde tutar da sunucuda belirlenir; istemciden gelen tutara güvenilmez.
1. Hesap ve API anahtarı
KriptoGo panelinde ücretsiz bir hesap oluşturun, e-postanızı doğrulayın. Ardından proje adınızı ve site adresinizi girin. Alan adı doğrulaması için üç yöntem vardır: DNS TXT kaydı, sayfaya bir meta etiketi eklemek veya kök dizine küçük bir metin dosyası koymak. Doğrulama tamamlanınca proje onaya gider; onaylandığında panelde iki anahtar görürsünüz:
- apiKey: Fatura oluştururken kullanılır. Hesabınızı tanımlar.
- secretKey: Hiçbir isteğe eklenmez. Yalnızca gelen webhook'ların imzasını doğrulamak için kullanılır.
Her ikisini de ortam değişkeni olarak saklayın (KRIPTOGO_API_KEY, KRIPTOGO_SECRET_KEY). Kaynak koda gömmeyin, sürüm kontrolüne eklemeyin.
2. Sunucudan fatura oluştur
Müşteri ödeme düğmesine bastığında sunucunuz aşağıdaki gibi tek bir istek gönderir. amount USDT cinsindendir; callbackUrl bu faturaya özel webhook adresi, returnUrl ise ödeme sonrası müşterinin döneceği sayfadır.
const r = await fetch('https://kriptogo.com/api/create-invoice', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ apiKey: process.env.KRIPTOGO_API_KEY, amount: 49.90, // USDT callbackUrl: 'https://siten.com/kriptogo-webhook', returnUrl: 'https://siten.com/tesekkurler' }) }); const invoice = await r.json(); // invoice.checkout_url → müşteriyi buraya yönlendir
Yanıtta invoice_id, address, checkout_url ve expires_at alanları gelir. invoice_id değerini siparişinizle birlikte veritabanına yazın; webhook geldiğinde siparişi bu kimlikle bulacaksınız.
3. Müşteriyi ödeme sayfasına yönlendir
Kendi ödeme ekranınızı yazmanız gerekmez. checkout_url hazır bir ödeme sayfasına gider: QR kod, kopyalanabilir adres ve tutar, geri sayım, ağ uyarısı (yalnızca TRC-20) ve ödeme algılandığında otomatik güncellenen durum. Ödeme tamamlandığında müşteri returnUrl adresine yönlendirilir. Sayfa mobil uyumludur ve isterseniz kendi sitenizde bir iframe içine gömebilirsiniz.
Ödeme sayfasında müşteriye gösterilen adres bu faturaya özel ayrılmıştır. Bu, gelen ödemenin hangi siparişe ait olduğunun hatasız eşleşmesini sağlar; müşterinin açıklama alanına sipariş numarası yazmasına gerek kalmaz.
4. Webhook ile siparişi onayla
Ödeme zincirde onaylandığında KriptoGo, callbackUrl adresinize JSON gövdeli bir POST gönderir. Gövdede invoice_id, status, amount, paid_amount ve tx_hash bulunur. İsteğin gerçekten KriptoGo'dan geldiğini doğrulamak için X-Kriptogo-Signature başlığındaki HMAC-SHA256 imzasını kontrol edersiniz:
app.use('/kriptogo-webhook', express.json({ verify: (req, res, buf) => { req.rawBody = buf.toString('utf8'); } })); app.post('/kriptogo-webhook', async (req, res) => { const expected = crypto.createHmac('sha256', process.env.KRIPTOGO_SECRET_KEY) .update(req.rawBody).digest('hex'); const got = req.get('X-Kriptogo-Signature') || ''; if (got.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(got), Buffer.from(expected))) { return res.status(401).send('bad signature'); } res.sendStatus(200); // önce yanıt ver const { invoice_id, status, paid_amount } = req.body; if (status === 'PAID') await siparisiTamamla(invoice_id, paid_amount); // idempotent });
Üç kurala dikkat edin:
- İmzayı ham gövde üzerinden hesaplayın. Gövdeyi önce nesneye çevirip sonra tekrar metne dönüştürürseniz boşluklar değişir ve imza tutmaz.
- Hemen 200 dönün, uzun işleri sonra yapın. E-posta gönderme, stok düşme gibi işlemler yanıttan sonra arka planda çalışsın. Yanıt 10 saniyeyi geçerse teslimat başarısız sayılır ve yeniden denenir.
- İdempotent olun. Yeniden deneme mekanizması nedeniyle aynı bildirim iki kez gelebilir. Sipariş zaten tamamlanmışsa ikinci bildirimde hiçbir şey yapmayın. Ürünü iki kez teslim etmeyin.
Ayrıntılı örnekler için webhook imza doğrulama rehberine bakın. PHP ve Python örnekleri dökümanda hazır.
5. Test et ve canlıya al
Küçük tutarlı bir fatura oluşturun (örneğin 1 USDT), ödeme sayfasını açın ve kendi cüzdanınızdan ödeyin. Kontrol listesi:
- Webhook sunucunuza ulaştı mı? (Yerel geliştirmede dışarıya açık bir adres gerekir; yoksa
GET /api/status/:iducunu birkaç saniyede bir sorgulayarak da sonucu alabilirsiniz.) - İmza doğrulaması geçti mi? Yanlış bir secret ile 401 döndüğünü de test edin.
- Sipariş otomatik tamamlandı mı, müşteri
returnUrlsayfasına döndü mü? - Aynı webhook'u elle ikinci kez gönderdiğinizde sipariş ikinci kez işlenmiyor mu?
Sık yapılan hatalar
- API anahtarını ön yüze koymak.
NEXT_PUBLIC_,VITE_gibi öneklerle başlayan değişkenler tarayıcıya iner. Anahtar yalnızca sunucuda kalmalıdır. - Tutarı istemciden almak. Kötü niyetli bir kullanıcı 100 USDT'lik ürünü 1 USDT'lik fatura ile satın alabilir. Tutarı her zaman kendi veritabanınızdan belirleyin.
- Webhook'u doğrulamadan siparişi onaylamak. Webhook adresinizi bilen herkes sahte "ödendi" isteği gönderebilir. İmza kontrolü zorunludur.
- paid_amount'u yok saymak. Müşteri toleransın içinde biraz eksik gönderebilir. Siparişi onaylarken
paid_amountile kendi tutarınızı karşılaştırın. - Yanlış ağ. Müşteriye yalnızca TRC-20 (TRON) ağını kullanmasını açıkça söyleyin. Hazır ödeme sayfası bu uyarıyı gösterir; kendi arayüzünüzü yazıyorsanız siz de gösterin.
Sık sorulan sorular
Kendi ödeme sayfamı yazmam gerekiyor mu?
Hayır. Fatura oluşturma yanıtındaki checkout_url adresine yönlendirmeniz yeterlidir. QR kodlu, geri sayımlı, mobil uyumlu ödeme sayfası hazır gelir ve iframe içine gömülebilir.
Entegrasyon ne kadar sürer?
İki uç nokta ve bir webhook olduğu için çoğu geliştirici 30 dakikanın altında tamamlar. Sitesini Lovable, Cursor veya ChatGPT gibi araçlarla yapanlar için panelde hazır bir kurulum promptu vardır.
Müşteri ödemeyi TRX ile yapabilir mi?
Evet. Ödeme sayfası güncel kur üzerinden TRX karşılığını da gösterir; USDT ve TRX ödemeleri otomatik algılanır.
Ödemeyi ne zaman alırım?
Ödeme zincirde onaylandığı an panel bakiyenize yazılır. Bakiyenizi istediğiniz zaman kendi TRON cüzdan adresinize çekebilirsiniz.
KriptoGo ile 30 dakikada kripto ödeme al
Kurulum ücreti yok, aylık ücret yok. Yalnızca başarılı tahsilattan %1.
