- Üye işyeri onayı sonrası test ve canlı terminal bilgilerini ayrı yönetin.
- Ödeme kaydını bankaya yönlendirmeden önce yerel ve tekil olarak oluşturun.
- Tarayıcı dönüşüne güvenmeyin; banka sonucu sunucu tarafında doğrulayın.
- İptal, iade, taksit, komisyon ve hesaba geçiş mutabakatını ödeme kaydında izleyin.
Banka sanal POS entegrasyonu nasıl çalışır?
Sanal POS, e-ticaret sitesinin kartla ödeme isteğini bankanın ödeme altyapısına iletmesini sağlar. 3D Secure akışında müşteri bankanın doğrulama ekranına yönlendirilir, kart sahibi doğrulandıktan sonra işlem sonucu siteye döner. Sipariş yalnızca bu dönüş sayfasına bakılarak başarılı sayılmamalıdır; banka tarafından gönderilen alanlar ve mümkünse sunucu tarafı sorgu sonucu doğrulanmalıdır.
Entegrasyonun merkezinde siparişten ayrı bir ödeme kaydı bulunmalıdır. Bir siparişte birden fazla başarısız deneme, farklı taksit seçimi veya kısmi iade olabilir.
Başvuru ve teknik bilgiler
Doğrudan banka sanal POS’u kullanmak için bankayla üye işyeri sözleşmesi ve internet ödeme yetkisi gerekir. Başvuru onayından sonra banka test ve canlı ortam için terminal, işyeri, kullanıcı, şifre veya anahtar bilgileri sağlar.
- İşyeri ve terminal numarasını doğrulayın.
- Test ve canlı URL’leri karıştırmayın.
- 3D Secure kullanım modelini bankayla netleştirin.
- Başarılı ve başarısız dönüş URL’lerini HTTPS olarak tanımlayın.
- Taksit ve kart programı yetkilerini kontrol edin.
- İptal, iade ve işlem sorgu servislerini test edin.
Akbank, POS Net başvurusu onaylandıktan sonra sanal POS entegrasyon dokümanlarına erişim sağlandığını belirtir. Garanti BBVA’nın geliştirici portalı ise 3D Secure’un kart sahibinin banka ekranında doğrulanması olduğunu açıklar.
Siparişten ayrı ödeme kayıt modeli
| Alan | Açıklama | Neden gerekir? |
|---|---|---|
| payment_id | Yerel tekil ödeme kimliği | Her denemeyi ayrı izlemek için |
| order_id | Bağlı sipariş | Bir siparişte birden fazla deneme olabilir |
| bank_order_id | Bankaya gönderilen tekil referans | Mükerrer işlem önleme ve sorgu |
| amount/currency | Çekilecek tutar ve para birimi | Dönüş değerini doğrulamak için |
| installment | Taksit sayısı | Komisyon ve banka sonucu için |
| status | Başlatıldı, doğrulama, başarılı, başarısız, iade | Yaşam döngüsünü izlemek için |
| auth/reference | Onay ve işlem referansları | İptal, iade ve mutabakat için |
Ödeme sayfası açılmadan önce kayıt oluşturulmalı; tutar sunucu tarafındaki sipariş toplamından alınmalıdır. Tarayıcıdan gelen fiyat bilgisi güvenilir kabul edilmemelidir.
3D Secure akışı
- Sunucu sipariş ve ödeme tutarını doğrular.
- Banka için gerekli hash/imza alanları oluşturulur.
- Müşteri bankanın 3D doğrulama ekranına yönlendirilir.
- Kart sahibi OTP veya bankanın yöntemiyle doğrulanır.
- Banka sonucu tanımlı dönüş adresine gönderir.
- Sunucu imza, sipariş referansı, tutar ve durum alanlarını kontrol eder.
- Gerekliyse finansal işlem tamamlama veya sorgu çağrısı yapılır.
- Sipariş yalnızca doğrulanmış sonuçla ödenmiş durumuna alınır.
Garanti BBVA Sanal POS dokümanı, 3D Secure sırasında kart sahibinin bankanın doğrulama ekranına yönlendirildiğini açıklar.
Callback ve sunucu tarafı doğrulaması
Müşteri başarılı sayfaya ulaşmadan sekmeyi kapatabilir; aynı şekilde saldırgan başarı URL’sini doğrudan açabilir. Bu nedenle sipariş durumu yalnızca URL’ye göre değiştirilmemelidir.
- Bankanın hash veya MAC imzasını doğrulayın.
- Dönen sipariş referansının yerel ödeme kaydıyla aynı olduğunu kontrol edin.
- Tutar, para birimi ve taksit değerini yerel kayıtla karşılaştırın.
- Banka cevap kodu ve işlem durumunu birlikte değerlendirin.
- Aynı callback ikinci kez gelirse ikinci sipariş işlemi yapmayın.
- Şüpheli veya belirsiz durumda banka işlem sorgu servisini kullanın.
Taksit, komisyon ve müşteriye gösterilen fiyat
Bankanın kart programı, taksit yetkisi ve komisyon oranı üye işyeri sözleşmesine göre değişebilir. Ödeme ekranındaki taksit seçenekleri sabit metin olarak yazılmamalı; aktif banka ve işletme kurallarından üretilmelidir.
Vade farkı müşteriye yansıtılacaksa toplam tutar ödeme isteği oluşturulmadan önce siparişe uygulanmalı ve müşteriye açıkça gösterilmelidir. Bankadan dönen tutarla sipariş toplamı farklıysa işlem otomatik kabul edilmemelidir.
İptal, tam iade ve kısmi iade
İptal genellikle işlem gün sonuna girmeden önce kullanılır; iade ise tamamlanmış işlemin müşteriye geri ödenmesidir. Bankanın tanımları ve süreleri farklı olabileceği için tek “geri ödeme” butonu arka planda işlem durumuna göre doğru servisi seçmelidir.
- Orijinal banka işlem referansını saklayın.
- İptal/iade tutarını sunucuda doğrulayın.
- Toplam iade orijinal tahsilatı aşmamalı.
- Kısmi iadeleri ayrı hareketler olarak kaydedin.
- Banka cevabı kesinleşmeden siparişi iade edildi saymayın.
- İade sonucu ve kullanıcı bilgisini denetim kaydına yazın.
Banka mutabakatı
Sitede başarılı görünen ödemeler ile bankanın gün sonu/işlem raporu düzenli karşılaştırılmalıdır. Bağlantı kesintisi, callback kaybı veya manuel banka işlemi nedeniyle farklılık olabilir.
| Karşılaştırma | Bulunabilecek sorun |
|---|---|
| Yerel başarılı ödeme ↔ banka başarılı işlem | Callback veya kayıt hatası |
| Yerel tutar ↔ banka tutarı | Vade farkı veya kuruş uyuşmazlığı |
| İptal/iade hareketleri | Tekrarlı ya da eksik geri ödeme |
| Komisyon ve hesaba geçiş | Sözleşme oranı veya valör farkı |
| Sipariş numarası ↔ banka referansı | Yanlış sipariş eşleşmesi |
Kart güvenliği ve PCI DSS
Kart numarası, CVV ve hassas doğrulama verileri uygulama günlüklerine, e-postaya veya veritabanına gelişigüzel kaydedilmemelidir. Kart verisini doğrudan işleyen sistemlerin güvenlik kapsamı ciddi biçimde büyür. Mümkün olan yapılarda bankanın veya ödeme hizmet sağlayıcısının barındırdığı ödeme ekranı, yönlendirme veya token yaklaşımı tercih edilebilir.
PCI Security Standards Council, PCI DSS’nin kart verisini saklayan, işleyen veya ileten kuruluşlar için teknik ve operasyonel gereksinimler tanımladığını belirtir. PCI SSC işyeri kaynakları güncel sorumlulukların değerlendirilmesi için kullanılmalıdır.
Ödeme sayfasındaki harici JavaScript dosyaları da risk oluşturur. PCI SSC’nin e-ticaret güvenliği rehberleri ödeme sayfası scriptlerinin yetkilendirilmesi, bütünlüğünün kontrolü ve değişikliklerin izlenmesine dikkat çeker.
Birden fazla banka sanal POS’u
Çoklu POS yapısında banka adaptörleri ortak bir ödeme arayüzü altında çalışır. Kart BIN’i, taksit, komisyon, başarı oranı veya işletme kuralına göre banka seçilebilir. Ancak müşteri ödeme yaparken banka değiştirmek, aynı sipariş için farklı referanslar ve tutarsız durumlar oluşturabilir; yönlendirme kararı ödeme başlatılmadan önce verilmelidir.
- Banka bazlı aktiflik ve bakım durumu
- Kart programı ve taksit matrisi
- Komisyon/vade farkı kuralı
- Test ve canlı anahtar yönetimi
- İptal ve iade adaptörü
- Banka bazlı mutabakat raporu
Yaygın sorunlar ve çözüm yönü
| Belirti | Muhtemel neden | Kontrol |
|---|---|---|
| Para çekildi, sipariş başarısız | Callback kayboldu veya yanlış yorumlandı | Banka işlem sorgusu ve yerel ödeme referansı |
| Sipariş başarılı, bankada işlem yok | Başarı URL’sine güvenildi | Hash, cevap kodu ve sunucu doğrulaması |
| Hash doğrulaması başarısız | Alan sırası, encoding veya anahtar hatası | Bankanın resmî örneği ve canlı/test anahtarı |
| Taksit görünmüyor | Üye işyeri yetkisi veya kart programı yok | Banka sözleşmesi ve taksit matrisi |
| İade iki kez yapıldı | İade isteği tekilleştirilmemiş | İade hareketi unique anahtarı ve banka sorgusu |
Ne zaman teknik destek gerekir?
Ödeme alındığı hâlde siparişlerin açık kaldığı, hash hatalarının görüldüğü, canlı ve test anahtarlarının karıştığı, taksit tutarlarının farklı hesaplandığı veya iptal/iade işlemlerinin mükerrerleştiği durumlarda sipariş, ödeme ve banka logları birlikte incelenmelidir. Kart verisi güvenliğiyle ilgili belirsizlik varsa canlıya çıkmadan önce mimari gözden geçirilmelidir.
Sık sorulan sorular
Sanal POS için bankaya ayrıca başvurmak gerekir mi?
Evet. Doğrudan banka sanal POS’unda üye işyeri başvurusu ve teknik erişim bilgileri gerekir.
3D Secure başarılıysa ödeme kesin başarılı mıdır?
Kullandığınız banka modeline göre doğrulama ve finansal işlem durumları ayrı olabilir. Resmî cevap alanları ve işlem sorgusu esas alınmalıdır.
Kart bilgilerini kendi sunucumda tutabilir miyim?
Bu yaklaşım ciddi güvenlik ve PCI DSS yükümlülükleri doğurur. Kart verisinin saklanmaması ve banka/uyumlu sağlayıcı ekranının kullanılması genellikle daha güvenli bir mimaridir.
Sanal POS ödeme akışını güvenli kurun
Banka başvurusundan 3D Secure doğrulamasına, taksit, iptal, iade ve mutabakata kadar ödeme entegrasyonunu sipariş sisteminize bağlayalım.
Sanal POS Entegrasyonu İçin Teklif Alın
İyi yazılım budur