İçindekiler

Sağlayıcılar

Aktif sağlayıcı panelden seçilir: Ayarlar → Ödeme (notifications:settings izni).

Kimlik bilgileri yalnızca env’dedir; panel secret tutmaz.

SağlayıcıEnv önekiVarsayılan base
IyzicoPAYMENT_IYZICO_*sandbox-api.iyzipay.com
Moka UnitedPAYMENT_MOKA_*service.refmokaunited.com

Ortak:

DeğişkenAçıklama
PAYMENT_CALLBACK_URL3DS banka dönüşü; boşsa {AUTH_EMAIL_LINK_BASE_URL}/api/v1/payments/3ds/callback
PAYMENT_FIELD_ENCRYPTION_KEYKart alanı AES-256-GCM (openssl rand -base64 32); production zorunlu

Akış

BIN check → 3DS initialize → banka sayfası → callback → 3DS auth (tamamlama)
  1. BIN — kart ilk 6–8 hane; taksit seçenekleri
  2. Initialize — sağlayıcıya 3DS başlatma; HTML/redirect döner
  3. Callback — banka POST; sunucu auth’u tamamlar
  4. Auth / complete — işlem kaydı güncellenir (başarılı / başarısız)

İstemci IP sunucudan alınır (c.IP()); body’den client IP kabul edilmez.

HTTP uçları

Public (imza / banka)

MetotAPIWeb
POST/api/v1/payments/3ds/callback/payments/3ds/callback
POST/api/v1/payments/webhook/iyzico/payments/webhook/iyzico

Iyzico webhook: X-IYZ-SIGNATURE-V3PAYMENT_IYZICO_SECRET_KEY.

Korumalı (payments:charge / payments:list)

MetotYolİzin
POST/api/v1/payments/bin-checkcharge
POST/api/v1/payments/3ds/initializecharge
POST/api/v1/payments/3ds/authcharge
POST/api/v1/payments/calc-amountcharge
GET/api/v1/payments/transactionslist
GET/api/v1/payments/transactions/:referencecharge veya list

Panel: /dashboard/payments/checkout, /dashboard/payments/transactions.

Dayanıklılık

  • Outbox / retry ve reconciliation altyapısı ödeme use-case’leriyle entegre
  • Hassas kart alanları pkg/fieldenc + PAYMENT_FIELD_ENCRYPTION_KEY
  • Idempotency middleware mutasyonlarda (callback politikası ayrı)

Ayarlar API

MetotYol
GET/POST/api/v1/settings/payment
GET/PATCH/api/v1/settings/payment/:provider

Kod

  • internal/application/payment
  • internal/infrastructure/payment
  • internal/adapters/http/handler/payment_handler.go
  • internal/adapters/goui (checkout / transactions ekranları)