Integration Readiness (Pre-Prod)
Production öncesinde payment confirm, routing, sandbox, webhook, trace ve dashboard kontrolleri.
Canlıya çıkmadan önce bu kontrol listesini sandbox’ta doldurmanız yeterli değil; her maddeyi gerçekten denemiş olmanız gerekir. “Bir kez başarılı ödeme” tek başına hazır demek değildir.
Özellikle create ile confirm ayrımı, birden fazla charge denemesi, webhook tekrarı ve sandbox ile production credential ayrımı birlikte doğrulanmalıdır.
Ortam ayrımı
| Kontrol | Beklenen durum |
|---|---|
| Sandbox account | Production account'a bağlı sandbox hesapları dashboard üzerinden ayrıştırılmış olmalı. |
| Sandbox mode | Test hesabı veya sandbox bağlamıyla giden isteklerin gerçek para üretmediği doğrulanmalı. |
| Production secrets | API key, provider credential ve webhook secret değerleri server-side sınırda tutulmalı. |
| Test verisi | Sandbox kart, issuer ve decline senaryoları production verisiyle karıştırılmamalı. |
Sandbox gerçek finansal ağ değildir
Sandbox, production öncesi lifecycle ve provider davranışını test etmek içindir. Gerçek para hareketi, gerçek issuer bağlantısı veya production authorization garantisi üretmez.
Payment ve confirm sözleşmesi
Production öncesinde en az şu akışlar uçtan uca denenmelidir:
- Payment oluşturma ve sonrasında confirm etme.
payment_methodile yeni kart verisi gönderme.- Kaydedilmiş payment method referansıyla confirm etme.
- Confirm sonrası
payment.status,confirmResult.okve adapterlatestResult.kindayrımını doğrulama. - Payment status ile charge attempt sonucunu ayrı yorumlama.
- Checkout Session kullanılıyorsa token tabanlı session ve return/cancel davranışını doğrulama.
Confirm, payment kaydını provider execution sürecine taşıyan adımdır. Payment oluşturmak tek başına provider çağrısı veya finansal sonuç anlamına gelmez.
Routing ve provider readiness
Confirm’te ödeme yöntemi, sağlayıcı adayları ve routing plan oluşur; dashboard’da plan + charge birlikte görülebilmeli.
| Kontrol | Neden önemli? |
|---|---|
| Provider config seçimi | Payment method ve amount/currency için uygun provider/config yoksa confirm başarısız olur. |
| Routing strategy input'u | Tek config veya provider identifier ile yönlendirme yapılıyorsa adayların doğru seçildiği kontrol edilir. |
| Fallback davranışı | Account ayarları ve eligible config havuzu beklenen fallback davranışını üretmeli. |
| Routing plan trace'i | Dashboard'da routing plan ve charge attempt ilişkisi okunabilmeli. |
3DS, decline ve resume davranışı
Pre-prod testleri sadece success senaryosu içermemelidir:
REQUIRES_ACTIONvepaymentNextAction.urlakışı frontend veya hosted checkout tarafından yönetiliyor mu?- Resume/callback sonrası final payment sonucu backend veya webhook üzerinden doğrulanıyor mu?
- Hard decline durumunda kullanıcıdan yeni ödeme yöntemi isteniyor mu?
- Soft decline veya provider unavailable senaryosunda retry/fallback davranışı kontrollü mü?
- Provider timeout sonrası aynı payment için durum sorgulama ve event takibi yapılabiliyor mu?
Webhook ve event handling
Webhook teslimatı gecikebilir veya tekrarlanabilir; merchant handler aynı event’i iki kez işlemeyecek şekilde tasarlanmalıdır.
Minimum kontroller:
- Webhook endpoint doğrulaması tamamlandı.
- Aynı event tekrar gelirse çift işlem yapılmıyor.
- Payment state frontend redirect sonucuna göre değil, backend/API/event doğrulamasına göre kapatılıyor.
- Event payload içinde
payment_id,charge_id,routing_plan_id,request_idvetrace_idgibi korelasyon alanları okunabiliyor. - Webhook delivery gecikmesi yaşanırsa dashboard/payment detail üzerinden manuel inceleme yapılabiliyor.
Dashboard smoke test
Production öncesi bir sandbox payment için dashboard'da şu kontrol yapılmalıdır:
- Transaction detail ekranında payment status doğru görünüyor.
- Charge listesi provider attempt'i gösteriyor.
- Routing card planı ve current index bilgisini gösteriyor.
- Event listesi payment lifecycle olaylarını gösteriyor.
- Event detayında request/trace alanları korele edilebiliyor.
- Webhook portal erişimi yetki ve account bağlamında açılıyor.
- Sandbox account'tan production account'a geçiş net şekilde ayrışıyor.
Veri güvenliği
- PAN ve CVV production loglarına yazılmamalıdır.
- CVV saklanmamalı; vault/kayıtlı kart akışında CVV doğrulama davranışı bu güvenlik sınırıyla düşünülmelidir.
- Provider credential, API key, webhook secret ve signature material dokümana, loga veya dashboard payload'ına ham şekilde taşınmamalıdır.
- Raw provider payload ile normalized result ayrımı ekip içinde net olmalıdır.
- Request/trace ID güvenlik token'ı gibi kullanılmamalıdır.
Pre-prod karar tablosu
| Alan | Go-live öncesi minimum karar |
|---|---|
| Payment lifecycle | Create, confirm, requires_action, success, declined ve refund/cancel senaryolarının uygulama state map'i hazır. |
| Charge model | Bir payment altında birden fazla charge attempt oluşabileceği ekipçe kabul edilmiş. |
| Routing | Provider/config adayları, fallback beklentisi ve hata durumları sandbox'ta doğrulanmış. |
| Webhook | Event handler idempotent, retry ve gecikme durumunda güvenli. |
| Dashboard | Support ve engineering ekipleri payment ID, charge ID, event ve trace ile inceleme yapabiliyor. |
| Sandbox/production | Test verisi ve production credential sınırları ayrı. |
Kritik not
Redirect/return URL sonucu tek başına ödeme başarısı anlamına gelmez. Final karar için server-side payment kaydı, API sorgusu veya event/webhook doğrulaması kullanılmalıdır.