İç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 öneki | Varsayılan base |
|---|---|---|
| Iyzico | PAYMENT_IYZICO_* | sandbox-api.iyzipay.com |
| Moka United | PAYMENT_MOKA_* | service.refmokaunited.com |
Ortak:
| Değişken | Açıklama |
|---|---|
PAYMENT_CALLBACK_URL | 3DS banka dönüşü; boşsa {AUTH_EMAIL_LINK_BASE_URL}/api/v1/payments/3ds/callback |
PAYMENT_FIELD_ENCRYPTION_KEY | Kart alanı AES-256-GCM (openssl rand -base64 32); production zorunlu |
Akış
BIN check → 3DS initialize → banka sayfası → callback → 3DS auth (tamamlama)
- BIN — kart ilk 6–8 hane; taksit seçenekleri
- Initialize — sağlayıcıya 3DS başlatma; HTML/redirect döner
- Callback — banka POST; sunucu auth’u tamamlar
- 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)
| Metot | API | Web |
|---|---|---|
| POST | /api/v1/payments/3ds/callback | /payments/3ds/callback |
| POST | /api/v1/payments/webhook/iyzico | /payments/webhook/iyzico |
Iyzico webhook: X-IYZ-SIGNATURE-V3 → PAYMENT_IYZICO_SECRET_KEY.
Korumalı (payments:charge / payments:list)
| Metot | Yol | İzin |
|---|---|---|
| POST | /api/v1/payments/bin-check | charge |
| POST | /api/v1/payments/3ds/initialize | charge |
| POST | /api/v1/payments/3ds/auth | charge |
| POST | /api/v1/payments/calc-amount | charge |
| GET | /api/v1/payments/transactions | list |
| GET | /api/v1/payments/transactions/:reference | charge 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
| Metot | Yol |
|---|---|
| GET/POST | /api/v1/settings/payment |
| GET/PATCH | /api/v1/settings/payment/:provider |
Kod
internal/application/paymentinternal/infrastructure/paymentinternal/adapters/http/handler/payment_handler.gointernal/adapters/goui(checkout / transactions ekranları)