AsolPay Sandbox
The same three calls as the docs — create, verify, and a sandbox-only way to make the payment actually confirm — so you can prove your integration works before a customer depends on it.
Everything created here belongs to one shared sandbox merchant. This page only ever shows the invoice you just made in this browser, so your test customers’ details are not on anyone else’s screen — but do not paste real customer data into a shared sandbox.
Your test key
Shared and publishable. Send it as the api-key header against api.asolpay.com — exactly as the docs show. Every payment it creates is marked sandbox and moves no money.
sk_test_asolpay_demo2. Open the checkout
Create a payment on the left and the checkout link and payment controls appear here.
Doing it from your own code
The buttons above are only a wrapper. Two calls are the whole sandbox, so this works in a script or in CI:
# 1. create a payment — returns payment_url
curl -X POST https://api.asolpay.com/v1/payment/create \
-H "api-key: sk_test_asolpay_demo" \
-H "Content-Type: application/json" \
-d '{"amount":"250.00","tran_id":"ORD-1001",
"cus_name":"Omor","cus_email":"omor@example.com",
"success_url":"https://yoursite.com/thanks",
"webhook_url":"https://yoursite.com/api/asolpay/webhook"}'
# 2. confirm it (SANDBOX keys only — a live key is refused)
curl -X POST https://api.asolpay.com/api/v1/sandbox/simulate-payment/ \
-H "api-key: sk_test_asolpay_demo" \
-H "Content-Type: application/json" \
-d '{"invoice_id":"inv_…"}'
# 3. verify before you ship anything
curl -X POST https://api.asolpay.com/v1/payment/verify \
-H "api-key: sk_test_asolpay_demo" \
-H "Content-Type: application/json" \
-d '{"invoice_id":"inv_…"}'Add "amount" to simulate a wrong figure, reuse a "trx_id" to see a duplicate refused, or send "verification_level":"balance_confirmed" to confirm above the SMS-only ceiling. The response explains which happened.
How sandbox differs from live
- Payments are simulated, not observed. In live, a paired reader phone sees the wallet alert and reports it. There is no phone here, which is why the simulate call exists.
- The matching is identical. Amount matching, the time window, duplicate transaction ids and the anti-fraud hold all run exactly as they do in live — that is the point of simulating an event rather than flipping a status.
- The merchant is shared. Everyone testing uses the same sandbox merchant and its two test receiving numbers, so do not rely on listing invoices, and keep real customer data out.
- Webhooks are real here. Pass webhook_url and it is POSTed when the payment confirms, same as live. It is unsigned, so treat it as a nudge to call verify rather than proof — which is what the docs say too.
Full API reference: asolpay.com/docs · Ready for live keys? Merchant dashboard