---
title: "透過 x402 傳送第一個付費請求"
description: "向 x402.erpc.global 傳送請求，從 402 回應讀取價格，以 x402 用戶端付款，然後取得 RPC 結果與結算收據。"
canonical: "https://erpc.global/zh-tw/doc/x402/quickstart/"
locale: "zh-tw"
---

# 透過 x402 傳送第一個付費請求

本指南以一個 Solana 請求為例，走完 x402 的完整流程：讀取價格、付款，然後取得附有結算收據的結果。其他 15 條鏈在各自的路徑上以相同方式運作。

您需要一個錢包，其中持有 Solana 上的 USDC，或 Base 上的 USDC 或 EURC；另外還需要一個 x402 用戶端，也就是讀取 402 回應、以您的錢包簽署付款，並附上該付款重新傳送請求的軟體。關於 x402 用戶端，請參閱 [x402.org](https://x402.org/) 上的 x402 文件。

## 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` | 批次請求包含超過 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/zh-tw/doc/x402/pricing/)：單次呼叫的價格、\$0.001 的最低收費與批次請求。
- [x402 概覽](https://erpc.global/zh-tw/doc/x402/overview/)：每條鏈的路徑與付款選項。
- [OpenAPI 文件](https://x402.erpc.global/doc)：每個路徑的請求與回應格式。
