Перейти к основному содержимому

Changelog

Сентябрь 2026

10 сентября

HTML-форма передает подписанный контейнер. Вместо отдельных полей счета — data (base64url от JSON) и signature (HMAC-SHA256 от строки data). Адрес приема сменился с invoices/createFromForm на invoices/form. Прежние формы не работают, их нужно пересобрать: раздел «Подпись HTML-формы».

8 сентября

Числовые поля в теле вебхука стали числами. Шесть полей раньше передавались строками, теперь передаются числами: project.commissionRate, invoice.commissionFiatUSD, invoice.amountFiatUSD, invoice.amountFiat, invoice.calcAmountFiat, payment.amount. Состав полей, их имена и порядок не изменились.

Что учесть: незначащие нули пропадают, сумма 10.00 придет как 10. Суммы меньше 0.0001 приходят в экспоненциальной записи, например 1.0e-6 — штатный разбор JSON отдаст правильное число, сломается только ручной разбор строки.

Уведомления, собранные до выкатки и еще не доставленные, придут в прежнем формате. Приемник должен принимать оба варианта, пока очередь не опустеет — это занимает не больше двух суток.

6 сентября

Числовые поля в ответах API стали числами. Затрагивает invoices/list, payments/list и invoices/create.

ПолеБылоСтало
commissionFiatUSD"0.10"0.1
amountFiatUSD"10.00"10
amountFiat"1000.00"1000
views"0"0
payment.amount"10.500000000"10.5

Ключ, ограниченный проектом, применяет ограничение во всех методах. Раньше часть методов проект не учитывала. Теперь в методах выдачи это фильтр, а обращение к счету или кошельку чужого проекта отклоняется с ответом Restricted project. Метод, который не умеет работать с ограничением по проекту, такому ключу закрыт. Подробности — в разделе «Область действия».

Список платежей отдает непривязанные платежи. Раньше метод payments/list возвращал только платежи, связанные со счетом. Теперь в выдачу попадают все платежи по вашим кошелькам, у непривязанного отсутствует блок invoice. Именно такие платежи нужны для ручной привязки через invoices/bindPayment.

Отмена счета различает причины отказа. Раньше и на отсутствие счета, и на невыполненные условия приходил общий Invoice not found. Теперь Invoice not found означает только отсутствие счета, а невыполненные условия дают Invoice cannot be canceled.

Идентификаторы неверного формата отклоняются. invoices/list проверяет invoiceId, invoiceUid и projectId, payments/listwalletId и invoiceId. Не подошедшее значение дает Parameter is filled in incorrectly с именем поля. Раньше такой параметр молча отбрасывался, и приходила выдача без фильтра.

Границы периода включают весь названный день. startDate и endDate трактуются от 00:00:00 до 23:59:59. Раньше конечный день отсекался целиком, и запрос за одни сутки возвращал только записи, созданные ровно в полночь. Затрагивает invoices/list, payments/list, statistics/invoices и statistics/payments.

В историю изменения балансов добавлено поле проекта. В каждой операции метода billing/history появилось поле projectId. У операций уровня аккаунта — пополнений и бонусов — оно равно null.

4 сентября

Описание и служебные данные возвращаются в исходном виде. Поля description и serviceData раньше хранились закодированными, и в ответах API кавычка приходила как ", а знак меньше — как <. Теперь возвращается ровно то, что передал продавец. При выводе в HTML экранируйте значение на своей стороне.

HTML-формы принимают только POST. Создание счета переходом по ссылке с параметрами в адресной строке больше не работает — параметры читаются только из тела запроса. Если вы использовали ссылки, замените их на форму с method="post".

3 сентября

Уведомления вебхука подписываются. Добавлены заголовки X-Timestamp и X-Signature, подпись считается алгоритмом HMAC-SHA256 на секрете вебхука. Проверка подписи позволяет отличить настоящее уведомление от подделки. Механика и примеры — в разделе «Проверка подписи вебхука».

Изменение обратно совместимо: если проверку не добавлять, обработчик продолжит работать как раньше.