https://odeme.ornek.com/l/{slug}. Kimlik doğrulaması yoktur — kiracı, adresin
sonundaki tahmin edilemez slug’dan (96 bit rastgelelik) çözülür.
Checkout kart verisi toplamaz. Kart numarası, son kullanma ve CVV bankanın
kendi güvenli sayfasında girilir; Poyra sayfasında yalnızca kartın ilk 6 hanesi
(BIN) sorulur — o da sadece taksit seçeneklerini göstermek için. Bu tasarım PCI
kapsamını en dar seviyede tutar.
Sayfanın akışı
1. Bağlantı çözümü
Sayfa açıldığında slug iki adımda çözülür: önce kiracıdan bağımsız bir arama tablosundanslug → kiracı eşlemesi bulunur, sonra kiracı bağlamı kurulup linkin
kendisi izole veriden okunur. Link kapatılmışsa, süresi dolmuşsa veya kullanım
sınırına ulaşmışsa müşteri nedenini açıkça görür; form hiç gösterilmez.
İşyeri markası (logo, renk, destek iletişimi) sayfaya uygulanır. Logo da slug
üzerinden sunulur — adres satırındaki başka bir parametreyle başka işyerinin
logosu istenemez.
Tutarı siz belirlemediyseniz (açık tutarlı bağlantı) müşteri tutarı lira
olarak girer; kuruşa çevirmeyi sunucu yapar.
2. Taksit seçenekleri
Müşteri kartının ilk 6 hanesini girer — sayfa “kart numaranızın tamamını girmeyin” diye açıkça uyarır. BIN, kataloğa göre banka / kart programı / kart tipine çevrilir ve taksit şemalarına göre seçenekler listelenir:- Her seçenekte toplam tutar, aylık taksit ve varsa “+X ₺ vade farkı” görünür.
- Aynı taksit sayısını birden çok POS sunuyorsa en düşük toplamı veren gösterilir.
- Debit / ön ödemeli kartlara ve katalogda tanınmayan BIN’lere taksit önerilmez; müşteri tek çekimle devam edebilir.
noscript yedekleri vardır.
3. Ödeme ve bankaya gidiş
“Öde” düğmesi sunucu tarafında şunları yapar:- Link yeniden çözülür ve kullanılabilirliği yeniden denetlenir.
- Sabit tutarlı linkte müşterinin gönderdiği tutar yok sayılır — tutar her zaman sunucudaki kayıttan gelir; adres satırı veya form kurcalamaya kapalıdır.
- Taksit, linkin izin verdiği aralığa kıstırılır.
- Ödeme oluşturulur ve link ile ödeme arasındaki bağ bankaya gitmeden önce sunucuda yazılır.
- Confirm çalışır: risk kapısı → rota kararı → banka formu.
GET yönlendirmesi ister — müşteri doğrudan 302 ile gider. Türk bankalarının
sanal POS’ları ise imzalı alanlarla POST bekler — checkout, gizli alanları
içeren ve kendini otomatik gönderen bir ara sayfa üretir (“Bankanızın güvenli
ödeme sayfasına yönlendiriliyorsunuz…”, betiksiz tarayıcı için düğme yedeği ile).
Banka dönüşünün nasıl doğrulandığı ayrı bir sayfada:
Banka dönüşü ve 3DS.
4. Sonuç sayfası
Banka dönüşü işlendikten sonra müşteri/l/{slug}/sonuc adresine yönlendirilir.
Kritik ilke: sonuç, adres satırından değil defterden okunur. Query string’deki
status yalnızca yönlendirme kolaylığıdır; sayfa ödemeyi kimliğiyle yükler ve
gerçek durumu gösterir — adres satırını elle değiştirmek sahte dekont üretmez.
- Başarıda dekont: karttan çekilen toplam (vade farkı dahil), tarih (TR saatiyle), taksit, işyeri adı ve işlem numarası. Bağlantının kullanım sayacı burada artar; müşteri sayfayı hiç açmasa bile iki dakikada bir çalışan güvence işi sayacı yine kapatır — ayrıntı Ödeme bağlantıları sayfasında.
- Hatada teknik ayrıntı sızdırılmaz; birleşik hata kodu müşteri diline çevrilir: “Kartınızın limiti yetersiz”, “Bankanız işlemi onaylamadı” gibi. Açık tutarlı bağlantıda “Tekrar dene” bağlantısı girilen tutarı korur. İşyeri markasında destek telefonu/e-postası tanımlıysa burada gösterilir.