Secure checkout · simulated gateway

Payment Gateway Lab

Card data stays in-browser for this assignment — only structured payloads hit the mocked `/api/pay` route. Expect randomized issuer outcomes, enforced client timeouts, and idempotent retries.

Payment

All fields are validated in real time (blur + change) with the same Zod schema used for submission.

Card
Transaction history
Persisted locally for this demo (survives refresh).

Completed payments will appear here with idempotent ids.