Library JavaScript
Panduan lengkap @transx402/client — impor subpath, createBrowserClient, createPaywall, agen, dan mode settlement untuk x402 IDRX.
Ringkasan
@transx402/client adalah library browser dan Node.js untuk pembayaran x402 IDRX. Impor client dari subpath — root paket hanya mengekspor tipe dan error.
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() | Hanya env server — jangan di browser |
direct | Browser / agen | pay() / createPaywall() | Publishable ipk_pub_sandbox_ / ipk_pub_live_ (daftarkan Allowed Origins dulu) |
Instalasi
Membutuhkan Node.js 20.19+. Untuk HTML tanpa build, lihat Penggunaan CDN. Situs WordPress memakai Plugin WordPress, bukan paket npm ini di browser.
| Path impor | Peran |
|---|---|
@transx402/client | Tipe, FacilitationError, helper — tanpa createBrowserClient |
@transx402/client/browser | Path 4: createBrowserClient, createPaywall, CDN TransX402 |
@transx402/client/agent | Path 3: createAgentClient (Node, private key) |
Kanonis: createBrowserClient + fetch()
TypeScript melarang apiKey jika environment di-set dan settlement "server". Hubungkan proxy dengan tx402.config.handleRequest.
Anda boleh set facilitatorUrl untuk menimpa host preset; section config tetap mengikuti environment. Chain / RPC / IDRX / Permit2 hanya dari GET /config.
client.fetch(url, init?)
Drop-in replacement untuk fetch(). Otomatis menangani respons 402.
Alur internal (settlement: "server", default):
- 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"): langkah 1–4, lalu client memanggil POST /facilitate sendiri sebelum retry. Dipakai oleh pay() dan paywall.
Settlement langsung: pay()
Pembayaran tanpa backend. Membutuhkan API key publishable.
Paywall: createPaywall()
Overlay imperatif — bukan komponen React. Selalu memakai settlement direct.
Setara CDN: TransX402.paywall({ ... }) dari browser bundle.
Overlay menampilkan harga IDR, Pay with IDRX, koneksi wallet, approve Permit2, tanda tangan, dan tautan transaksi.
Tema
Agen: createAgentClient
Path 3 — private key Node. Approve Permit2 disponsori via signTransaction. Jangan dipakai di MetaMask (browser tidak bisa eth_signTransaction).
Untuk settlement: "direct", berikan apiKey publishable. configProxyPath relatif hanya untuk browser.
Metode browser lain
Opsi konfigurasi
| Opsi | Tipe | Catatan |
|---|---|---|
environment | "local" | "camp" | "base" | Memilih section config + host preset |
facilitatorUrl | string | Override host opsional; section tetap mengikuti environment |
configProxyPath | string | Basis proxy same-origin untuk GET …/config (settlement server). Default /api/transx402 |
settlement | "server" | "direct" | Default "server" untuk fetch() |
apiKey | string | Wajib untuk direct / pay() / paywall; dihilangkan untuk fetch() server |
onPaymentStart | function | Pembayaran dimulai |
onPaymentSuccess | function | Pembayaran berhasil |
onPaymentError | function | Pembayaran gagal |
onWalletConnect | function | Wallet terhubung |
onApprovalRequired | function | Hook opsional requestApproval() manual |
Jangan mengirim token atau network — itu bukan opsi client. Config berasal dari GET /config.
Error
Juga: WalletConnectionError, Permit2Error. Setelah settlement server, gate gagal bisa mengembalikan HTTP 402/500 dengan { code, error, details } — bentuk ulang FacilitationError dari body jika butuh UX yang sama.
Kompatibilitas
Browser
- Chrome 90+, Firefox 90+, Safari 15+, Edge 90+
- Mobile: Chrome Android, Safari iOS
- Wallet: MetaMask / EIP-1193 (
window.ethereum) saja
Node.js
- Node.js 20.19+ (
fetchbawaan) - Agen:
@transx402/client/agentdengan private key