Уведомления CloudPayments с проверкой подписи и повторами
CloudPayments подписывает каждое уведомление заголовком Content-HMAC. HookPilot проверяет подпись по вашему API Secret, отсекает чужие запросы и доставляет настоящие уведомления в бэкенд столько раз, сколько нужно.
Бесплатный тариф без карты: одно подключение и 10 000 событий в месяц.
Как подключить
Источник CloudPayments считается одним подключением независимо от числа уведомлений.
- 1
Создайте источник с провайдером «CloudPayments» и вставьте API Secret из настроек сайта в личном кабинете CloudPayments.
- 2
Скопируйте адрес приёма и укажите его в разделе уведомлений CloudPayments для нужных типов: Pay, Fail, Refund, Recurrent и других.
- 3
Выберите эндпоинты-получатели и подпишите их на типы событий, например cloudpayments.pay или маску cloudpayments.*.
- 4
Отправьте тестовое уведомление из кабинета CloudPayments и убедитесь, что оно появилось в ленте принятого.
Что проверяется при приёме
Заголовок Content-HMAC
Подпись считается как HMAC-SHA256 от тела запроса на вашем API Secret и кодируется в base64. Значение сравнивается с заголовком за постоянное время, уведомление без подписи или с неверной подписью отклоняется.
JSON и форма
CloudPayments может присылать тело как JSON или как форму. Оба формата разбираются одинаково, а тип события берётся из поля Type.
Идентификатор транзакции
Поле TransactionId становится внешним идентификатором события: повтор того же уведомления не создаст второй вебхук.
Check-уведомление остаётся у вас
Уведомление Check требует синхронного ответа, принимать или отклонять платёж. Его должен обрабатывать ваш бэкенд напрямую. Через HookPilot пропускайте уведомления о результате: Pay, Fail, Refund и остальные.
Событие не пришло
Три причины, которые встречаются чаще остальных. Всё принятое видно в ленте принятого в кабинете вместе с типом и историей доставки.
Уведомление отклонено по подписи
API Secret в источнике не совпадает с тем, что указан в кабинете CloudPayments. После смены секрета в CloudPayments обновите его и в источнике.
CloudPayments сообщает, что адрес недоступен
Проверьте, что источник активен и адрес скопирован без изменений. Отвечает HookPilot, поэтому ошибка не связана с вашим сервером.
Событие принято, вебхука нет
Эндпоинт не подписан на этот тип. Сверьте тип в ленте принятого с подпиской эндпоинта: cloudpayments.pay не попадёт под маску payment.*.
Можно ли направить Pay и Fail на один источник?
Да. Один адрес приёма принимает все типы уведомлений, тип различается по полю Type. Эндпоинты подписываются на нужные типы или на маску cloudpayments.*.
Что будет, если бэкенд не ответил на вебхук?
Доставка повторится по расписанию: через минуту, пять минут, полчаса и дальше до суток, всего до восьми попыток. Событие остаётся в истории на срок хранения тарифа, его можно отправить заново вручную.
Где смотреть, что пришло от CloudPayments?
В ленте принятого в кабинете: тело уведомления, тип события, время приёма и список эндпоинтов, в которые оно ушло, с историей попыток по каждому.
Другие интеграции
Платёжные системы, маркетплейсы и любая система с подписанными вебхуками или HTTP API.