Ihre erste bezahlte Anfrage mit x402 senden

Diese Anleitung zeigt am Beispiel einer Solana-Anfrage den Ablauf mit x402: Preis ablesen, bezahlen und die Antwort mit einer Abwicklungsbestätigung erhalten. Die anderen 15 Chains funktionieren genauso, jeweils unter ihrer eigenen Route.
Sie brauchen eine Wallet mit USDC auf Solana oder mit USDC bzw. EURC auf Base sowie einen x402-Client: die Software, die die 402-Antwort liest, mit Ihrer Wallet eine Zahlung signiert und die Anfrage damit erneut sendet. Mehr zu x402-Clients finden Sie in der x402-Dokumentation auf x402.org.

1. Die Anfrage senden

Senden Sie die RPC-Anfrage ohne Zahlung:
bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
Die Antwort ist 402 Payment Required. Die Header der Antwort nennen die Methode und den Preis:
http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
Der Body listet die Zahlungsoptionen unter accepts auf, eine für jeden Stablecoin, mit dem sich die Anfrage bezahlen lässt. amount ist in der kleinsten Einheit des Stablecoins angegeben, 1000 entspricht also 0.001 USDC bzw. 0.001 EURC:
json
{
  "error": { "code": "payment_required", "message": "Payment required", "request_id": "…" },
  "x402Version": 2,
  "accepts": [
    { "scheme": "exact", "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "amount": "1000", "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", … },
    { "scheme": "exact", "network": "eip155:8453", "amount": "1000", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", … },
    { "scheme": "exact", "network": "eip155:8453", "amount": "1000", "asset": "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42", … }
  ],
  "pricing": { "methods": ["getSlot"], …, "weight": 1000, "rawWeight": 42, …, "price": "$0.001", … },
  …
}

2. Mit einem x402-Client bezahlen

Übergeben Sie die 402-Antwort an Ihren x402-Client. Er wählt eine Option, die Ihre Wallet bezahlen kann, signiert eine Zahlung über diesen Betrag und kodiert sie für den Header X-Payment. Für Netzwerkgebühren brauchen Sie dabei weder SOL noch ETH.

3. Die Anfrage mit der Zahlung erneut senden

Senden Sie denselben Body erneut, mit der Zahlung im Header X-Payment:
bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --header 'X-Payment: <PAYMENT_PAYLOAD>' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
Lassen Sie den Body unverändert. Der Preis wird aus dem Body berechnet. Hat ein geänderter Body einen anderen Preis, passt die Zahlung nicht mehr dazu, und die Antwort lautet price_mismatch.
Sobald die Zahlung geprüft und abgewickelt ist, kommt die RPC-Antwort mit der Abwicklungsbestätigung im Header X-Payment-Response zurück:
http
HTTP/2 200
x-payment-response: <RECEIPT>
json
{ "jsonrpc": "2.0", "id": 1, "result": … }
Eine Zahlung gilt für genau eine Anfrage. Senden Sie dieselbe Zahlung erneut, wird sie mit 402 payment_invalid oder 409 duplicate_payment abgelehnt, und die Anfrage wird nicht noch einmal weitergeleitet.

Antworten

Eine Anfrage, die x402.erpc.global mit einem Fehler beantwortet, bevor eine Zahlung verlangt wird, kostet nichts.
Statuserror.codeWas passiert ist
402payment_requiredEs wurde keine Zahlung gesendet. Der Body nennt den Preis und die Zahlungsoptionen.
402payment_invalidDie Zahlung hat die Prüfung nicht bestanden. Signieren Sie eine neue Zahlung und senden Sie die Anfrage erneut.
402price_mismatchDie Zahlung weicht von jeder Option ab, die die 402-Antwort dieser Anfrage angeboten hat, etwa im Preis.
402payment_amount_too_lowDer Betrag liegt unter der kleinsten Zahlung, die x402.erpc.global abwickelt.
402settlement_failedDie Abwicklung wurde als fehlgeschlagen gemeldet. Die Antwort bietet die Zahlungsoptionen erneut an.
409duplicate_paymentDie Zahlung wurde bereits verwendet.
400method_not_supported, invalid_requestDie Route verkauft die Methode nicht oder nimmt den Body nicht an. Es wird nichts berechnet.
413batch_too_largeDer Batch enthält mehr als 100 Aufrufe. Es wird nichts berechnet.
500configuration_errorDie Route kann derzeit keine Anfragen bedienen. Es wird nichts berechnet.
503payment_unavailableDerzeit kann keine Zahlungsoption angeboten werden. Es wird nichts berechnet. Versuchen Sie es nach den in Retry-After genannten Sekunden erneut.
503service_busyZu viele Anfragen auf einmal. Es wird nichts berechnet. Versuchen Sie es nach den in Retry-After genannten Sekunden erneut.
502settlement_failedDas Ergebnis der Abwicklung ist unbekannt: Die Zahlung wurde möglicherweise ausgeführt, und es ist keine Bestätigung angehängt. Prüfen Sie auf Solana oder Base, ob die von Ihnen signierte Zahlung ausgeführt wurde, bevor Sie eine neue signieren.
502, 504upstream_error, upstream_timeoutDie Zahlung wurde abgewickelt, aber die Chain hat nicht oder nicht rechtzeitig geantwortet. Die Bestätigung ist trotzdem angehängt. Wenn Sie die Anfrage erneut senden, ist eine neue Zahlung nötig.
Auf Solana wird ein Aufruf, der zu viel lesen würde, etwa ein ungefiltertes getProgramAccounts für ein großes Programm, mit HTTP 200 und einem JSON-RPC-Fehler beantwortet, bevor eine Zahlung verlangt wird. Er kostet also nichts.

Nächste Schritte