Словарь
Переплата
Криптоплатёж, по которому подтверждённые переводы в сумме больше требуемого, так что сверх цены заказа остаётся излишек.
Как это работает в CryptoLike
Отдельного статуса «переплачено» в CryptoLike нет: переплата — это paid с overpaid_amount больше нуля. Вся подтверждённая сумма вместе с излишком зачисляется на ваш баланс, а вебхук invoice.paid содержит overpaid_amount, поэтому ваша система видит разницу в том же событии, которое подтверждает заказ. remaining_amount при этом никогда не бывает отрицательным.
Если на тот же адрес приходит ещё один перевод после paid, CryptoLike тоже его зачисляет и повторно отправляет invoice.paid с увеличенным overpaid_amount. Обрабатывайте каждый event_id один раз и привязывайте выдачу заказа к id платежа: второй invoice.paid по тому же платежу — это не второй заказ. Страница оплаты сообщает плательщику: «Платёж подтверждён. Излишек зачислен продавцу.» — клиент понимает, куда ушла лишняя сумма.
Дальше решаете вы: отгрузите заказ и договоритесь с клиентом об излишке — зачтите его в следующий заказ или верните выплатой на адрес, который назовёт клиент. Обычные причины — сумма, округлённая вручную в большую сторону, и случайно повторённый перевод. Обратная ситуация, перевод меньше нужного, — это недоплата.
Пример
Вебхук CryptoLike invoice.paid при переплате выглядит как обычный подтверждённый платёж, только излишек вынесен в отдельное поле. Сравнивайте с нулём overpaid_amount, а не суммы между собой: так проще и без ошибок округления. Значения ниже условные, а названия полей — часть контракта и не меняются от события к событию:
{
"type": "invoice.paid",
"data": {
"invoice": {
"status": "paid",
"ticker": "USDT",
"payer_amount": "25",
"paid_amount": "30",
"remaining_amount": "0",
"overpaid_amount": "5"
}
}
}Связанные термины
Читать дальше
Начните с тестового платежа
Создайте аккаунт, попросите у поддержки доступ к тестовой среде и посмотрите, как платёж проходит путь от pending до paid в тестовой сети.