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

Встановлення залежностей

Якщо використовуєте Base або SKALE, потрібна EVM підписна можливість:
Якщо використовуєте Solana, потрібен Solana wallet adapter або @solana/web3.js:
Чисте встановлення npm проекту та перевірка імпортів:
Результати пояснюють:
  • @acedatacloud/sdk та @acedatacloud/x402-client можуть бути встановлені з npm та імпортовані в Node.js.
  • ethers використовується для підпису EVM typed data, @solana/web3.js використовується для побудови транзакцій Solana.

Приклад для Base або SKALE

У браузері можна безпосередньо використовувати window.ethereum. У Node.js можна обернути ethers.Wallet в provider стилю EIP-1193.
Результат виконання цього прикладу програми:
Результати пояснюють:
  • Програма спочатку викликає 402 без аутентифікації, потім обробник підписує PAYMENT-SIGNATURE, і нарешті повторює запит з тим же тілом.
  • content ADC_TS_SDK_X402_OK є фіксованим рядком, який дійсно повертає модель, що свідчить про те, що повторний запит потрапив до цільового API.
  • id chatcmpl-DlcVLO4PQWvmjPDQpy9yQw2QdLGAT є ID відповіді на це chat completion, який можна використовувати для звірки з записами платформи.
  • Результати розрахунків в ланцюгу дивіться в E2E верифікація та усунення неполадок.
Змініть network на skale, щоб використовувати SKALE. Перевага SKALE полягає в низькій вартості газу для транзакцій в ланцюгу; перевага Base полягає в більш зрілій ліквідності USDC та підтримці гаманців, а також тільки Base пропонує upto післявимірювання. Зверніть увагу: SKALE наразі підтримує лише exact. Якщо в network: 'skale' передати preferScheme: 'upto', обробник не знайде upto і тихо повернеться до exact, не видаючи помилок — сценарії, які вимірюються за токенами, такі як chat completion, будуть розраховані за фіксованою ціною, а не за реальним споживанням. Для післявимірювання використовуйте Base.

Приклад браузерного гаманця

При використанні MetaMask, Coinbase Wallet або WalletConnect у фронтенд-додатках зазвичай безпосередньо передається EIP-1193 provider:
Браузерний гаманець виведе підтвердження підпису. Користувач підписує не будь-яке повідомлення, а платіжний запит, що повертається 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, тому потрібно лише один раз дозволити USDC Base:
Base upto вже завершив публічну перевірку API: HTTP 402 -> HTTP 200, наступна транзакція settlement tx - 0x4b0b836ce1cd1171cdbc37df1637150b024214ec28e7f6f2d09122f15cbfc036. Повний вивід дивіться в описі тарифного плану.

Що зробив SDK

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