TransX402 Docs
Integrasi

Server Library

@transx402/server — helper backend merchant untuk settlement x402 kanonis (respons 402, facilitatePayment, processPaymentGate).

Overview

@transx402/server adalah paket Node tanpa runtime dependency untuk backend merchant. Gunakan bersama @transx402/client dalam mode settlement: "server" (default untuk fetch()).

Alur kanonis:

  1. Client memanggil API Anda → kembalikan 402 + buildPaymentRequired(...)
  2. Wallet client menandatangani → retry dengan PAYMENT-SIGNATURE
  3. Route Handler Anda memanggil facilitatePayment / processPaymentGatePOST /facilitate dengan X-API-Key di server
  4. Jika sukses, kembalikan konten berbayar

TransX402 memakai POST /facilitate gabungan (verify + settle dalam satu panggilan). Simpan API key ipk_ di server untuk mode ini.

Untuk paywall / situs statis tanpa endpoint settle merchant, gunakan settlement: "direct" di client.

Install

npm install @transx402/server
npm install @transx402/client

Sumber: github.com/campinvestment/transx402-server

Quick start (Route Handler)

import {
  processPaymentGate,
  resolveServerConfig,
} from "@transx402/server";
 
const apiKey = process.env.TRANSX402_API_KEY!;
const { facilitatorUrl, configSection } = resolveServerConfig({
  apiKey,
  environment: "local",
});
 
export async function GET(request: Request) {
  const gate = await processPaymentGate({
    headers: request.headers,
    facilitatorUrl,
    apiKey,
    configSection,
    payTo: process.env.MERCHANT_WALLET!,
    priceIdr: "5000",
    resourceUrl: request.url,
  });
 
  if (gate.kind === "paymentRequired") {
    return Response.json(gate.body, { status: 402 });
  }
  if (gate.kind === "failed") {
    return Response.json({ error: gate.error }, { status: gate.status });
  }
 
  return Response.json({
    paid: true,
    txHash: gate.txHash,
    content: "Premium unlocked",
  });
}

API

ExportTujuan
buildPaymentRequiredBody 402 x402 v2 dari /config
facilitatePaymentDecode header → POST /facilitate
processPaymentGateTanpa header → 402; dengan header → facilitate
verifyPaymentLookup pasca-settlement GET /payments/:txHash (butuh API key)
resolveServerConfig / FACILITATOR_PRESETSURL facilitator + section sandbox/production

On this page