/verify та /settle.
Адреса виробничого Facilitator Ace Data Cloud:
v2 wire угода
Ланцюг X402 Ace Data Cloud повністю використовує офіційний x402 v2, більше не приймає заголовок запиту v1X-Payment. При підключенні потрібно звернути увагу на три моменти:
- Заголовок запиту -
PAYMENT-SIGNATURE, значення - base64 закодований JSON envelope. - Верхній рівень envelope повинен бути
x402Version: 2, і за допомогою об’єктаacceptedоголошується вибранийschemeтаnetwork. networkвикористовує ідентифікатор CAIP-2 (наприклад,eip155:8453), не можна використовувати скорочення на кшталтbase.
PAYMENT-REQUIRED, значення якого - base64 закодоване вміст виклику, що полегшує клієнту читання вимог до оплати без розбору тіла.
Основний інтерфейс
GET /supported
Переглянути підтримувані мережі та схеми:
networkвикористовує ідентифікатор CAIP-2, не є скороченням на кшталтbase,skale./supportedвказує, що Facilitator має відповідні можливості верифікації та розрахунків.- Base, SKALE та Solana підтримують
exact;uptoнаразі доступний лише на Base. signers- це адреси, які Facilitator використовує для подання транзакцій розрахунків.- Чи дозволяє конкретний API ці варіанти, все ще залежить від
acceptsцього API.
POST /verify
Перевірка, чи відповідає PAYMENT-SIGNATURE, надісланий клієнтом, певним вимогам до оплати.
Тіло запиту:
paymentRequirements v2 складається з scheme, network, asset, amount, payTo, maxTimeoutSeconds та extra, поле суми - amount. У відповіді API 402 в accepts[] також буде додатково повернуто maxAmountRequired для читання клієнтом верхньої межі, але це не є полем тіла запиту Facilitator.
Успішна відповідь:
PAYMENT-RESPONSE для оплати виробничого замовлення після декодування містить результати розрахунків. Результат виконання програми для оплати замовлення Base:
success=Trueвказує на успішне завершення розрахунків Facilitator.transaction- це хеш транзакції в ланцюзі,pay_idзамовлення також записується в те саме значення.- На explorer можна побачити переказ
1200000atomic USDC. errorReason=Noneвказує на те, що під час цього розрахунку не було повернуто бізнес-ошибок.
isValid буде false. Бізнес-сторона повинна читати invalidReason, а не просто дивитися на код статусу HTTP.
POST /settle
Розрахунок вже перевіреного авторизованого платежу в ланцюзі.
Тіло запиту в основному таке ж, як і у /verify. Відмінність upto полягає в тому, що paymentRequirements.amount під час розрахунку переписується на фактичну суму розрахунку; верхня межа підпису фіксується Facilitator на етапі верифікації, під час розрахунку перевіряється, що фактична сума не перевищує цю межу.
Успішна відповідь:
upto дорівнює 0, transaction може бути порожнім рядком, що вказує на те, що немає потреби у виконанні транзакції в ланцюзі.
Як Ace Data Cloud Gateway використовує Facilitator
Ланцюг API Ace Data Cloud Gateway виглядає так:- Клієнт вперше запитує API, не надаючи
AuthorizationтаPAYMENT-SIGNATURE. - Gateway розраховує попередню ціну запиту, повертає 402 та
accepts. - Клієнт підписує та повторно надає
PAYMENT-SIGNATURE. - Gateway декодує
PAYMENT-SIGNATURE, вибирає відповідні вимоги до оплати. - Gateway викликає Facilitator
/verify. - Після успішного
/verifyGateway пропускає запит до цільового API. - Після повернення цільового API Gateway на етапі
/recordвикликає Facilitator/settle. - Gateway записує хеш транзакції в ланцюзі в метадані використання.
exactна кроці 7 розрахунок суми підпису;uptoна кроці 7 відповідно до реального використання записатиamount, а потім розрахувати фактичну суму.
Як підключити свій API
Якщо ви хочете, щоб ваш API підтримував X402, ви можете реалізувати це за цією структурою:- Підготуйте
paymentRequirementsдля кожного платного інтерфейсу, що містить мережу, суму, адресу отримувача, адресу активу та домен підпису. - Якщо запит не містить
PAYMENT-SIGNATURE, поверніть HTTP 402 таaccepts. - Якщо запит містить
PAYMENT-SIGNATURE, декодуйте Base64, щоб отриматиpaymentPayload. - Викликайте Facilitator
/verify. - Після успішної перевірки виконуйте бізнес-логіку.
- Після успішного виконання бізнесу викликайте Facilitator
/settle. - Збережіть
payer,transaction,amount,networkдля звірки.
paymentRequirements для викликів /verify та /settle, не довіряючи сумі, адресі отримувача або адресі активу, переданим клієнтом.
Захист від повторних запитів
Facilitator буде записувати nonce. Авторизація з однаковим nonce не може бути повторно перевірена та розрахована. Це означає:- Клієнт повинен підписувати новий envelope з кожним запитом;
- Якщо
/settleвже надіслав транзакцію, але поки що не підтверджена, можна повторно спробувати/settleз тим же nonce для ідентного звіряння; - Не зберігайте один і той же
PAYMENT-SIGNATUREдля багаторазових викликів API.

