/verify и /settle у Facilitator.
Производственный адрес Facilitator Ace Data Cloud:
v2 wire соглашение
Цепочка X402 Ace Data Cloud полностью использует официальную версию x402 v2 и больше не принимает заголовок запроса v1X-Payment. При подключении необходимо обратить внимание на три момента:
- Заголовок запроса -
PAYMENT-SIGNATURE, значение - это base64 закодированный JSON envelope. - Верхний уровень envelope должен быть
x402Version: 2и с помощью объектаacceptedобъявить выбранныеschemeиnetwork. networkиспользует идентификатор CAIP-2 (например,eip155:8453), нельзя использовать сокращения типаbase.
PAYMENT-REQUIRED, значение которого - это base64 закодированное содержание того же вызова, что упрощает клиенту чтение требований к оплате без разбора тела.
Основные интерфейсы
GET /supported
Просмотр поддерживаемых сетей и схем:
networkиспользует идентификатор CAIP-2, а не сокращения типаbase,skale./supportedуказывает, что Facilitator обладает соответствующими возможностями верификации и расчета.- Base, SKALE и Solana поддерживают
exact;uptoв настоящее время доступен только на Base. signers- это адреса, которые Facilitator использует для отправки расчетных транзакций.- Разрешение конкретного API на использование этих опций все еще зависит от
acceptsэтого API.
POST /verify
Проверка, соответствует ли переданная клиентом PAYMENT-SIGNATURE определенным требованиям к оплате.
Тело запроса:
paymentRequirements версии 2 включает scheme, network, asset, amount, payTo, maxTimeoutSeconds и extra, сумма указывается в поле amount. В ответе API 402 в accepts[] также будет дополнительно возвращено maxAmountRequired для чтения клиентом верхнего предела, но это не является полем тела запроса Facilitator.
Успешный ответ:
PAYMENT-RESPONSE для оплаты производственного заказа после декодирования содержит результат расчета. Результат выполнения программы оплаты заказа Base:
success=Trueуказывает на успешное завершение расчета Facilitator.transaction- это хэш транзакции в блокчейне, идентификатор заказаpay_idтакже записан в то же значение.- В explorer можно увидеть перевод
1200000atomic USDC на Base USDC. errorReason=Noneуказывает на то, что в этом расчете не было бизнес-ошибок.
isValid будет false. Бизнес-сторона должна читать invalidReason, а не просто смотреть на код состояния HTTP.
POST /settle
Перевод уже проверенного авторизованного расчета в блокчейн.
Тело запроса в основном совпадает с /verify. Разница для upto заключается в том, что paymentRequirements.amount при расчете изменяется на фактическую сумму расчета; верхний предел подписи фиксируется Facilitator на этапе верификации, а при расчете проверяется, что фактическая сумма не превышает этот предел.
Успешный ответ:
upto равна 0, transaction может быть пустой строкой, что означает, что нет необходимости отправлять транзакцию в блокчейн.
Как Ace Data Cloud Gateway использовать Facilitator
Цепочка API Ace Data Cloud выглядит следующим образом:- Клиент впервые запрашивает API, не указывая
AuthorizationиPAYMENT-SIGNATURE. - Gateway вычисляет предварительную цену запроса, возвращает 402 и
accepts. - Клиент подписывает и повторно отправляет с
PAYMENT-SIGNATURE. - Gateway декодирует
PAYMENT-SIGNATURE, выбирает соответствующее требование к оплате. - Gateway вызывает Facilitator
/verify. - После успешного выполнения
/verifyGateway пропускает запрос к целевому API. - После возврата целевого API Gateway на этапе
/recordвызывает Facilitator/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уже отправил транзакцию, но временно не подтверждена, можно повторно попробовать/settleс тем же nonce для идемпотентной сверки; - Не кэшируйте один и тот же
PAYMENT-SIGNATUREдля многократных вызовов API.

