Pengujian di Sandbox
Uji semua alur dengan data palsu: key qp_test_, skenario payin dan payout, kontrol manual, dan penerima webhook bawaan.
Uji semua alur dengan data palsu
Environment Sandbox adalah salinan lengkap API yang berjalan dengan uang mainan. Anda bisa berperan sebagai merchant dari awal sampai akhir (membuat key, membuat payin, membuat payout, menerima webhook, membaca saldo dan jurnal) tanpa customer, bank, atau operator AntaraPay yang sungguhan. Sandbox mensimulasikan semuanya untuk Anda.
Hanya di Sandbox
qp_test_, base URL https://sandbox-api.antarapay.com). Endpoint /api/v1/sandbox/* mengembalikan 404 di Production, dan tidak ada uang asli yang berpindah.Langkah demi langkah
- Masuk ke dashboard lalu pindah ke Sandbox (pengganti environment di header).
- Buka Integration, buat pasangan key webhook dan sebuah API key. Key Sandbox diawali
qp_test_; salin key-nya karena hanya tampil sekali. Beri scopepayins:read,payins:write,payouts:read, danpayouts:write. - Akun Anda otomatis diberi uang mainan (IDR 10.000.000 pada pertama kali). Cek dengan
GET /api/v1/balances, dan tambah denganPOST /api/v1/sandbox/balance/topup. - Buat payin dan payout seperti pada panduan Payin dan Payout. Sandbox menyelesaikannya sendiri setelah sekitar 10 detik, berdasarkan nominal atau nomor rekening yang Anda kirim (lihat tabel di bawah).
- Terima webhook di server Anda sendiri, atau pakai penerima bawaan jika belum punya server.
curl "https://sandbox-api.antarapay.com/api/v1/sandbox" \
-H "Authorization: Bearer $ANTARAPAY_API_KEY"GET /api/v1/sandbox mengembalikan pengaturan autopilot, saldo awal, dan semua skenario di bawah beserta contoh nominal atau nomor rekening.
Skenario payin
Hasil ditentukan oleh tiga digit terakhir nominal. Nominal lain dibayar dengan sukses.
| Nominal berakhiran | Contoh | Hasil |
|---|---|---|
| nilai lain | 15000 | Dibayar: status SUCCEEDED, nominal bersih masuk ke saldo Anda. |
400 | 10400 | Gagal: status FAILED. |
500 | 10500 | Kedaluwarsa: status EXPIRED. |
600 | 10600 | Tetap AWAITING_PAYMENT agar bisa Anda kendalikan manual. |
Kanal dengan settlement tertunda (misalnya QRIS_GOPAY) dibayar lalu langsung dirilis, jadi Anda tidak perlu menunggu masa settlement.
Skenario payout
Hasil ditentukan oleh empat digit terakhir recipient.account_number. Saldo Anda ditahan saat payout dibuat dan dikembalikan saat payout gagal atau ditolak.
| Nomor rekening berakhiran | Contoh | Hasil |
|---|---|---|
| nilai lain | 1234567890 | Disetujui, dikirim, dan selesai: status SUCCEEDED dengan referensi transfer SBX-TRF-.... |
0000 | 1234560000 | Ditolak: status REJECTED. |
9999 | 1234569999 | Gagal di bank: status FAILED. |
8888 | 1234568888 | Tetap PENDING_APPROVAL agar bisa Anda kendalikan manual. |
Kendalikan secara manual
Pakai endpoint ini dengan API key yang sama untuk berperan sebagai customer, operator, dan bank. Endpoint ini hanya memengaruhi payin dan payout milik Anda, tidak memerlukan Idempotency-Key, dan membalas 409 bila payin atau payout sudah berstatus final.
| Endpoint | Scope | Fungsi |
|---|---|---|
GET /sandbox | bebas | Pengaturan, skenario, dan contoh. |
POST /sandbox/balance/topup | payins:write | Menambah uang mainan. Body { "amount": "500000" }, antara 1.000 dan 10.000.000. |
POST /sandbox/settlements/release | payins:write | Membuat semua settlement yang menunggu langsung tersedia. |
POST /sandbox/payins/{id}/pay | payins:write | Customer membayar: SUCCEEDED. |
POST /sandbox/payins/{id}/fail | payins:write | Pembayaran gagal: FAILED. |
POST /sandbox/payins/{id}/expire | payins:write | Payin kedaluwarsa: EXPIRED. |
POST /sandbox/payouts/{id}/complete | payouts:write | Menyetujui, mengirim, dan menyelesaikan payout. |
POST /sandbox/payouts/{id}/fail | payouts:write | Transfer bank gagal; dana dikembalikan. |
POST /sandbox/payouts/{id}/reject | payouts:write | Payout ditolak; dana dikembalikan. |
curl -X POST "https://sandbox-api.antarapay.com/api/v1/sandbox/payins/$PAYIN_ID/pay" \
-H "Authorization: Bearer $ANTARAPAY_API_KEY"Penerima webhook bawaan
Belum punya server untuk menerima webhook? Biarkan Sandbox menjadi server Anda. Sandbox menerima event, memverifikasi signature Ed25519 dan HMAC, lalu menyimpan yang diterima agar bisa Anda periksa.
| Endpoint | Scope | Fungsi |
|---|---|---|
POST /sandbox/webhook/receiver | payins:write | Mengarahkan URL webhook Anda ke penerima bawaan. |
GET /sandbox/webhook/inbox | payins:read | Event yang diterima, lengkap dengan signature_valid, verified_with, dan body penuh. |
POST /sandbox/webhook/test | payins:write | Mengirim event contoh bertanda tangan (type payin, reference TEST-WEBHOOK) ke URL webhook Anda. |
Setiap event memiliki type payin atau payout; baca data.status untuk mengetahui apa yang terjadi (lihat panduan webhook).
Satu putaran pengujian lengkap
# 1. Terima webhook di inbox bawaan
curl -X POST "$BASE/api/v1/sandbox/webhook/receiver" -H "Authorization: Bearer $KEY"
# 2. Buat payin yang akan dibayar otomatis
curl -X POST "$BASE/api/v1/payins" \
-H "Authorization: Bearer $KEY" -H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"reference":"ORD-1","amount":"15000","currency":"IDR","channel":"QRIS_QOIN"}'
# 3. Sekitar 10 detik kemudian: status SUCCEEDED, saldo bertambah
curl "$BASE/api/v1/payins/$PAYIN_ID" -H "Authorization: Bearer $KEY"
curl "$BASE/api/v1/balances" -H "Authorization: Bearer $KEY"
# 4. Buat payout yang akan selesai otomatis
curl -X POST "$BASE/api/v1/payouts" \
-H "Authorization: Bearer $KEY" -H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"reference":"PO-1","amount":"40000","currency":"IDR","recipient":{"type":"END_USER","bank_code":"BCA","account_number":"1234567890","account_name":"TEST USER"}}'
# 5. Baca webhook yang diterima dan jurnal
curl "$BASE/api/v1/sandbox/webhook/inbox" -H "Authorization: Bearer $KEY"
curl "$BASE/api/v1/journals" -H "Authorization: Bearer $KEY"Uji juga jalur gagal
400 dan 500, serta nomor rekening berakhiran 0000 dan 9999, untuk memastikan sistem Anda menangani hasil gagal, kedaluwarsa, dan ditolak, dan saldo kembali.