Skip to main content
TypeScript является одним из самых рекомендуемых способов интеграции с Ace Data Cloud X402. Официальный SDK отвечает за обычные API вызовы, опрос задач, обработку ошибок и автоматические повторные попытки; @acedatacloud/x402-client отвечает за выдачу заголовка запроса PAYMENT-SIGNATURE при возникновении 402 Payment Required. Исходный код и адрес пакета:

Установка зависимостей

Если используется Base или SKALE, требуется возможность EVM подписи:
Если используется Solana, требуется адаптер кошелька Solana или @solana/web3.js:
Вывод проверки установки и импорта чистого npm проекта:
Результаты объясняют:
  • @acedatacloud/sdk и @acedatacloud/x402-client могут быть установлены из npm и импортированы в Node.js.
  • ethers используется для EVM типизированной подписи, @solana/web3.js используется для построения транзакций Solana.

Пример для Base или SKALE

В браузере можно напрямую использовать window.ethereum. В Node.js можно обернуть ethers.Wallet в провайдер в стиле EIP-1193.
Результат выполнения этого примера программы:
Результаты объясняют:
  • Программа сначала вызывает 402 без аутентификации, затем обработчик выдает PAYMENT-SIGNATURE, и, наконец, повторяет с тем же телом запроса.
  • content ADC_TS_SDK_X402_OK — это фиксированная строка, возвращаемая моделью, что указывает на то, что повторный запрос попал в целевой API.
  • id chatcmpl-DlcVLO4PQWvmjPDQpy9yQw2QdLGAT — это ID ответа на этот чат-комплешн, который можно использовать для сопоставления с записями платформы.
  • Результаты расчетов в блокчейне см. E2E 验证与故障排查.
Измените network на skale, чтобы использовать SKALE. Преимущество SKALE заключается в низкой стоимости газа для транзакций в блокчейне; преимущество Base заключается в более зрелой ликвидности USDC и поддержке кошельков, и только Base предоставляет upto пост-измерение. Обратите внимание: в SKALE в настоящее время только exact. Если передать preferScheme: 'upto' при network: 'skale', обработчик не найдет upto и тихо вернется к exact, не выдавая ошибку — такие сценарии, как чат-комплешн, которые измеряются по токенам, будут рассчитываться по фиксированной цене, а не по фактическому использованию. Для пост-измерения используйте Base.

Пример браузерного кошелька

При использовании MetaMask, Coinbase Wallet или WalletConnect в фронтенд-приложении обычно просто передается провайдер EIP-1193:
Браузерный кошелек вызовет всплывающее окно для подтверждения подписи. Пользователь подписывает не произвольное сообщение, а требования к оплате, возвращаемые API: адрес получателя, контракт USDC, сумма, срок действия и nonce все включены в подпись.

Пример Solana

Solana использует SPL USDC TransferChecked. Переданный адаптер кошелька должен предоставлять publicKey и signAndSendTransaction.
Путь Solana в настоящее время поддерживает только exact, не поддерживает upto. Если API возвращает несколько accepts, обработчик выберет тот, который соответствует network = 'solana'. Путь Solana на одном открытом API уже проверен, и платный повтор может вернуть HTTP 200 и ADC_SOLANA_E2E_OK. Открытые RPC запросы могут быть ограничены, поэтому в этой статье не указывается хэш транзакции Solana; если требуется сверка на блокчейне, используйте свой собственный Solana RPC или консоль для записи подтверждений.

Выбор exact или upto

Текущий обработчик TypeScript выберет первое соответствующее требование оплаты, возвращенное сервером для сети. API Ace Data Cloud обычно помещает exact для одной и той же сети перед upto, поэтому, если вы явно хотите использовать пост-измерение, необходимо передать preferScheme: 'upto'. Пример:
Если сервер не вернул требование upto для этой сети, обработчик автоматически вернется к первому доступному требованию для этой сети, обычно это exact. upto требует одноразового разрешения Permit2. upto в настоящее время доступен только на Base, поэтому необходимо сделать одно разрешение для Base USDC:
Base upto завершил публичную проверку API: HTTP 402 -> HTTP 200, последующая транзакция расчета 0x4b0b836ce1cd1171cdbc37df1637150b024214ec28e7f6f2d09122f15cbfc036. Полный вывод см. в описании тарифного плана.

Что делает SDK

Транспорт @acedatacloud/sdk выполнит обработчик платежей при получении 402:
Обработчик, возвращаемый @acedatacloud/x402-client, будет:
  1. Выбирать требование платежа для целевой сети из ctx.accepts.
  2. Конструировать EVM EIP-712 подпись или транзакцию перевода Solana в зависимости от сети.
  3. Сериализовать конверт в Base64.
  4. Возвращать { headers: { 'PAYMENT-SIGNATURE': '<base64>' } }.
  5. SDK автоматически повторит запрос с оригинальным телом.
Это означает, что бизнес-код нужно писать так же, как обычные вызовы SDK, без необходимости вручную обрабатывать повторные попытки 402.