Skip to main content
Помимо прямой оплаты по API-запросам, Ace Data Cloud также поддерживает оплату заказов через X402. Основной протокол оплаты заказов и вызовов API одинаков: первый запрос возвращает 402, клиент подписывает PAYMENT-SIGNATURE, затем повторяет тот же запрос. Разница в том, что оплата заказов относится к API платформы и требует токен аккаунта; в то время как AI API, вызываемый напрямую через x402.acedata.cloud, может использовать только X402 и не требует API Token.

Подготовка заказа

Перейдите в консоль Ace Data Cloud, выберите заказ, который нужно оплатить, и запишите ID заказа. Если у вас ещё нет заказа, вы можете создать заказ, ожидающий оплаты, на странице тарифов. Цена заказа определяется отображением на странице, а amount в ответе X402 402 является окончательным основанием для подписи.

Создание токена аккаунта

Запросы на оплату заказов требуют токена аккаунта. Откройте страницу Token платформы и создайте token формата platform-v1-.... В последующих запросах используйте:
Токен аккаунта отличается от обычного API Token. Обычный API Token используется для расходования API-кредитов; токен аккаунта используется для операций с ресурсами платформы от имени вашего аккаунта, например для оплаты заказов.

Вызов 402

Сначала отправьте запрос без PAYMENT-SIGNATURE:
Статус ответа будет 402, а ответ содержит accepts:
Оплата заказов использует официальный x402 v2: x402Version равен 2, network использует идентификатор CAIP-2, а поле суммы — amount. Результат выполнения программы по созданию заказа на 10 Credits и вызову 402:
Следующие записи транзакций являются историческими образцами фактического тестирования в рамках старой политики, суммы и хеши транзакций сохранены без изменений. Новые заказы X402 больше не получают скидку за способ оплаты; используйте amount из текущего ответа 402 в качестве основания для подписи и оплаты.
Описание результата:
  • После успешного создания заказа его статус — Pending, в этот момент он ещё не оплачен в блокчейне.
  • Первый запрос pay/ не содержит PAYMENT-SIGNATURE, поэтому возвращает HTTP 402.
  • accepts одновременно предоставляет Base exact и Solana exact; в дальнейшем в этом руководстве выбирается Base.
  • Цена при создании заказа составляет 1.26; при оплате в период старой политики скидок X402 фактическая сумма подписи и расчёта составляет 1.2 USDC, что соответствует 1200000 atomic USDC.
Обратите внимание, что resource здесь — это поле, возвращаемое сервером и участвующее в подписи; клиент не должен самостоятельно изменять содержащиеся в нём протокол, путь или ID заказа.

Подпись и повторная попытка

Для оплаты заказов можно повторно использовать @acedatacloud/x402-client или низкоуровневые функции подписи acedatacloud-x402. Ниже приведён пример TypeScript:
Результат выполнения программы после подписи и повторной попытки для того же заказа с Base 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 показывает, что адрес плательщика перевёл на адрес получения средств платформы 1200000 atomic USDC, то есть 1.2 USDC.

Успешный ответ и квитанция

После успешной оплаты заказа тело ответа содержит информацию о заказе. Платформа также передаёт в заголовке ответа PAYMENT-RESPONSE ответ о settlement в кодировке Base64; после декодирования часто встречаются следующие поля: Если вам требуется сверка, рекомендуется одновременно сохранять ID заказа, адрес кошелька плательщика, transaction и итоговый статус заказа.

Примечания

  • Для оплаты заказа требуется токен аккаунта платформы; нельзя завершить её, полагаясь только на подпись кошелька X402.
  • amount использует atomic units USDC, 1200000 означает 1.2 USDC.
  • Не формируйте самостоятельно адрес получения средств или адрес актива; ориентируйтесь на 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 ошибки.