Понимание процесса криптоплатежей важно для построения надёжной интеграции.
Обзор жизненного цикла платежа
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌───────────┐
│ Создание │───▶│ Клиент │───▶│ Блокчейн │───▶│ Webhook │
│ платежа │ │ платит │ │ подтверждает│ │ отправлен│
└─────────────┘ └──────────────┘ └─────────────┘ └───────────┘
PENDING PENDING CONFIRMED CONFIRMED
Этап 1: Создание платежа
При оформлении заказа ваш сервер создаёт платёж:
POST /api/merchant/v1/payments
{
"amount": "50.00",
"currency": "USDT",
"network": "TRON",
"tokenStandard": "TRC20"
}
API возвращает уникальный TRON адрес:
{
"paymentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "pending",
"amount": "50.00",
"currency": "USDT",
"network": "TRON",
"generatedAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"expiresAt": "2025-01-15T10:30:00.000Z"
}
Этап 2: Страница оплаты
Отобразите понятный интерфейс:
Этап 3: Мониторинг блокчейна
После отправки USDT клиентом:
Этап 4: Webhook уведомление
При подтверждении отправляется webhook:
{
"id": "evt_a1b2c3d4_1705320600000",
"type": "payment.confirmed",
"createdAt": "2025-01-15T10:10:00.000Z",
"data": {
"paymentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "confirmed",
"amount": "50.00",
"currency": "USDT",
"network": "TRON",
"netAmount": "49.50",
"feeAmount": "0.50",
"txHash": "a1b2c3d4...",
"generatedAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"confirmations": 19
}
}
Обработка особых случаев
Недоплата
Если клиент отправил меньше требуемой суммы:
underpaidpayment.underpaidreceivedAmount, expectedAmount и underpaidAmount показывают деталиПереплата
Если клиент отправил больше требуемой суммы:
overpaidpayment.overpaidreceivedAmount, expectedAmount и overpaidAmount показывают деталиИстечение срока
После 30 минут без достаточной оплаты:
expiredpayment.expired