---
title: "Отправьте первый платный запрос через x402"
description: "Отправьте запрос на x402.erpc.global, узнайте цену из ответа 402, оплатите запрос с помощью клиента x402 и получите результат RPC с квитанцией о расчёте."
canonical: "https://erpc.global/ru/doc/x402/quickstart/"
locale: "ru"
---

# Отправьте первый платный запрос через x402

В этом руководстве один запрос к Solana проходит через x402 целиком: вы узнаёте цену, оплачиваете запрос и получаете ответ с квитанцией о расчёте. С остальными 15 блокчейнами всё работает так же, меняется только путь.

Вам понадобятся кошелёк с USDC в Solana или с USDC либо EURC в Base и клиент x402 — программа, которая читает ответ 402, подписывает платёж вашим кошельком и повторно отправляет с ним запрос. О клиентах x402 читайте в документации x402 на [x402.org](https://x402.org/).

## 1. Отправьте запрос

Отправьте RPC-запрос без оплаты:

```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. В заголовках указаны метод и цена:

```http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
```

В поле `accepts` тела ответа перечислены варианты оплаты — по одному на каждый стейблкоин, которым можно оплатить запрос. `amount` указан в наименьших единицах стейблкоина, поэтому 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

Передайте ответ 402 своему клиенту x402. Он выберет вариант, который ваш кошелёк может оплатить, подпишет платёж на эту сумму и закодирует его для заголовка X-Payment. Для этого платежа не нужны SOL или ETH на комиссии сети.

## 3. Отправьте запрос повторно с платежом

Отправьте то же тело запроса ещё раз, указав платёж в заголовке 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"}'
```

Не меняйте тело запроса. Цена рассчитывается по телу запроса, поэтому если у изменённого тела другая цена, платёж ей больше не соответствует и в ответ придёт `price_mismatch`.

Когда платёж проверен и проведён, возвращается ответ RPC с квитанцией о расчёте в заголовке X-Payment-Response:

```http
HTTP/2 200
x-payment-response: <RECEIPT>
```

```json
{ "jsonrpc": "2.0", "id": 1, "result": … }
```

Каждый платёж действует только для одного запроса. Если отправить тот же платёж повторно, он будет отклонён с 402 `payment_invalid` или 409 `duplicate_payment`, и запрос не будет передан повторно.

## Ответы

Запрос, на который x402.erpc.global отвечает ошибкой до того, как запросить оплату, ничего не стоит.

| Статус | `error.code` | Что произошло |
| --- | --- | --- |
| 402 | `payment_required` | Платёж не был отправлен. В теле ответа указаны цена и варианты оплаты. |
| 402 | `payment_invalid` | Платёж не прошёл проверку. Подпишите новый платёж и отправьте запрос повторно. |
| 402 | `price_mismatch` | Платёж не соответствует ни одному варианту, который предложил ответ 402 на этот запрос, например по цене. |
| 402 | `payment_amount_too_low` | Сумма меньше минимального платежа, который проводит x402.erpc.global. |
| 402 | `settlement_failed` | Получен ответ, что расчёт не прошёл. В ответе снова указаны варианты оплаты. |
| 409 | `duplicate_payment` | Этот платёж уже использован. |
| 400 | `method_not_supported`, `invalid_request` | Этот метод на данном пути не продаётся, или путь не принимает такое тело запроса. Плата не взимается. |
| 413 | `batch_too_large` | В batch больше 100 вызовов. Плата не взимается. |
| 500 | `configuration_error` | Путь сейчас не может обслуживать запросы. Плата не взимается. |
| 503 | `payment_unavailable` | Сейчас нельзя предложить ни одного варианта оплаты. Плата не взимается. Повторите запрос через указанное в Retry-After число секунд. |
| 503 | `service_busy` | Слишком много одновременных запросов. Плата не взимается. Повторите запрос через указанное в Retry-After число секунд. |
| 502 | `settlement_failed` | Результат расчёта неизвестен: платёж мог пройти, а квитанция не приложена. Прежде чем подписывать новый платёж, проверьте в Solana или Base, прошёл ли подписанный вами платёж. |
| 502, 504 | `upstream_error`, `upstream_timeout` | Платёж проведён, но блокчейн не ответил или не ответил вовремя. Квитанция всё равно приложена. Чтобы отправить запрос повторно, нужен новый платёж. |

В Solana на вызов, который прочитал бы слишком много данных, например `getProgramAccounts` без фильтров для большой программы, приходит HTTP 200 и ошибка JSON-RPC ещё до запроса оплаты, поэтому он ничего не стоит.

## Что дальше

- [Как x402 рассчитывает цену запроса](https://erpc.global/ru/doc/x402/pricing/): цена одного вызова, минимум \$0.001 и batch-запросы.
- [Обзор x402](https://erpc.global/ru/doc/x402/overview/): путь каждого блокчейна и варианты оплаты.
- [Документ OpenAPI](https://x402.erpc.global/doc): формат запросов и ответов для каждого пути.
