TorbatYar/docs/phases/Payment/phase-14-4-callback-verification.md
Mortezakoohjani 9fac160258 feat(payment): ship Torbat Pay MVP phases 14.0-14.5
Add independent payment-service (port 8012, payment_db) with foundation licensing, BYO-PSP, merchant accounts, idempotent requests, callbacks, and immutable ledger.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 17:57:04 +03:30

1.8 KiB

Phase 14.4 — Callback & Verification

Field Value
Identifier payment-14.4
Implementation Priority HIGH
Status Complete
Service payment
Depends On payment-14.3

Full specification: payment-roadmap.md

Purpose

Ingest PSP callbacks/webhooks, verify signatures, reconcile with PSP verify API, transition requests to paid/failed.

Business Scope

Trusted callback processing; admin reconcile retry; publish events for verticals to mark orders paid.

Technical Scope

Aggregates: PaymentCallbackLog, PaymentVerificationAttempt. Public callback routes per adapter. verify_payment(), parse_callback().

Dependencies

payment-14.3

Out of Scope

Immutable ledger authority (14.5), refunds, Accounting posting.

Capabilities

payment.callbacks, payment.verification, payment.webhooks

Permissions

payment.callbacks.view, payment.requests.reconcile|manage; signature-gated public callbacks

Events

payment.callback.received|verified|rejected, payment.request.paid|failed

API Contracts

POST /api/v1/callbacks/{provider_code}/{connection_id}, POST .../verify, GET callback logs

Data Ownership

Payment owns callback logs; PSP transaction ids as external refs.

Provider Ownership

Webhook secrets in adapter layer.

Integration Rules

Never trust return URL alone; always PSP verify. Fast callback ack; async verify allowed.

Quality Gates

Signature forgery, replay protection, tenant routing isolation.

Definition of Done

Mock callback → verified paid; outbox events; verticals can subscribe.

Future Compatibility

Multi-version callbacks per PSP; international webhook formats.