
POS Bağlantıları — kimlik alanları seçilen protokolün kataloğundan üretilir
Kartın nerede girildiği her şeyi belirler
Envantere bakmadan önce tek bir ayrımı oturtmak gerekir, çünkü PCI kapsamınızı, dönüşüm oranınızı ve hangi hesabın hangi akışta aday olacağını bu belirler:Banka-hosted (hosted)
Kart bankanın sayfasında girilir. PCI kapsamı minimaldir — kart verisi
Poyra’ya hiç uğramaz. Varsayılan ve önerilen akış budur.
3DS'li direct
Kart sizin/Poyra’nın formunda toplanır, doğrulama bankada yapılır.
Ödeme sayfası sizde kalır (dönüşüm yüksek) ama PCI kapsamına girersiniz.
confirm-direct çağrısı yalnız direct destekleyen
hesaplara gider.
Adaptör envanteri
Banka sanal POS’ları
Ödeme kuruluşları (yurt içi)
E-ihracat ve test
Tablodaki boşluklar bilinçlidir:
- Posnet, İyzico, Payten, CCPayment, Moka, Tami, ParamPos, AHL Pay ve PayTR banka-hosted kart girişi sunmaz — bu platformlarda kart işyeri tarafında toplanır. Adaptör “desteklemiyor” der ve hosted rotada hesap atlanır; sessizce yanlış bir akışa düşülmez.
- PayTR’da ayrı bir iptal ucu yoktur. Void çağrısı
poyra.not_supporteddöner ve gün içi işlem de iade ucundan geçer. Craftgate’te durum tersidir: ayrı iptal ucu yoktur ama iade ucu gün içi işlemde kendiliğinden CANCEL üretir. - Stripe ve Adyen Türk banka taksidini bilmez; taksitli işlem bu hesaplara hiç yönlendirilmez — aksi hâlde tutar tek çekim alınır ve vade farkı sessizce kaybolurdu.
GET /v1/connectors/catalog ile,
“benim kurulumum bugün ne yapabilir” sorusunu GET /v1/platform/capabilities
ile alırsınız. Katalog kimlik alanlarını da taşır — paneldeki POS ekleme formu
bu şemadan üretilir, bu yüzden yeni bir konnektör eklendiğinde panelde elle
form yazılması gerekmez.
Sertifikasyon durumu
Banka dokümanı yerine protokolün genel deseninden yazılmış adaptörler katalogda, görünen adının sonunda “SERTİFİKASYON BEKLİYOR” ibaresi taşır; koddaki karşılıklarıTODO(cert) işaretleridir.
stripe ve adyen sertifikasyon gerektirmez (kamuya açık, sürümlü satıcı
API’si); mockbank canlıya hiç çıkmaz.
Ortak adaptör sözleşmesi
Her adaptör aynı arayüzü uygular; ödeme çekirdeği bankaya özgü hiçbir şey bilmez:
Banka hata kodları birleşik sözlüğe eşlenir; ham kod
her zaman yanında taşınır.
Konnektör uyum kiti
Sözleşmenin tutulduğunu tek tek konnektör testleri değil, ortak bir uyum kiti kanıtlar. Kit konnektör listesini DI kaydından okur: yeni bir banka eklendiğinde teorilerin verisi kendiliğinden büyür, kimsenin test yazması gerekmez. Her konnektör için zorunlu olan beş madde:- Kayıtlı her konnektör katalogda görünür. Bu kural somut bir arızayı yakaladı: InterVPOS ve Kuveyt Türk DI’a kayıtlıydı ama katalog anahtar listesinde yoktu — panelin “POS bağlantısı ekle” ekranında iki banka hiç görünmüyordu.
- Tanımlayıcı tutarlıdır — anahtar, görünen ad ve yetenek beyanı birbirini tutar.
- Eksik kimlik alanı yapılandırma hatası atar, sessizce yarım istek gitmez.
- Boş ya da kurcalanmış dönüş kabul edilmez (aşağıya bakın).
- Tarayıcıya giden formda sır bulunmaz — mağaza anahtarı, API şifresi ya da imza sırrı müşterinin göreceği alanlara sızmaz.
- Banka erişilemezse yük devretmeye uygun hata doğar, terminal red değil.
Kit ilk koşuşunda 46 vakadan 8’ini kırdı. En ciddi bulgu güvenlikti:
imzasız callback kabul ediliyordu. InterVPOS’ta denetim “hash var ama
tutmuyorsa reddet” biçimindeydi —
Hash alanı hiç gönderilmezse doğrulama
tamamen atlanıyordu. Kuveyt Türk’te ise hiç imza doğrulaması yoktu. Callback
adresi tek kullanımlık 256 bit belirteç taşıdığı için rastgele biri erişemiyordu,
ama ödemeyi yapan müşteri o adresi kendi tarayıcısında görüyordu: bankaya
hiç para göndermeden siparişini ödenmiş gösterebilirdi. Artık imzanın
yokluğu da reddedilir (fail closed), Kuveyt Türk/Vakıf Katılım ailesinde ise
tarayıcı dönüşü tek başına asla başarı sayılmaz — tahsilat
ThreeDModelProvisionGate sunucu teyidiyle kesinleşir.Protokol notları
Konnektör seçerken bilinmesi gereken, davranışı gerçekten değiştiren farklar:Sonucun tarayıcı dönüşünden okunduğu protokoller
Sonucun tarayıcı dönüşünden okunduğu protokoller
Dönüşteki imza tutar bilgisini de kapsıyorsa ayrı bir sunucu çağrısına gerek
yoktur: NestPay, GVP, InterVPOS, PayFor (
ResponseHash) ve
PayNKolay (hashDataV2 — imza tutarı kapsar) böyledir. PayNKolay’da
başarı kodu 2’dir, "00" değil; bu tür sürprizler adaptörde emilir.Sonucun mutlaka sunucudan sorulduğu protokoller
Sonucun mutlaka sunucudan sorulduğu protokoller
PayFlex (
Ptkn ile sonuç servisi), Posnet (OOS üçlemesi),
Kuveyt Türk / Vakıf Katılım (ThreeDModelProvisionGate), CCPayment
(/payment/complete), İyzico (/payment/3dsecure/auth), Moka
(GetDealerPaymentTrxDetailList), Payten (QUERYTRANSACTION), Tami
(/payment/query), ParamPos (TP_WMD_Pay), AHL Pay
(PaymentInquiry), Craftgate, Lidio (hosted: GetHostedPaymentStatus,
direct: FinishPaymentProcess), Stripe ve Adyen.Bu ailede tarayıcıdan gelen alan — imzası geçerli olsa bile — tahsilat
kanıtı sayılmaz. PayTR üçüncü bir yoldadır: sonuç, imzalı bir sunucu
bildirimi olarak gelir ve bildirim ucunun düz metin OK döndürmesi
gerekir, yoksa PayTR göndermeyi tekrarlar.İmzanın özet değil şifre olduğu yer: CCPayment
İmzanın özet değil şifre olduğu yer: CCPayment
Yedi markanın kullandığı bu platformda
hash_key bir SHA özeti değil,
AES-256-CBC ile geri çözülebilir bir şifredir. Doğrulama “yeniden üret
ve eşitle” değil, “çöz ve içine bak” biçimindedir. Testler gidiş-dönüş
tutarlılığını, yanlış sırla çözülememeyi ve başka bir işlemin imzasının
taşınamamasını sabitler.Tutar biçimi konnektörden konnektöre değişir
Tutar biçimi konnektörden konnektöre değişir
Poyra içeride parayı her zaman kuruş cinsinden
long taşır; çeviri
adaptörün işidir. GVP, Kuveyt Türk, Vakıf Katılım ve PayTR kuruş bekler;
ParamPos virgüllü ondalık ister (149,90); Stripe/Adyen sıfır ve üç
ondalıklı para birimlerini ayrıca çevirir. Yanlış biçim, yüz kat fazla ya da
yüz kat eksik çekim demektir — bu yüzden her biri birim testle sabitlenmiştir.Aynı platformun birden çok markası
Aynı platformun birden çok markası
CCPayment (7 marka), Payten/MSU (3 marka), NestPay (12 banka) ve
BOA (Kuveyt Türk + Vakıf Katılım) tek adaptörle çözülür; marka seçimi
hesabın
gateway_base kimlik alanıyla yapılır. Her marka için ayrı adaptör
yazmak, aynı hatayı yedi yerde düzeltmek olurdu.BOA ailesinde fark yalnız XML kök elemanı ve gateway yolu önekindedir; akış,
hash yapısı ve provizyon teyidi ortaktır.Hesap sağlığı ve canary
On dakikada bir çalışan canary işi, tüm aktif hesapları yoklar ve sağlığıhealthy / degraded / down olarak günceller. down hesap
rota kararında otomatik atlanır; sağlık değişimi
panelin canlı akışına uyarı düşürür (“İş POS erişilemiyor — trafik diğer
POS’lara yönlendiriliyor”). Panelden “Test et” düğmesi aynı yoklamayı anında
çalıştırır.
Yoklama ucu her protokolde yoktur: canary şu an nestpay, posnet, stripe,
adyen ve mockbank hesaplarında sağlık yazar. Diğerlerinde sağlık, işlem
sonuçlarından ve elle yapılan değişikliklerden yönetilir — uydurma bir yoklama
çağrısı, olmayan bir güvence verirdi.
Hesap yönetimi API’den de yapılır: POST /v1/connector-accounts (ekleme),
…/{id}/settings (etiket, öncelik, test/canlı modu), …/{id}/credentials
(kimlik yenileme), …/{id}/status (devre dışı bırakma — hesap silinmez),
…/{id}/probe (anında yoklama).