Connect customer quotations and payment execution to Sendico #51

Merged
tech merged 2 commits from payments-50 into main 2026-10-17 04:29:08 +00:00
Owner

Backend wallet mode now obtains customer-bound balances and quotations through the authenticated BFF and executes accepted quotes through Sendico's public payment API. It uses the confirmed independent customer subject, dedicated provisioned ledgers and saved payment methods; missing configuration never falls back to demo money.

The BFF persists quotation ownership and consumes payment-factor verification atomically with durable execution intent. Submission and recovery use one stable provider key; lost responses remain uncertain, known payment references refresh through GET, and only authoritative terminal states complete the UI journey. Live UI shows the bound destination, actual quote expiry, missing-method recovery and accurate pending/failure copy. It retains the shared DTO → mapper → service → model → provider → UI boundaries.

Validation passed: make test (backend race tests and all frontend suites), make lint-backend, a subsequent make test-frontend after the final UI review, changed-Dart formatting and flutter analyze in app/wallet. Final frontend counts include 21 wallet and 81 app tests. Synthetic HTTP and Mongo tests cover ownership, transaction rollback, unique keys, factor retry, changed sessions and lost-response reconciliation. Long-label/empty-destination UI checks pass at 320px and 1.6× text.

Dependencies and rollout: this PR is stacked on identity-verification PR #49; merge #47 → #49 → this PR. Deploy Sendico PR #2897 first, updating Product Edge and Quotation/Orchestrator consumers together. The adapter requires the quote's explicit external-customer acknowledgement. Provision dedicated customer ledgers, saved same-currency payout/funding methods and existing integration permissions before live use. No live payments or deployment were performed.

Contracts, measurement, provisioning and limitations are in docs/payments.md; delivery is recorded in docs/implementation.md. Generic ambiguous rejections remain pending for operational reconciliation. Backend locale saving, additional destination/funding onboarding, external history ingestion and retained cross-session analytics are separate capabilities. Unrelated notifications runtime changes and generated code are excluded.

Closes #50.

Backend wallet mode now obtains customer-bound balances and quotations through the authenticated BFF and executes accepted quotes through Sendico's public payment API. It uses the confirmed independent customer subject, dedicated provisioned ledgers and saved payment methods; missing configuration never falls back to demo money. The BFF persists quotation ownership and consumes payment-factor verification atomically with durable execution intent. Submission and recovery use one stable provider key; lost responses remain uncertain, known payment references refresh through GET, and only authoritative terminal states complete the UI journey. Live UI shows the bound destination, actual quote expiry, missing-method recovery and accurate pending/failure copy. It retains the shared DTO → mapper → service → model → provider → UI boundaries. Validation passed: `make test` (backend race tests and all frontend suites), `make lint-backend`, a subsequent `make test-frontend` after the final UI review, changed-Dart formatting and `flutter analyze` in app/wallet. Final frontend counts include 21 wallet and 81 app tests. Synthetic HTTP and Mongo tests cover ownership, transaction rollback, unique keys, factor retry, changed sessions and lost-response reconciliation. Long-label/empty-destination UI checks pass at 320px and 1.6× text. **Dependencies and rollout:** this PR is stacked on identity-verification PR #49; merge #47 → #49 → this PR. Deploy [Sendico PR #2897](https://git.sendico.io/tech/sendico/pulls/2897) first, updating Product Edge and Quotation/Orchestrator consumers together. The adapter requires the quote's explicit external-customer acknowledgement. Provision dedicated customer ledgers, saved same-currency payout/funding methods and existing integration permissions before live use. No live payments or deployment were performed. Contracts, measurement, provisioning and limitations are in `docs/payments.md`; delivery is recorded in `docs/implementation.md`. Generic ambiguous rejections remain pending for operational reconciliation. Backend locale saving, additional destination/funding onboarding, external history ingestion and retained cross-session analytics are separate capabilities. Unrelated notifications runtime changes and generated code are excluded. Closes #50.
tech added the frontendbackend labels 2026-10-16 07:57:51 +00:00
tech changed target branch from identity-verification-48 to main 2026-10-17 04:29:07 +00:00
tech added 2 commits 2026-10-17 04:29:07 +00:00
tech merged commit 34d8ef18d1 into main 2026-10-17 04:29:08 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#51