x402 से अपना पहला paid request भेजें

यह guide एक Solana request को x402 के पूरे flow से ले जाती है: कीमत पढ़ना, उसका भुगतान करना, और settlement receipt के साथ जवाब पाना। बाकी 15 चेन भी अपने-अपने path पर इसी तरह काम करती हैं।
आपको एक wallet चाहिए जिसमें Solana पर USDC हो, या Base पर USDC या EURC हो, और एक x402 client चाहिए: वह software जो 402 response पढ़ता है, आपके wallet से payment पर sign करता है और उस payment के साथ request दोबारा भेजता है। x402 clients के लिए x402.org पर x402 documentation देखें।

1. Request भेजें

RPC request बिना payment के भेजें:
bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
जवाब 402 Payment Required होता है। इसके headers में method और कीमत होती है:
http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
Body में accepts के अंदर payment options होते हैं, हर उस stablecoin के लिए एक, जिससे request का भुगतान किया जा सकता है। amount stablecoin की सबसे छोटी unit में होता है, इसलिए 1000 का मतलब 0.001 USDC या 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. x402 client से भुगतान करें

402 response अपने x402 client को दें। Client ऐसा option चुनता है जिसका भुगतान आपका wallet कर सके, उस amount के payment पर sign करता है और उसे X-Payment header के लिए encode करता है। इस payment में network fees के लिए SOL या ETH की ज़रूरत नहीं होती।

3. Payment के साथ request दोबारा भेजें

वही body दोबारा भेजें, और payment को X-Payment header में रखें:
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"}'
Body में कोई बदलाव न करें। कीमत body से तय होती है, इसलिए अगर बदली हुई body की कीमत अलग हो, तो payment उससे अब मेल नहीं खाता और जवाब price_mismatch होता है।
Payment verify और settle होने के बाद RPC जवाब लौटता है, और settlement receipt X-Payment-Response header में होती है:
http
HTTP/2 200
x-payment-response: <RECEIPT>
json
{ "jsonrpc": "2.0", "id": 1, "result": … }
एक payment से केवल एक request का भुगतान होता है। अगर आप वही payment दोबारा भेजते हैं, तो उसे 402 payment_invalid या 409 duplicate_payment के साथ अस्वीकार किया जाता है, और request दोबारा आगे नहीं भेजा जाता।

Response के status codes

जिस request पर x402.erpc.global भुगतान माँगने से पहले ही error लौटा देता है, उसका कोई शुल्क नहीं लगता।
Statuserror.codeक्या हुआ
402payment_requiredकोई payment नहीं भेजा गया। Body में कीमत और payment options हैं।
402payment_invalidPayment verification में पास नहीं हुआ। नए payment पर sign करें और request दोबारा भेजें।
402price_mismatchPayment, इस request के 402 में दिए गए options में से किसी से मेल नहीं खाता, जैसे कीमत में।
402payment_amount_too_lowAmount उस सबसे छोटे payment से कम है जिसे x402.erpc.global settle करता है।
402settlement_failedSettlement के विफल होने की सूचना मिली। Response में payment options फिर से दिए जाते हैं।
409duplicate_paymentPayment पहले ही इस्तेमाल हो चुका है।
400method_not_supported, invalid_requestयह path वह method नहीं बेचता, या वह body स्वीकार नहीं करता। कोई शुल्क नहीं लगता।
413batch_too_largeBatch में 100 से ज़्यादा calls हैं। कोई शुल्क नहीं लगता।
500configuration_errorयह path अभी requests नहीं संभाल सकता। कोई शुल्क नहीं लगता।
503payment_unavailableअभी कोई payment option नहीं दिया जा सकता। कोई शुल्क नहीं लगता। Retry-After में बताए गए seconds के बाद फिर कोशिश करें।
503service_busyएक साथ बहुत ज़्यादा requests हैं। कोई शुल्क नहीं लगता। Retry-After में बताए गए seconds के बाद फिर कोशिश करें।
502settlement_failedSettlement का नतीजा पता नहीं है: हो सकता है payment हो गया हो, और कोई receipt साथ नहीं है। नए payment पर sign करने से पहले Solana या Base पर जाँचें कि आपका signed payment हुआ या नहीं।
502, 504upstream_error, upstream_timeoutPayment settle हो गया, लेकिन चेन ने जवाब नहीं दिया, या समय पर जवाब नहीं दिया। Receipt फिर भी साथ होती है। Request दोबारा भेजने पर नया payment लगेगा।
Solana पर, जो call बहुत ज़्यादा data पढ़ेगी, जैसे किसी बड़े program पर बिना filter का getProgramAccounts, उसे भुगतान माँगे जाने से पहले ही HTTP 200 और JSON-RPC error के साथ जवाब दिया जाता है, इसलिए उसका कोई शुल्क नहीं लगता।

अगले कदम