Library JavaScript
Panduan lengkap @transx402/client — instalasi, konfigurasi, komponen paywall, dan referensi API untuk integrasi pembayaran IDRX.
Ringkasan
@transx402/client adalah library browser/Node untuk pembayaran x402 IDRX. Untuk integrasi full-stack (direkomendasikan), pasangkan dengan @transx402/server: client menandatangani; backend Anda memanggil POST /facilitate.
| Mode settlement | Siapa memanggil /facilitate | Default untuk | API key |
|---|---|---|---|
server (kanonis) | Backend merchant (@transx402/server) | fetch() | Env server |
direct | Browser / agent | pay() / paywall | ipk_ di client |
Instalasi
NPM (untuk aplikasi yang di-bundle)
CDN (untuk WordPress, situs statis, halaman HTML biasa)
Untuk integrasi tanpa proses build, lihat panduan khusus Penggunaan CDN. Versi singkatnya:
Script CDN mengekspos objek global TransX402 dengan API yang sama seperti yang dijelaskan di bawah. Alur CDN/paywall memakai settlement direct.
Inisialisasi
TransX402.create(options)
Buat instance client TransX402:
Chain (sandbox/production) ditentukan dari prefix API key — keduanya memakai https://api.transx402.com. Anda tidak perlu mengatur URL fasilitator secara manual untuk integrasi hosted.
Opsi Konfigurasi
| Opsi | Tipe | Default | Deskripsi |
|---|---|---|---|
apiKey | string | wajib | API key dari dashboard TransX402 |
token | string | 'IDRX' | Simbol token yang digunakan |
network | string | 'base' | Jaringan blockchain |
onPaymentStart | function | — | Callback saat pembayaran dimulai |
onPaymentSuccess | function | — | Callback saat pembayaran berhasil |
onPaymentError | function | — | Callback saat pembayaran gagal |
onWalletConnect | function | — | Callback saat wallet terhubung |
onApprovalRequired | function | — | Callback opsional untuk alur manual requestApproval() |
API Utama
client.fetch(url, options)
Drop-in replacement untuk fetch(). Otomatis menangani respons 402.
Alur internal (settlement: "server", default fetch()):
- Mengirim request
fetch()biasa - Jika respons 402, mem-parse persyaratan pembayaran
- Menghubungkan wallet (jika belum)
- Menandatangani payload pembayaran x402 (Exact EVM + Permit2 witness)
- Mencoba ulang request asli dengan
PAYMENT-SIGNATURE/X-PAYMENT - API merchant settle via
@transx402/server→POST /facilitate - Mengembalikan respons final
Alur internal (settlement: "direct"):
1–4 di atas, lalu client memanggil POST /facilitate sendiri sebelum retry. Dipakai oleh pay() dan paywall.
client.connectWallet()
Hubungkan wallet secara eksplisit. Mendukung:
- MetaMask / wallet ekstensi browser (EIP-1193)
- WalletConnect v2
- Coinbase Wallet
client.checkApproval() (opsional)
Periksa apakah wallet yang terhubung sudah menyetujui Permit2 untuk IDRX.
client.requestApproval() (opsional)
Helper manual untuk meminta approval Permit2. Sebagian besar integrasi sebaiknya mengandalkan alur x402 standar dan sponsorship extension.
client.pay(paymentRequirements)
Trigger pembayaran secara manual tanpa membungkus fetch.
Komponen Paywall
Komponen paywall siap pakai untuk content gating.
Vanilla JavaScript
React
Tampilan Paywall
Overlay paywall default menampilkan:
- Harga dalam IDR (contoh: "Rp 5.000")
- Tombol "Pay with IDRX"
- Alur koneksi wallet (jika belum terhubung)
- Langkah konfirmasi tanda tangan
- Konfirmasi pembayaran dengan link transaksi
- Dapat dikustomisasi melalui CSS variables
Kustomisasi
CSS Variables
Event Hooks
Dukungan Multi-Currency
Library dirancang untuk IDRX terlebih dahulu tetapi mendukung token tambahan:
Konfigurasi token (alamat, desimal, metode) diambil dari endpoint /tokens fasilitator, sehingga penambahan token baru tidak memerlukan update library client.
Target Ukuran Bundle
| Varian | Target |
|---|---|
| Core (fetch wrapper saja) | < 15 KB gzipped |
| Dengan paywall UI | < 30 KB gzipped |
| Dengan wallet connectors | < 50 KB gzipped |
| CDN full bundle | < 60 KB gzipped |
Kompatibilitas
Browser
- Chrome 90+
- Firefox 90+
- Safari 15+
- Edge 90+
- Mobile: Chrome Android, Safari iOS
Node.js
- Node.js 18+ (membutuhkan Fetch API)
- Bisa digunakan server-side untuk pembayaran programatik (AI agent, backend)