События и данные webhook
Идентификаторы доставки и основания для выполнения заказа.
X-Event-Id — постоянный ID события, совпадающий с X-Idempotency-Key. X-Delivery-Id идентифицирует доставку конкретному endpoint. Повторы сохраняют эти идентификаторы.
payment_session.paid
Сессия v2 передаёт sessionId, invoiceId, attemptId, externalId, projectId, mode, paymentMode, status, amountUsd, currency, amountPaid, amountExpected, txHash, chain. Сверьте подпись, авторизованный статус и сохранённые заказ/проект/режим/расчёт цены. Test не выполняет Live-заказ. Дочерний счёт не разрешает повторную выдачу.
invoice.paid
Событие отдельных счетов v1 содержит invoiceId, externalId, userId, status: "PAID", строковые amountPaid, amountExpected, txHash, chain. После подписи требуйте PAID и совпадение сохранённых invoiceId/externalId.
treasury.credited
Зачисление сервисного баланса аккаунта, не оплата заказа. Данные: treasuryDepositId, userId, amount, assetId, txHash, chain. Никогда не запускайте выдачу товара по этому событию.
integration.test / webhook.test
Проверяют соединение и подпись, но не представляют платёж. Выбирайте обработчик по подписанному X-Event-Type и отклоняйте противоречия с телом. Полный безопасный процесс интеграции.
Синтетический пример оплаты сессии
Искусственные данные, не платёжные инструкции. При buyer pricing добавляются pricingVersion/feePayer/pricing и поля суммы проекта. networkKey и test зависят от контекста. Проверяйте подписанный тип события и авторизованную сессию.
{
"sessionId": "00000000-0000-4000-8000-000000000001",
"invoiceId": "00000000-0000-4000-8000-000000000002",
"attemptId": "00000000-0000-4000-8000-000000000002",
"externalId": "order-demo-1042",
"userId": "EXAMPLE_MERCHANT_USER",
"projectId": "EXAMPLE_PROJECT",
"mode": "TEST",
"paymentMode": "TEST",
"networkKey": "EXAMPLE_NETWORK_KEY",
"test": true,
"status": "PAID",
"amountUsd": "25",
"currency": "USD",
"ratePolicy": "STABLECOIN_PAR_1_V1",
"asset": "USDT",
"amountPaid": "25.000001",
"amountExpected": "25.000001",
"txHash": "EXAMPLE_NOT_A_TRANSACTION_HASH",
"chain": "TRON"
}