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

Semua yang ada di halaman ini hanya tersedia di Sandbox (key 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

  1. Masuk ke dashboard lalu pindah ke Sandbox (pengganti environment di header).
  2. Buka Integration, buat pasangan key webhook dan sebuah API key. Key Sandbox diawali qp_test_; salin key-nya karena hanya tampil sekali. Beri scope payins:read, payins:write, payouts:read, dan payouts:write.
  3. Akun Anda otomatis diberi uang mainan (IDR 10.000.000 pada pertama kali). Cek dengan GET /api/v1/balances, dan tambah dengan POST /api/v1/sandbox/balance/topup.
  4. 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).
  5. Terima webhook di server Anda sendiri, atau pakai penerima bawaan jika belum punya server.
Apakah sandbox siap?
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 berakhiranContohHasil
nilai lain15000Dibayar: status SUCCEEDED, nominal bersih masuk ke saldo Anda.
40010400Gagal: status FAILED.
50010500Kedaluwarsa: status EXPIRED.
60010600Tetap 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 berakhiranContohHasil
nilai lain1234567890Disetujui, dikirim, dan selesai: status SUCCEEDED dengan referensi transfer SBX-TRF-....
00001234560000Ditolak: status REJECTED.
99991234569999Gagal di bank: status FAILED.
88881234568888Tetap 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.

EndpointScopeFungsi
GET /sandboxbebasPengaturan, skenario, dan contoh.
POST /sandbox/balance/topuppayins:writeMenambah uang mainan. Body { "amount": "500000" }, antara 1.000 dan 10.000.000.
POST /sandbox/settlements/releasepayins:writeMembuat semua settlement yang menunggu langsung tersedia.
POST /sandbox/payins/{id}/paypayins:writeCustomer membayar: SUCCEEDED.
POST /sandbox/payins/{id}/failpayins:writePembayaran gagal: FAILED.
POST /sandbox/payins/{id}/expirepayins:writePayin kedaluwarsa: EXPIRED.
POST /sandbox/payouts/{id}/completepayouts:writeMenyetujui, mengirim, dan menyelesaikan payout.
POST /sandbox/payouts/{id}/failpayouts:writeTransfer bank gagal; dana dikembalikan.
POST /sandbox/payouts/{id}/rejectpayouts:writePayout ditolak; dana dikembalikan.
Membayar payin yang menunggu pembayaran
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.

EndpointScopeFungsi
POST /sandbox/webhook/receiverpayins:writeMengarahkan URL webhook Anda ke penerima bawaan.
GET /sandbox/webhook/inboxpayins:readEvent yang diterima, lengkap dengan signature_valid, verified_with, dan body penuh.
POST /sandbox/webhook/testpayins:writeMengirim 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

bash
# 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

Ulangi putaran dengan nominal berakhiran 400 dan 500, serta nomor rekening berakhiran 0000 dan 9999, untuk memastikan sistem Anda menangani hasil gagal, kedaluwarsa, dan ditolak, dan saldo kembali.