Bir kullanıcı kripto ödemesini tamamlar, ancak sisteminiz sonraki adımı bilemez. İşlem on-chain olarak vardır, fakat uygulamanız hâlâ “pending” gösterir. Entegrasyonların çoğu burada bozulur. Kripto ödemelerini bir web uygulamasına entegre etmek yalnızca bir buton eklemek değildir. Ödemeyi başlatabilen, asenkron olayları izleyebilen ve işletme durumunu güvenle güncelleyebilen bir sistem tasarlamaktır.
Entegrasyonunuz tek bir soruya tutarlı cevap veremiyorsa production’da başarısız olur: İşletme açısından bir ödeme ne zaman tamamlanmış sayılır?
Bu rehber, bir web uygulamasında kripto ödemelerini uygulamak için gerçekte nelerin gerektiğini ve gateway yaklaşımıyla temiz, production düzeyinde bir akışın nasıl oluşturulacağını açıklar.
“Web Uygulamasına Kripto Ödemeleri” Ne Anlama Gelir?
Web uygulaması, tarayıcı üzerinden sunulan ve genellikle bir frontend (UI) ile backend (sunucu) katmanından oluşan, iş mantığının backend tarafından yönetildiği üründür. Ödeme açısından web uygulamanız şunları yapabilmelidir:
- Ödeme oturumu oluşturmak: tutar, para birimi ve sipariş referansı.
- Kullanıcının gerçekten tamamlayabileceği bir ödeme deneyimi sunmak.
- Asenkron ödeme güncellemelerini almak; yalnızca polling değil, webhook kullanmak.
- Güvenilir kurallara göre siparişi veya hizmet erişimini mutabık hale getirip sonuçlandırmak.
Kripto modeli değiştirir çünkü blokzincir confirmation’ları asenkron çalışır. Kullanıcı geç, eksik veya fazla ödeme yapabilir ve sisteminiz tutarlılığı bozmadan tüm bu durumları yönetmelidir.

Kod Yazmadan Önce Vermeniz Gereken 7 Karar
1. Ürününüz için hangi ödeme modeli uygundur?
Önce bir ana model seçin, daha sonra genişletin:
- Fatura modeli: checkout akışları, SaaS abonelikleri ve sipariş takibi için uygundur.
- Payment Link modeli: ağır bir UI gerektirmeyen basit, paylaşılabilir ödemeler için uygundur.
- Statik adres modeli: kullanıcı başına tekrarlayan yatırımlar için uygundur, ancak sıkı eşleme olmadan mutabakat daha zordur.
Her şeyi aynı anda desteklemeye çalışırsanız karmaşık bir sistem yayınlarsınız.
2. İşletmeniz için “paid” ne anlama gelir?
Önce işletme diliyle tanımlayın, sonra kripto gerçekliğine eşleyin:
- İşlem algılandığında paid mi?
- N confirmation’a ulaştığında paid mi?
- Gateway kurallarına göre tamamen settlement olduğunda paid mi?
Belirsiz bir tanım refund, ihtilaf ve yinelenen fulfillment sorunlarına yol açar.
3. Backend hangi state machine’i kullanacak?
Karmaşık mimariye ihtiyacınız yok, ancak açık durumlara ihtiyacınız var:
- created
- pending
- paid
- expired
- failed
Durumları modellemezseniz sistem zamanla beklenen davranıştan sapar.
4. Eksik ve fazla ödemeyi nasıl yöneteceksiniz?
Politikanızı en baştan belirleyin:
- Eksik ödeme: reddetme, kısmi kredi veya tolerans içinde tamamlama izni.
- Fazla ödeme: bakiyeye ekleme, otomatik refund veya inceleme için işaretleme.
Basit bir kural bile erkenden tanımlanmalıdır.
5. Webhook stratejiniz nedir?
Webhook’lar bir özellik değildir; güvenilir entegrasyonun omurgasıdır.
- Backend HTTPS POST callback’lerini kabul etmelidir
- Gerçekliği doğrulamalı ve idempotent olmalıdır
- Sipariş durumunu tutarlı biçimde güncellemelidir
OxaPay dokümantasyonu ödeme güncellemelerini almak için callback_url kullanımını açıklar; ancak ilke tüm güvenilir gateway’ler için geçerlidir.
6. Bekleme sırasında kullanıcı deneyimi ne gösterecek?
Kullanıcılar belirsizlik yaşadığında kripto checkout’u terk eder. UI şu soruları cevaplamalıdır:
- Sistem işlemi aldı mı?
- Hâlâ confirmation bekleniyor mu?
- Daha uzun sürerse kullanıcı ne yapmalı?
Netlik, terk oranını hızdan daha fazla azaltır.
7. Monitoring ve mutabakat planınız nedir?
Hataların olacağını varsayın:
- geciken confirmation’lar
- geçici webhook kesintileri
- kullanıcının sekmeyi erken kapatması
- ağ yoğunluğu
Ödeme durumunu yeniden kontrol etmek için güvenilir bir yönteme ihtiyacınız vardır.
Örneğin OxaPay bir Payment Information endpoint’i sunar; track_id ile ödeme detaylarını sorgulamaya izin verir ve olaylar geciktiğinde bile sistem tutarlılığını korumaya yardımcı olur.

Web Uygulamaları için Temiz Entegrasyon Mimarisi
Production’a uygun bir akış genellikle şöyledir:
- Kullanıcı uygulamada sipariş oluşturur.
- Backend gateway’den ödeme oturumu ister.
- Frontend kullanıcıyı ödeme sayfasına yönlendirir.
- Kullanıcı cüzdanıyla ödeme yapar.
- Gateway blokzinciri izler ve webhook güncellemeleri gönderir.
- Backend sipariş durumunu günceller ve fulfillment’ı tetikler.
- Webhook gecikirse sistem durumu yeniden mutabık hale getirir.
Bu, hâlâ ölçeklenebilir olan en basit mimaridir.
Adım Adım: OxaPay Faturalarıyla Kripto Ödeme Entegrasyonu
Bu bölüm pratik uygulamaya odaklanır. Temel bileşenler:
- Merchant API Key
- Fatura oluşturma endpoint’i
- Webhook callback URL’si
- Mutabakat için track_id
Adım 1: Backend’den fatura oluşturun
OxaPay fatura endpoint’i:
POST https://api.oxapay.com/v1/payment/invoice
Gönderilecek alanlar:
- amount
- currency
- order reference
- callback_url
Backend track_id ve ödeme URL’sini saklar.
Adım 2: Kullanıcıyı ödeme sayfasına yönlendirin
Frontend şunları yapmalıdır:
- ödeme URL’sini açmak
- bekleme durumu göstermek
- backend confirmation’ına güvenmek
Adım 3: Webhook endpoint’ini doğru uygulayın
Webhook’lar callback_url adresine HTTPS POST ile teslim edilir.
Handler şunları yapmalıdır:
- JSON kabul etmek
- idempotent olmak
- durumu güvenilir biçimde güncellemek
Minimal örnek:
event = request.json
track_id = event["track_id"]
status = event["status"]
if already_processed(event["event_id"]):
return 200
update_payment_state(track_id, status)
mark_processed(event["event_id"])
if status == "paid":
fulfill_order(track_id)
Adım 4: Mutabakat desteği ekleyin
Backend track_id ile ödeme durumunu kontrol edebilmelidir.
GET https://api.oxapay.com/v1/payment/{track_id}
Bu adım, webhook teslimatı geciktiğinde bile sistemin güvenilir kalmasını sağlar.
Adım 5: Production öncesinde test edin
Sandbox ortamında şunları doğrulayın:
- fatura oluşturma
- webhook davranışı
- durum geçişleri
- mutabakat mantığı
Adım 6: Monitoring ile canlıya geçin
İzleyin:
- webhook teslimatı
- ödeme tamamlama oranları
- paid durumuna ulaşma süresi
- hata örüntüleri
Entegrasyon kalitesi burada görünür hale gelir.
Kripto Ödeme Entegrasyonlarını Bozan Yaygın Hatalar
- Kriptoyu anlık kart ödemesi gibi ele almak
- Sipariş durumunu frontend’den güncellemek
- track_id saklamamak
- Eksik/fazla ödemeyi görmezden gelmek
- Confirmation sırasında kötü UX
Yalnızca bu sorunları düzeltmek bile çoğu entegrasyonu belirgin biçimde iyileştirir.
Bu Entegrasyon Modeli Pratikte Neden Çalışır?
Bir web uygulamasının karmaşıklığa değil, netliğe ihtiyacı vardır.
Gateway tabanlı yaklaşım şunları sağlar:
- yapılandırılmış ödeme oluşturma
- asenkron durum güncellemeleri
- güvenilir mutabakat
OxaPay kripto ödeme geçidi fatura tabanlı akışlar, webhook callback’leri ve izlenebilir ödeme durumlarıyla bu modeli destekleyen gateway örneklerinden biridir. Değer yalnızca özelliklerde değil, sistemin gerçek ödeme davranışıyla ne kadar iyi uyum sağladığındadır.
Sonuç
Kripto ödemelerini web uygulamasına entegre etmek sadece “kripto eklemek” değildir; güvenilir bir ödeme yaşam döngüsü oluşturmaktır.
Sistemler “paid” durumunu net tanımladığında, backend odaklı güncellemelere güvendiğinde ve mutabakatı desteklediğinde kripto operasyonel risk yerine istikrarlı bir ödeme yöntemine dönüşür.
Yapılandırılmış bir yaklaşım ve kripto ödeme geçidi asenkron ödemeleri doğru yönettiğinde web uygulamaları ödeme mantığı üzerindeki kontrolünü kaybetmeden ölçeklenebilir.




