Başlarken
Test & Sandbox

Test Ortamı

Test ortamı canlının aynısıdır — aynı uçlar, aynı alan sözleşmesi, aynı hata zarfı, aynı webhook mekanizması. Farkı gerçek para hareket etmemesi ve banka tarafının simüle edilmesidir.

Taban adres tektir; ortamı anahtarınız belirler.

https://api-gateway.lunixi.com/api/v1

Kodunuzda değişecek tek şey kullandığınız anahtardır. Teste özel bir taban adres, ayrı bir istemci ya da farklı bir çağrı biçimi yoktur — canlıda çalışan kod test ortamında da çalışır.

Ortam ayrımı anahtarla olur

Test için ayrı bir Ed25519 anahtar çifti üretir ve public anahtarı TEST ortamına kaydedersiniz. Anahtar kimliği mk_test_sk_… biçimindedir ve o anahtarla bastığınız token at_test_ önekiyle gelir.

OrtamAnahtar kimliğiToken öneki
Testmk_test_sk_…at_test_…
Canlımk_live_sk_…at_live_…
⚠️

Anahtarlar ortamlar arasında taşınmaz. Test anahtarınızla basılan token canlı veriye erişemez; ortam, token'ı hangi anahtarla bastığınızdan çözülür. Bu bilinçli bir korumadır: yanlışlıkla canlı para hareketi tetiklemenizi engeller.

Publishable anahtarlar da ortam taşır: mk_test_pk_… / mk_live_pk_…. Web SDK'ları hangi anahtarı verdiyseniz o ortama konuşur. → Web SDK Genel Bakış

TestBank — yerleşik test bankası

Ödeme testleri için gerçek bir bankaya ihtiyacınız yoktur. TestBank platformun içinde çalışır ve dışarıya tek bir HTTP isteği atmaz; tüm yanıtlar süreç içinde üretilir.

Önemli olan şu: TestBank yanıtları klasik PSP şemasında döner. Yani handler → parse → normalize → decline sınıflandırması zinciri gerçek bir bankayla birebir aynı yoldan akar. Testiniz, canlıda çalışacak kodu sınar.

Senaryolar

3DS simülatör ekranında senaryoyu seçersiniz; finalize sonucu ona göre üretilir.

SenaryoSonuçDecline kodu
SUCCESSBaşarılı—
AUTH_FAILED3D doğrulama başarısızTB_3D_AUTH_FAILED
INSUFFICIENT_FUNDSYetersiz bakiye51
DO_NOT_HONORBanka onaylamadı05
EXPIRED_CARDKartın süresi dolmuş54
STOLEN_CARDKayıp/çalıntı kart43
LIMIT_EXCEEDEDLimit aşıldı61
TIMEOUTBanka yanıt vermiyor—

AUTH_FAILED dışındaki senaryolarda 3D doğrulaması başarılı sayılır (mdStatus=1) ve hata charge aşamasında döner — gerçek hayattaki sıralamanın aynısı.

Yemek kartı akışını sınamak için TestMealCard aynı desende çalışır.

Rastgelelik yoktur

🚫

TestBank'ta rastgelelik yasaktır — aynı girdi her zaman aynı sonucu verir. Bu, testlerinizin kararsız (flaky) olmamasını sağlar. "Bazen geçiyor bazen kalıyor" diye bir durum görürseniz sebebi TestBank değildir.

Cüzdan tarafı

Cüzdan için test simülatörleri entegrasyon olarak kayıtlıdır — yani gerçek bir banka entegrasyonuyla aynı yoldan geçerler, ayrı bir kod dalı değildir.

⚠️

Gelen transfer simülasyonunda senderName göndermezseniz para hesaba geçmez — işlem üçüncü taraf incelemesine düşer. Bu bir hata değil, gerçek para-güvenliği kapısıdır ve test ortamında da çalışır.

Fraud tarafı

Fraud kararları test ortamında da sizin yayınladığınız akışla üretilir. Sihirli test değerleri yoktur.

🚫

Test ortamında kural yayınlamazsanız allow almazsınız. Yapılandırılmamış merchant fraud.decision.unconfigured koduyla politika varsayılanını (tipik review) alır — canlıdaki davranışın aynısı. Test ortamı bu kapıyı gevşetmez. → Akışlar ve Çözümleme

Geçmişe dayanan kuralları sınamak için test ortamında da olay beslemeniz gerekir; POST /api/v1/fraud/events/transactions olmadan hız kuralları tetiklenmez.

Webhook'ları test etme

Test ortamı webhook'ları canlıdakiyle aynı imza şemasını, aynı yeniden deneme politikasını ve aynı x-lunixi-* başlıklarını kullanır. Yerel geliştirmede endpoint'iniz genel internetten erişilebilir olmalıdır — bir tünel (ngrok vb.) kullanın.

⚠️

Teslimat servisi özel ağ adreslerini reddeder: localhost, 127.0.0.0/8, 10/8, 172.16/12, 192.168/16. Bu kural test ortamında da geçerlidir. → Webhook'lar

Canlıya geçerken

  1. Canlı ortam için yeni bir anahtar çifti üretin ve kaydedin
  2. Uygulamanızı canlı anahtarla imzalayacak şekilde yapılandırın — taban adres değişmez
  3. Fraud akışını canlı kapsamda yayınlayın — test ortamındaki yayın canlıya geçmez
  4. Webhook endpoint'inizi canlı ortam için ayrıca oluşturun
  5. Gölge modda bir süre gözleyin, sonra kararları uygulamaya alın

→ Entegrasyon Rehberi

İlgili