PAYMENT-SIGNATURE, затем повторяет тот же запрос.
Разница в том, что оплата заказов относится к API платформы и требует токен аккаунта; в то время как AI API, вызываемый напрямую через x402.acedata.cloud, может использовать только X402 и не требует API Token.
Подготовка заказа
Перейдите в консоль Ace Data Cloud, выберите заказ, который нужно оплатить, и запишите ID заказа. Если у вас ещё нет заказа, вы можете создать заказ, ожидающий оплаты, на странице тарифов. Цена заказа определяется отображением на странице, аamount в ответе X402 402 является окончательным основанием для подписи.
Создание токена аккаунта
Запросы на оплату заказов требуют токена аккаунта. Откройте страницу Token платформы и создайте token форматаplatform-v1-....
В последующих запросах используйте:
Вызов 402
Сначала отправьте запрос безPAYMENT-SIGNATURE:
accepts:
x402Version равен 2, network использует идентификатор CAIP-2, а поле суммы — amount.
Результат выполнения программы по созданию заказа на 10 Credits и вызову 402:
Следующие записи транзакций являются историческими образцами фактического тестирования в рамках старой политики, суммы и хеши транзакций сохранены без изменений. Новые заказы X402 больше не получают скидку за способ оплаты; используйте amount из текущего ответа 402 в качестве основания для подписи и оплаты.
- После успешного создания заказа его статус —
Pending, в этот момент он ещё не оплачен в блокчейне. - Первый запрос
pay/не содержитPAYMENT-SIGNATURE, поэтому возвращает HTTP 402. acceptsодновременно предоставляет Baseexactи Solanaexact; в дальнейшем в этом руководстве выбирается Base.- Цена при создании заказа составляет
1.26; при оплате в период старой политики скидок X402 фактическая сумма подписи и расчёта составляет1.2USDC, что соответствует1200000atomic USDC.
resource здесь — это поле, возвращаемое сервером и участвующее в подписи; клиент не должен самостоятельно изменять содержащиеся в нём протокол, путь или ID заказа.
Подпись и повторная попытка
Для оплаты заказов можно повторно использовать@acedatacloud/x402-client или низкоуровневые функции подписи acedatacloud-x402. Ниже приведён пример TypeScript:
exact:
status 200означает, что интерфейс оплаты заказа платформы принял этуPAYMENT-SIGNATURE.has_x_payment_response Trueозначает, что заголовок ответа содержит квитанциюPAYMENT-RESPONSEв кодировке Base64.settle_header.success=Trueиnetwork=baseозначают, что Facilitator завершил settlement в Base.- Итоговый статус заказа —
Finished,pay_way—X402, а вpay_idзаписан хеш ончейн-транзакции. - Событие
Transferв BaseScan показывает, что адрес плательщика перевёл на адрес получения средств платформы1200000atomic USDC, то есть1.2USDC.
Успешный ответ и квитанция
После успешной оплаты заказа тело ответа содержит информацию о заказе. Платформа также передаёт в заголовке ответаPAYMENT-RESPONSE ответ о settlement в кодировке Base64; после декодирования часто встречаются следующие поля:
Если вам требуется сверка, рекомендуется одновременно сохранять ID заказа, адрес кошелька плательщика,
transaction и итоговый статус заказа.
Примечания
- Для оплаты заказа требуется токен аккаунта платформы; нельзя завершить её, полагаясь только на подпись кошелька X402.
amountиспользует atomic units USDC,1200000означает1.2USDC.- Не формируйте самостоятельно адрес получения средств или адрес актива; ориентируйтесь на
acceptsв ответе 402. - Если одна и та же
PAYMENT-SIGNATUREотправляется повторно, Facilitator применяет защиту от повторного воспроизведения по nonce.
Ответ при неудачной оплате
Первый HTTP 402 безPAYMENT-SIGNATURE является обычным платёжным вызовом и не означает неудачу оплаты. При сбое проверки или settlement после подписи в качестве совместимого резерва по-прежнему сохраняется стандартная строка error, а стабильная структура ошибки возвращается в extensions.acedatacloud.paymentError:
code; для неизвестного code следует использовать общий сбой оплаты. charged — трёхсоставное поле: false возвращается только при явном отклонении до settlement; отсутствие поля означает, что статус списания неизвестен, и его нельзя трактовать как «средства не списаны». После перехода текущего заказа в Failed повторная попытка для того же заказа невозможна; после исправления проблемы с кошельком создайте новый заказ.
Не записывайте и не отправляйте полную PAYMENT-SIGNATURE, подпись кошелька, payload авторизации, исходную диагностику Facilitator или ответы RPC. Для проверки службе поддержки достаточно ID заказа и публичного code ошибки.
