Payment Checkout & Ledger Service · View 05 of 24 · People and journeys
The trough
- 'Receive events' is the worst moment, and the failure is not in the platform: it is a merchant handler that is not idempotent.
- The platform's answer is to promise at-least-once explicitly and give a per-object sequence number, so a naive handler can detect a gap and a duplicate without understanding payments (ADR-09).
Decisions
- Publishable and secret credentials are separate, and a publishable credential can do nothing but confirm an existing intent (ADR-15).
- The sandbox can inject the unknown outcome. If a failure mode cannot be tested, every merchant discovers it in production.
- Going live is a credential swap, not a code change.
Risks
- Ordered-per-object delivery would be kinder to naive handlers and introduces head-of-line blocking that one slow endpoint turns into everyone's backlog. The trade is left open as Question 6 and decided in ADR-09.