Skip to main content
X402 охоплює HTTP, SDK, підписи, Facilitator і ончейн-транзакції. Під час усунення проблем із підписами або розрахунками рекомендується підтверджувати кожен рівень у порядку «публічна точка входу -> відповідь 402 -> SDK payment handler -> ончейн settlement». У цьому посібнику пояснюються методи перевірки кожного рівня та перелічуються поширені помилки.

Перевірка публічної точки входу

Декларація можливостей Facilitator:
Якщо повертаються facilitator, supportedKinds і кінцеві точки протоколу, це означає, що метадані можливостей є коректними. Виявлення API-ресурсів виведено з експлуатації; будь ласка, викликайте цільовий API безпосередньо та орієнтуйтеся на відповідь 402 у реальному часі. Підтримувані можливості Facilitator:
Якщо повертається kinds, це означає, що точка входу Facilitator працює нормально.

Перевірка 402 accepts

Надішліть неавтентифікований запит, який не спричинить списання коштів:
Перевірте, чи містить повернене accepts мережу, яку ви хочете використовувати. network — це ідентифікатор CAIP-2:
  • eip155:8453 + exact (Base)
  • eip155:8453 + upto (Base, постоплата за вимірюванням)
  • eip155:1187947933 + exact (SKALE)
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp + exact (Solana)
Якщо цільова мережа відсутня, це означає, що цей API або поточне середовище не налаштовано на відповідний спосіб приймання платежів X402.

Запуск розширених інструментів валідації X402Client

Репозиторій X402Client надає розширені інструменти валідації, які можна використовувати для підтвердження вибору відповіді 402, генерації підпису, paid retry та ончейн settlement. Для них потрібні funded wallet, RPC, приватний ключ і залежності для розробки. Для звичайної бізнес-інтеграції рекомендується насамперед використовувати TypeScript або Python SDK; запускайте ці інструменти лише тоді, коли потрібно локалізувати проблеми з підписом або ончейн-розрахунками. Адреса репозиторію: https://github.com/AceDataCloud/X402Client
Base:
SKALE:
Solana:
Інструменти валідації зазвичай виводять:
  1. Відповідь 402 на перший запит.
  2. Вибрану payment requirement.
  3. Дайджест підписаного PAYMENT-SIGNATURE.
  4. HTTP-статус і тіло відповіді після повторної спроби.
  5. Ончейн settlement transaction або причину помилки Facilitator у разі збою.
Не надсилайте приватні ключі або повний PAYMENT-SIGNATURE до систем логування чи заявок. Приклад результатів валідації публічного API:
Пояснення:
  • SKALE exact, Base exact, Solana exact і Base upto усі завершили paid retry від HTTP 402 до HTTP 200.
  • Ончейн-транзакцію SKALE exact можна знайти в SKALE explorer, сума розрахунку становить 0.095215 USDC.
  • Ончейн-транзакцію Base exact можна знайти в BaseScan, сума розрахунку становить 95215 atomic USDC.
  • Верхня межа підпису Base upto становить 95215 atomic USDC, але фактичний ончейн settlement становить 3 atomic USDC, що означає списання за реальним використанням при постоплаті за вимірюванням.
  • Для шляху Solana підтверджено paid retry і вихід моделі. Публічний RPC може обмежувати швидкість; якщо потрібна сувора ончейн-звірка, використовуйте власний Solana RPC або записи розрахунків на стороні платформи для підтвердження підпису транзакції.

SDK smoke test

Розширені інструменти валідації використовуються для перевірки підписів і ончейн-розрахунків. На стороні бізнесу також слід виконати SDK smoke test, щоб підтвердити, що код застосунку може автоматично обробляти 402 через payment handler. Нижче показано лише основні фрагменти; повний код потребує доповнення wallet, provider та import. TypeScript:
Python:
Якщо модель повертає фіксований рядок відповідно до вимог, це означає, що SDK, payment handler, Gateway, Facilitator і цільовий API з’єднані в єдиний ланцюг. Наведені вище два smoke test використовують SKALE exact. SKALE наразі надає лише exact, розрахунок здійснюється за фіксованою сумою, зазначеною в 402, і не зменшується відповідно до фактичного використання token. Доповнення чату належить до сценаріїв із вимірюванням за token, тому під час формальної інтеграції рекомендується перейти на Base і передавати preferScheme: 'upto', щоб розраховуватися за фактичним використанням. Результати виконання програми SDK smoke test:
Результати означають:
  • TypeScript SDK автоматично обробляє 402, підписання та повторну спробу через createX402PaymentHandler, зрештою отримуючи ADC_TS_SDK_X402_OK.
  • Python SDK виконує той самий ланцюжок через create_x402_payment_handler, зрештою отримуючи ADC_PY_SDK_X402_OK.
  • Обидва smoke test використовують SKALE payer 0xd0479FA9FD8C678303d477433d24C15e3723CC1C.
  • Об’єкт, що повертається Python SDK, є dict, у прикладі можна використовувати res["choices"][0]["message"]["content"] для читання вмісту.

E2E оплати замовлення

Для оплати замовлення використовується платформний API platform.acedata.cloud, для якого потрібен токен облікового запису платформи. Повний ланцюжок такий: створення замовлення Pending, POST /api/v1/orders/{order_id}/pay/ запускає 402, після чого повторна спроба виконується з PAYMENT-SIGNATURE. Приклад результатів перевірки оплати невеликого замовлення:
Наведені нижче записи транзакцій є історичними зразками фактичних тестів за старою політикою; суми та хеші транзакцій збережено без змін. Нові X402-замовлення більше не мають знижок залежно від способу оплати; використовуйте amount у відповіді 402 цього разу як основу для підписання та оплати.
Результати означають:
  • Після створення замовлення його статус — Pending, а ціна — 1.26.
  • Перший запит pay/ повертає HTTP 402, у accepts є Base exact і Solana exact, суми для обох становлять 1200000 atomic USDC.
  • Після повторної спроби з Base PAYMENT-SIGNATURE повертається HTTP 200, статус замовлення змінюється на Finished, а pay_way — X402.
  • Після декодування PAYMENT-RESPONSE відображаються success=True, network=base і той самий хеш транзакції.
  • На BaseScan статус транзакції — 1, сума переказу — 1200000 atomic USDC, тобто 1.2 USDC.
  • Ціна створення 1.26 була оплачена в період дії старої політики знижок для X402-платежів, остаточна сума підпису та розрахунку становить 1.2 USDC.
Якщо для оплати замовлення немає Authorization: Bearer {platform_token}, або замовлення не належить поточному обліковому запису, запит завершиться помилкою на рівні прав доступу платформи; це відрізняється від безоблікового X402 API при прямому виклику x402.acedata.cloud.

Поширені помилки

Контрольний список Base upto

upto наразі надається лише на Base (eip155:8453). SKALE надає лише exact. Оскільки підпис upto прив’язується до більшої кількості параметрів EVM typed data, під час інтеграції слід особливо переконатися, що актуальні поля у відповіді 402 повністю збігаються з підписом клієнта.
Якщо Base upto повертає invalid_upto_evm_payload_invalid_signature, насамперед перевірте:
  1. extra.chainId у записі eip155:8453 + upto, який повертає API (має бути 8453).
  2. extra.facilitatorAddress, який повертає API.
  3. Адресу Base upto facilitator, яку повертає https://facilitator.acedata.cloud/supported.
  4. Permit2 domain, spender, контракт USDC та обліковий запис підпису.
  5. Чи гаманець уже виконав approve Permit2 для Base USDC.
Digest підпису upto одночасно прив’язується до Permit2 domain, chain ID, spender, адреси одержувача, адреси facilitator і validAfter. Якщо будь-який із цих пунктів не збігається, Facilitator відновить неправильний signer і поверне invalid signature. Якщо все це узгоджено, але все одно повертається 402, наступним кроком перевірте Permit2 allowance; за відсутності авторизації повертається PERMIT2_ALLOWANCE_REQUIRED.

Збереження інформації для перевірки

За одне повне проходження перевірки зберігайте щонайменше:
  • API path і стислий опис тіла запиту;
  • вибрані network і scheme;
  • maxAmountRequired;
  • адресу гаманця payer;
  • остаточний HTTP-статус;
  • вихід моделі або ID завдання у відповіді;
  • посилання на settlement transaction;
  • Gateway trace ID або ID запису про використання платформи.
Не зберігайте приватні ключі, повний PAYMENT-SIGNATURE, повний EIP-712 signature або мнемонічну фразу.

Структуровані помилки платежів

Збій підписаного X402 повертатиме стабільні code, безпечні параметри інтерполяції, етап і прапорець можливості повторної спроби у extensions.acedatacloud.paymentError. Для діагностики пріоритетно використовуйте цю структуру, не аналізуйте англійський error верхнього рівня та не просіть користувача надати підпис гаманця або оригінальний текст ончейн-симуляції.
  • charged: false: перевірку було явно відхилено до settlement, цього разу списання не було ініційовано.
  • Без charged: результат невідомий або вже перейшов на етап settlement, спершу перевірте замовлення та ончейн-статус, прямо повторювати платіж заборонено.
  • settlement_pending: поки що не повторюйте платіж, спершу оновіть замовлення або зверніться до підтримки.
  • Нерозпізнаний code: обробляйте як payment_failed і зберігайте публічний технічний код для пошуку службою підтримки.