/verify と /settle を呼び出します。
Ace Data Cloud の生産ファシリテーターアドレスは次の通りです:
v2 wire 規約
Ace Data Cloud の X402 リンクは公式の x402 v2 を全面的に使用しており、v1 のX-Payment リクエストヘッダーは受け付けません。接続時には以下の三点に注意が必要です:
- リクエストヘッダーは
PAYMENT-SIGNATUREで、値は base64 エンコードされた JSON envelope です。 - envelope の最上位は
x402Version: 2でなければならず、acceptedオブジェクトで今回選択したschemeとnetworkを宣言します。 networkは CAIP-2 識別子を使用し(例:eip155:8453)、baseのような略称は使用できません。
PAYMENT-REQUIRED レスポンスヘッダーを含み、クライアントがボディを解析せずに支払い要求を読み取ることができます。
コアインターフェース
GET /supported
サポートされているネットワークとスキームを確認します:
networkは CAIP-2 識別子を使用し、base、skaleのような略称は使用しません。/supportedはファシリテーターが対応する検証と決済能力を持っていることを示します。- Base、SKALE、Solana はすべて
exactをサポートしています;uptoは現在 Base のみで提供されています。 signersはファシリテーターが決済トランザクションを提出するためのアドレスです。- 特定の API がこれらのオプションを許可するかどうかは、その API の 402
acceptsに基づきます。
POST /verify
クライアントから送信された PAYMENT-SIGNATURE が特定の支払い要件を満たしているかどうかを検証します。
リクエストボディ:
paymentRequirements フィールドは scheme、network、asset、amount、payTo、maxTimeoutSeconds、および extra で構成され、金額フィールドは amount です。API 402 応答の accepts[] には、クライアントが上限を読み取るための maxAmountRequired が追加で返されますが、これはファシリテーターリクエストボディのフィールドには含まれません。
成功応答:
PAYMENT-RESPONSE レスポンスヘッダーをデコードすると、決済結果が含まれます。Base 注文の支払いのプログラム実行結果:
success=Trueはファシリテーターの決済が成功したことを示します。transactionはチェーン上のトランザクションハッシュで、注文のpay_idも同じ値が書き込まれます。- explorer で
1200000atomic USDC の Base USDC 転送を見ることができます。 errorReason=Noneは今回の決済にビジネスエラーが返されなかったことを示します。
isValid は false になります。ビジネス側は invalidReason を読み取るべきであり、HTTP ステータスコードだけを確認すべきではありません。
POST /settle
すでに検証された承認をチェーン上に決済します。
リクエストボディは /verify と基本的に一致します。upto の違いは:paymentRequirements.amount が決済時に実際の決済金額に書き換えられ、署名上限はファシリテーターが検証段階で記録し、決済時に実際の金額がその上限を超えないことを確認します。
成功応答:
upto の実際の金額が 0 の場合、transaction は空の文字列になる可能性があり、チェーン上のトランザクションを発行する必要がないことを示します。
Ace Data Cloud Gateway がファシリテーターを使用する方法
Ace Data Cloud API Gateway のリンクは次の通りです:- クライアントが最初に API をリクエストし、
AuthorizationとPAYMENT-SIGNATUREを含めません。 - Gateway がリクエストの予想価格を計算し、402 と
acceptsを返します。 - クライアントが署名後、
PAYMENT-SIGNATUREを付けて再試行します。 - Gateway が
PAYMENT-SIGNATUREをデコードし、一致する支払い要件を選択します。 - Gateway がファシリテーターの
/verifyを呼び出します。 /verifyが成功した後、Gateway がリクエストをターゲット API に通します。- ターゲット API が応答した後、Gateway が
/recordステージでファシリテーターの/settleを呼び出します。 - Gateway がチェーン上のトランザクションハッシュを使用記録メタデータに書き込みます。
exactはステップ 7 での決済署名金額;uptoはステップ 7 で実際の使用量に基づいてamountに書き込み、実際の金額を決済します。
自分の API の接続方法
自分の API が X402 をサポートするようにするには、次の構造で実装できます:- 各有料インターフェースのために
paymentRequirementsを準備し、ネットワーク、金額、受取先アドレス、資産アドレス、署名ドメインを含めます。 - リクエストに
PAYMENT-SIGNATUREがない場合、HTTP 402 とacceptsを返します。 - リクエストに
PAYMENT-SIGNATUREがある場合、Base64 デコードしてpaymentPayloadを取得します。 - Facilitator の
/verifyを呼び出します。 - 検証が成功した後、ビジネスロジックを実行します。
- ビジネスが成功した後、Facilitator の
/settleを呼び出します。 payer、transaction、amount、networkを保存して、照合のために使用します。
paymentRequirements を使って /verify と /settle を呼び出す必要があり、クライアントから返された金額、受取先アドレス、または資産アドレスを信頼しないでください。
リプレイ保護
Facilitator は nonce を記録します。同じ nonce の承認は再度検証および決済できません。 これは意味します:- クライアントは毎回新しい envelope に署名する必要があります;
/settleが取引を提出したが一時的に確認されていない場合、同じ nonce を使って/settleを再試行して冪等性の照合を行うことができます;- 同じ
PAYMENT-SIGNATUREをキャッシュして複数回の API 呼び出しに使用しないでください。

