Testing
Everything runs in test mode: no real money moves and your backend must keep test orders separate from production entitlements.
Test cards
| Card | Result |
|---|---|
4242 4242 4242 4242 | Approved |
4000 0000 0000 0002 | Declined: balance unchanged |
4000 0027 6000 3184 | 3-D Secure challenge, then approved after Authenticate |
Any future expiry and any 3-digit CVC. Real card numbers are rejected on the client and the server, and full card numbers are never stored.
Apple Pay / Google Pay: simulated buttons in test mode.
Checks worth automating
- A purchase credits your player once (watch your
order_iddedupe). - A declined card leaves the balance unchanged.
- A replayed player token is refused.
- Outage: stop your webhook endpoint, buy, start it again. The coins arrive after it comes back, exactly once.
- Refund from Studio → Orders: your backend gets
order.refunded, so revoke (never below zero).
Studio → Integration → Send test event sends a probe webhook that grants nothing.