Lewati ke konten

Siklus Pembayaran

POST /api/v1/admin/payments
{ "method": "cash" | "qris" | "transfer", "amount": 94000, "orderId": "..." }
→ Payment aggregate dibuat (status: created)
POST /api/v1/admin/payments/:id
{ "type": "confirm" | "provider_settled" | "provider_declined"
| "provider_ambiguous", "commandId": "..." }
→ State machine transition
cash: created → confirm → settled
qris: created → confirm → pending → provider_settled → settled
(atau provider_declined → declined)
  • Event store: payment_events (initiate, confirm, provider_settled).
  • Idempotent: commandId per transition (idempotency key tenant-scoped).
  • Provider: Midtrans Snap API — adapter MidtransPaymentAdapterLive (infra/adapters/midtrans.adapter.ts) ter-wire; gateway call E2E membutuhkan server key valid (item v1.1).