API’yi kullanmak için bu sayfaya ihtiyacınız yok. Bir davranışın neden öyle olduğunu merak ettiğinizde okuyun — dokümantasyondaki kuralların çoğu buradaki kararlardan çıkar.

Teknoloji yığını

Tasarım, Hyperswitch’in (Apache-2.0) davranışsal mirası üzerine Türkiye pazarına özel bir yeniden kuruluştur: intent/attempt modeli ve yönlendirme DSL’i oradan gelir; taksit, valör, mutabakat ve KVKK katmanı yerlidir.

Dört ilke

  1. Modüler monolit, mikroservis değil. ~17 modül tek süreçte yaşar; her modülün kendi DbContext’i, kendi migration geçmişi vardır ve modüller birbirine yalnız Contracts arayüzleriyle bağlanır (mimari testlerle zorlanır). Panel bile API’ye HTTP’yle değil, aynı süreçteki komut yoluyla gider.
  2. Offline-first istemci, sunucu zaman otoritesi. Saha cihazı beyan eder, sunucu karar verir; yasal zaman damgası yalnız sunucu saatinden çıkar.
  3. Hiçbir operasyonel kayıt silinmez. Olay defterleri, denemeler, alacaklar, denetim izi — silme yetkisi veritabanında geri alınmıştır. İptal/kaldırma damgalanır.
  4. İki katmanlı kiracı izolasyonu. Uygulama katmanında otomatik kiracı süzgeci ve Postgres satır düzeyi güvenliği (RLS). Uygulama, RLS’i atlayamayan kısıtlı bir rolle bağlanır; açılışta canlı bir bekçi bunu doğrular — süper kullanıcıyla bağlanmış üretim süreci hiç açılmaz.

Bir isteğin yolu

Sıra bilinçlidir: denetim katmanı kimlik katmanını sarar ki rol reddi (403) bile “kim neyi denedi” olarak kaydedilsin; idempotency kimlikten sonra gelir ki anahtarlar kiracıya bağlansın ve yetkisiz istek başkasının anahtarını yakamasın.

Olaylar: defter + outbox + canlı sinyal

Bir ödeme sonuçlandığında üç şey aynı transaction’da yazılır: durum değişikliği, silinemez olay defteri kaydı ve webhook’un outbox mesajı. Teslimat sonra gelir — commit olmuşsa olay eninde sonunda teslim edilir (en az bir kez), commit olmamışsa hiçbir şey sızmamıştır. Panelin canlı akışı ise ayrı ve en-iyi-çaba bir sinyaldir: pg_notify yalnız “yenile” der, veri taşımaz; panel veriyi her zaman kiracı-izoleli sorgu yolundan okur.

Para ve zaman sözleşmeleri

  • Para her zaman kuruş cinsinden long’dur; yüzdesel hesaplar ondalıkta yapılıp bankacı yuvarlamasıyla kuruşa döner. Tek yönlü yuvarlama, milyonlarca işlemde taraflı sapma biriktirir.
  • Zaman damgaları UTC saklanır; gelen +03:00 yazımı sınırda UTC’ye indirgenir. “Gün” kavramı (gün sonu raporları, süre bitimleri, ekstre günleri) Türkiye saatiyle hesaplanır — Türkiye 2016’dan beri kalıcı UTC+3’tedir.
  • İş günü hesapları (valör, itiraz süresi) hafta sonu ve platformca yüklenen banka tatillerini atlar.

Türkçe, birinci sınıf sorun olarak

Kod tabanının en sık tekrarlanan dersi büyük İ harfidir: "İade" satırını ekstrede tanımak, kara listede ısparta@… ile isparta@…’yı doğru ayırmak, CSV’leri Excel’in Türkçe yereli için BOM’lu ve noktalı virgül ayraçlı üretmek, tutar girişinde 199,90’ı kabul etmek — hepsi merkezî yardımcılarla çözülür ve testle korunur. Vekilin charset başlığını ezmesi bile sorun giderme tablosundadır.

PCI sınırı

Varsayılan akış banka-hosted 3DS’tir: kart verisi Poyra’ya hiç uğramaz, checkout yalnız BIN (ilk 6 hane) görür. Kartın Poyra’dan geçtiği direct akış ve kart kasası kodda hazırdır ama hizmet sağlayıcı PCI sertifikasyonu tamamlanana dek kapalı tutulur — canlıya çıkış listesinin maddesidir. Kasa, ayrı bir şifreleme anahtarı kullanır; anahtar kaybı kartları tasarım gereği geri getirilemez kılar.