Sandbox
Panduan lengkap testing di environment sandbox TransX402 — fund wallet, lakukan pembayaran test, dan validasi integrasi Anda.
Apa itu Sandbox?
Sandbox adalah environment testing untuk menguji integrasi TransX402 tanpa uang sungguhan. Secara default sandbox mengarah ke CAMP Testnet — chain testnet publik (https://testnet-rpc.onchainfolio.com/rpc) dengan IDRX test dan Permit2. Facilitator mensponsori gas settle; merchant mengisi wallet dengan IDRX dan ETH test lewat faucet treasury (/sandbox/fund).
Opsional: Anvil lokal dengan SANDBOX_FUNDING_MODE=anvil dan docker compose --profile anvil up (bukan default).
Paket npm membutuhkan Node.js 20.19+ (^20.19.0 || ^22.13.0 || >=24). Path 4 di browser membutuhkan MetaMask (atau wallet EIP-1193 lain) plus ETH test untuk approve Permit2 pertama.
Sandbox vs Production
| Aspek | Sandbox (CAMP Testnet) | Production |
|---|---|---|
| Prefix key rahasia | ipk_sandbox_ | ipk_live_ |
| Prefix key publishable | ipk_pub_sandbox_ | ipk_pub_live_ |
| Chain | CAMP Testnet | Base mainnet |
| IDRX | IDRX test di CAMP | IDRX nyata |
| Gas (settle) | Disponsori fasilitator | Disponsori fasilitator |
| Funding | Faucet treasury | Deposit nyata |
| Dashboard | Menampilkan transaksi sandbox | Menampilkan transaksi nyata |
| Webhook | Dikirim ke webhook URL merchant | Sama |
| Fasilitator (hosted) | api.transx402.com | api.transx402.com |
Cara Memulai
1. Dapatkan API Key Sandbox
Saat Anda mendaftar di dashboard.transx402.com, API key sandbox rahasia otomatis dibuat. Anda juga bisa membuat key sandbox tambahan (rahasia atau publishable) di halaman API Keys:
Simpan key rahasia di server / WordPress. Paywall CDN membutuhkan key publishable ipk_pub_sandbox_... dan Allowed Origins.
2. Fund Wallet Test
Sebelum melakukan pembayaran test, isi wallet dengan IDRX test (dan ETH untuk gas Path 4 di browser). Ada dua cara:
Via Dashboard
Buka halaman Sandbox di dashboard. Gunakan kartu Fund IDRX dan Fund ETH (dana dikirim ke wallet merchant terdaftar), lalu klik tombol fund pada masing-masing kartu.
Di CAMP Testnet (treasury), faucet dapat mentransfer IDRX test dan ETH native. Pembayaran browser pertama mungkin meminta Spending Cap MetaMask (approve Permit2); pembayaran berikutnya cukup tanda tangan.
Via API
IDRX:
ETH (token opsional — kosongkan untuk IDRX):
Response:
Pakai key sandbox rahasia pada /sandbox/fund. Fund wallet pembayar (akun MetaMask yang akan membayar), bukan hanya wallet merchant.
Testing Pembayaran
Alur Testing Dasar
- Pasang integrasi — ikuti resep Quickstart untuk Next.js, WordPress, atau CDN
- Fund wallet — isi wallet pembayar dengan IDRX (dan ETH) via halaman Sandbox di dashboard atau
/sandbox/fund - Akses konten — buka halaman berpaywall atau panggil
client.fetch("/api/premium") - Bayar — klik "Pay with IDRX", hubungkan MetaMask di CAMP Testnet, dan tanda tangani
- Verifikasi — cek pembayaran di dashboard atau via API
/payments
Testing dengan Library JS (settlement server)
Anda juga bisa set facilitatorUrl untuk menimpa host preset; section config tetap mengikuti environment. Konstruktor server membutuhkan environment dan/atau facilitatorUrl. Parameter chain hanya dari GET /config (atau proxy config Anda).
environment | Facilitator | Catatan |
|---|---|---|
local | http://localhost:3402 | API Docker / lokal |
camp | https://api.transx402.com | Sandbox CAMP testnet |
base | https://api.transx402.com | Butuh ipk_live_... di server |
Browser wallet memakai Path 4: approve Permit2 sekali (user bayar gas), lalu pembayaran hanya signature. Agent memakai Path 3 (createAgentClient) dengan sponsored approve via signTransaction — MetaMask tidak bisa Path 3.
Paywall CDN memakai browser bundle: TransX402.paywall({ apiKey: "ipk_pub_sandbox_...", environment: "camp", ... }). WordPress tidak memakai CDN; plugin menyertakan client dan settle di PHP.
Testing dengan cURL
amount pada /sandbox/fund untuk IDRX adalah IDRX utuh (sama dengan IDR utuh). Batas default 100000 per request — jangan kirim "1000000". Catatan pembayaran dari GET /payments memakai unit dasar 2 desimal (Rp 5.000 → "500000").
Perbedaan dengan Production
Kode integrasi sama untuk sandbox dan production. Ganti keluarga key dan environment:
Paywall CDN: ipk_pub_sandbox_ + environment: "camp" → ipk_pub_live_ + environment: "base".
Development Lokal dengan Anvil (opsional)
Anvil bukan sandbox default. Pakai hanya jika butuh fork Base offline:
Anvil di port 8546. /sandbox/wallets dan /sandbox/reset hanya untuk mode Anvil.
Wallet test Anvil bawaan
Ini akun deterministik Anvil. Private key hanya berlaku di chain Anvil.
Reset Anvil
Ini re-fork Anvil dari block Base mainnet terbaru. Semua transaksi sandbox Anvil sebelumnya hilang; kontrak IDRX dan Permit2 tetap tersedia. Jangan memanggil reset ke CAMP Testnet hosted dengan harapan chain di-fork ulang.
Mengapa Anvil Fork (opsional)?
| Anvil Fork | CAMP Testnet (default) | |
|---|---|---|
| Kontrak IDRX nyata | Ya (state Base yang di-fork) | IDRX test ter-deploy |
| Kontrak Permit2 nyata | Ya | Canonical 0x0000…BA3 |
| Dibagi dengan tim | Tidak (lokal) | Ya |
| Funding | anvil_deal + auto approve Permit2 | Transfer ERC-20 treasury |
| CI / offline | Baik setelah fork | Butuh RPC terjangkau |
Tips Testing
- Selalu test di sandbox dulu sebelum beralih ke production
- Gunakan webhook untuk memverifikasi notifikasi pembayaran
- Test skenario error — saldo kurang, approval Permit2 belum ada
- Cek dashboard — pembayaran harus muncul di halaman Payments
- Wallet — MetaMask (EIP-1193). Client tidak menyertakan SDK WalletConnect atau Coinbase Wallet