x402 ile ilk ücretli isteğinizi gönderin

Bu kılavuzda tek bir Solana isteğini x402 üzerinden baştan sona gönderirsiniz: fiyatı okur, öder ve yanıtı ödeme makbuzuyla birlikte alırsınız. Diğer 15 zincir de kendi yollarında aynı şekilde çalışır.
Solana'da USDC ya da Base'de USDC veya EURC bulunan bir cüzdana ve bir x402 istemcisine ihtiyacınız var. x402 istemcisi, 402 yanıtını okuyan, cüzdanınızdan bir ödeme imzalayan ve isteği bu ödemeyle yeniden gönderen yazılımdır. x402 istemcileri için x402.org adresindeki x402 dokümantasyonuna bakın.

1. İsteği gönderin

RPC isteğini ödeme olmadan gönderin:
bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
Yanıt 402 Payment Required'dır. Başlıklar yöntemi ve fiyatı verir:
http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
Gövde, ödeme seçeneklerini accepts içinde listeler; isteğin ödenebileceği her stablecoin için bir seçenek vardır. amount stablecoin'in en küçük biriminde ifade edilir; yani 1000, 0.001 USDC veya 0.001 EURC demektir:
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. Bir x402 istemcisiyle ödeyin

402 yanıtını x402 istemcinize verin. İstemci, cüzdanınızın ödeyebileceği bir seçeneği belirler, bu tutar için bir ödeme imzalar ve ödemeyi X-Payment başlığına uygun biçimde kodlar. Ödeme, ağ ücretleri için SOL veya ETH gerektirmez.

3. İsteği ödemeyle birlikte yeniden gönderin

Aynı gövdeyi, ödemeyi X-Payment başlığına ekleyerek yeniden gönderin:
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"}'
Gövdeyi değiştirmeyin. Fiyat gövdeye göre hesaplanır; değiştirilen gövdenin fiyatı farklıysa ödeme artık bu fiyatla eşleşmez ve istek price_mismatch ile yanıtlanır.
Ödeme doğrulanıp tamamlandığında RPC yanıtı, X-Payment-Response başlığındaki ödeme makbuzuyla birlikte döner:
http
HTTP/2 200
x-payment-response: <RECEIPT>
json
{ "jsonrpc": "2.0", "id": 1, "result": … }
Bir ödeme yalnızca tek bir isteğin ücretini karşılar. Aynı ödemeyi yeniden gönderirseniz ödeme 402 payment_invalid veya 409 duplicate_payment ile reddedilir ve istek yeniden iletilmez.

Yanıtlar

x402.erpc.global'ın ödeme istemeden önce hatayla yanıtladığı bir istek için hiçbir ücret alınmaz.
Durumerror.codeNe oldu
402payment_requiredÖdeme gönderilmedi. Gövde, fiyatı ve ödeme seçeneklerini verir.
402payment_invalidÖdeme doğrulamadan geçemedi. Yeni bir ödeme imzalayın ve isteği yeniden gönderin.
402price_mismatchÖdeme, bu isteğin 402 yanıtında sunulan seçeneklerin hiçbiriyle, örneğin fiyat bakımından, eşleşmiyor.
402payment_amount_too_lowTutar, x402.erpc.global'ın tahsil ettiği en küçük ödemenin altında.
402settlement_failedÖdemenin tamamlanamadığı bildirildi. Yanıt ödeme seçeneklerini yeniden sunar.
409duplicate_paymentÖdeme daha önce kullanıldı.
400method_not_supported, invalid_requestYol bu yöntemi satmıyor veya gövdeyi kabul etmiyor. Ücret alınmaz.
413batch_too_largeToplu istek 100'den fazla çağrı içeriyor. Ücret alınmaz.
500configuration_errorYol şu anda isteklere hizmet veremiyor. Ücret alınmaz.
503payment_unavailableŞu anda hiçbir ödeme seçeneği sunulamıyor. Ücret alınmaz. Retry-After başlığında belirtilen saniye kadar bekleyip yeniden deneyin.
503service_busyAynı anda çok fazla istek var. Ücret alınmaz. Retry-After başlığında belirtilen saniye kadar bekleyip yeniden deneyin.
502settlement_failedÖdemenin sonucu bilinmiyor: ödeme gerçekleşmiş olabilir, ancak yanıtta makbuz yoktur. Yeni bir ödeme imzalamadan önce, imzaladığınız ödemenin Solana veya Base üzerinde gerçekleşip gerçekleşmediğini kontrol edin.
502, 504upstream_error, upstream_timeoutÖdeme tamamlandı ancak zincir yanıt vermedi ya da zamanında yanıt vermedi. Makbuz yine de eklenmiştir. İsteği yeniden göndermek yeni bir ödeme gerektirir.
Solana'da çok fazla veri okuyacak bir çağrı, örneğin büyük bir programa yönelik filtresiz bir getProgramAccounts çağrısı, ödeme istenmeden önce HTTP 200 ve bir JSON-RPC hatasıyla yanıtlanır; bu nedenle hiçbir ücret alınmaz.

Sonraki adımlar