Uw eerste betaalde verzoek versturen met x402

Deze handleiding doorloopt x402 met één Solana-verzoek: de prijs lezen, die betalen en het antwoord ontvangen met een betalingsbewijs. De andere 15 chains werken op dezelfde manier, elk via een eigen pad.
U hebt een wallet nodig met USDC op Solana, of USDC of EURC op Base, en een x402-client: de software die het 402-antwoord leest, met uw wallet een betaling ondertekent en het verzoek daarmee opnieuw verstuurt. Zie voor x402-clients de x402-documentatie op x402.org.

1. Het verzoek versturen

Stuur het RPC-verzoek zonder betaling:
bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
Het antwoord is 402 Payment Required. De headers vermelden de methode en de prijs:
http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
De body noemt de betaalopties in accepts, één voor elke stablecoin waarmee het verzoek kan worden betaald. amount staat in de kleinste eenheid van de stablecoin, dus 1000 is 0.001 USDC, of 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. Betalen met een x402-client

Geef het 402-antwoord aan uw x402-client. Die kiest een optie die uw wallet kan betalen, ondertekent een betaling voor dat bedrag en codeert die voor de header X-Payment. Voor de netwerkkosten van de betaling hebt u geen SOL of ETH nodig.

3. Het verzoek opnieuw versturen met de betaling

Stuur dezelfde body opnieuw, met de betaling in de 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"}'
Laat de body ongewijzigd. De prijs wordt berekend op basis van de body: heeft een gewijzigde body een andere prijs, dan past de betaling er niet meer bij en wordt het verzoek beantwoord met price_mismatch.
Zodra de betaling is geverifieerd en afgewikkeld, komt het RPC-antwoord terug met het betalingsbewijs in de header X-Payment-Response:
http
HTTP/2 200
x-payment-response: <RECEIPT>
json
{ "jsonrpc": "2.0", "id": 1, "result": … }
Eén betaling dekt één verzoek. Als u dezelfde betaling opnieuw verstuurt, wordt die geweigerd met 402 payment_invalid of 409 duplicate_payment, en wordt het verzoek niet nog eens doorgestuurd.

Antwoorden

Een verzoek dat x402.erpc.global met een fout beantwoordt voordat het om betaling vraagt, kost niets.
Statuserror.codeWat er is gebeurd
402payment_requiredEr is geen betaling meegestuurd. De body geeft de prijs en de betaalopties.
402payment_invalidDe betaling kwam niet door de verificatie. Onderteken een nieuwe betaling en verstuur het verzoek opnieuw.
402price_mismatchDe betaling past bij geen van de opties die de 402 van dit verzoek aanbood, bijvoorbeeld qua prijs.
402payment_amount_too_lowHet bedrag ligt onder de kleinste betaling die x402.erpc.global afwikkelt.
402settlement_failedDe afwikkeling is als mislukt gemeld. Het antwoord biedt de betaalopties opnieuw aan.
409duplicate_paymentDe betaling is al gebruikt.
400method_not_supported, invalid_requestHet pad verkoopt de methode niet, of accepteert de body niet. Er wordt niets in rekening gebracht.
413batch_too_largeDe batch bevat meer dan 100 aanroepen. Er wordt niets in rekening gebracht.
500configuration_errorHet pad kan op dit moment geen verzoeken verwerken. Er wordt niets in rekening gebracht.
503payment_unavailableEr kan op dit moment geen betaaloptie worden aangeboden. Er wordt niets in rekening gebracht. Wacht het aantal seconden uit Retry-After en probeer het dan opnieuw.
503service_busyTe veel verzoeken tegelijk. Er wordt niets in rekening gebracht. Wacht het aantal seconden uit Retry-After en probeer het dan opnieuw.
502settlement_failedDe uitkomst van de afwikkeling is onbekend: de betaling is mogelijk doorgegaan, en er is geen betalingsbewijs bijgevoegd. Controleer op Solana of Base of de betaling die u hebt ondertekend is doorgegaan, voordat u een nieuwe ondertekent.
502, 504upstream_error, upstream_timeoutDe betaling is afgewikkeld, maar de chain antwoordde niet, of niet op tijd. Het betalingsbewijs is wel bijgevoegd. Om het verzoek opnieuw te versturen is een nieuwe betaling nodig.
Op Solana wordt een aanroep die te veel zou lezen, zoals een ongefilterde getProgramAccounts op een groot programma, beantwoord met HTTP 200 en een JSON-RPC-fout voordat er om betaling wordt gevraagd, dus die kost niets.

Volgende stappen