Sandbox & Testing
The test environment mirrors the production contract: the same endpoints, the same signature scheme, the same statuses.
| Environment | Host |
|---|---|
| Test | https://pay-in-api.mrcr.io |
| Production | https://pay-in-api.mercuryo.io |
Before you start
- Test credentials (
service_id:secretandSign Key) and wallet test accounts come from your integration manager. - Your server IP(s) must be allow-listed for the test environment as well as production.
- Apple Pay requires the domain that hosts the payment sheet to be registered for the test environment — see Apple Pay onboarding.
What to verify
- Signature. Sign the compact JSON body: a signature computed over pretty-printed bytes is rejected. See Authentication & signature.
- Both outcomes. Take one payment through to
paidand one through toorder_failed. - The 3DS branch. Confirm your code handles
redirect_pendingplusredirect_data, the redirect itself, and the final status afterwards. - Webhooks. Confirm delivery to your callback URL, verify the
X-Signatureof thedataobject, and answer with a2xx— see Webhooks. - Refunds. Issue a partial and a full refund, then replay the same
merchant_refund_idto confirm your idempotency handling — see Refunds.
Going live
Production uses separate credentials, a separate allow-list, and a separate Apple Pay domain registration. Request them from your integration manager once the checks above pass; no code changes beyond the host and credentials are required.