MMyPayОткрыть кабинет
Все разделы

Webhook

Уведомляйте свой бэкенд о событиях: платёж прошёл, возврат оформлен, ссылка приостановлена.

События

Webhook отправляется на URL из настроек кабинета после каждого события.

СобытиеОписание
payment.succeededПлатёж успешно завершён, средства зачислены, чек отправлен в «Мой Налог».
payment.failedПлатёж отклонён или не прошёл после попыток.
payment.refundedОформлен возврат по успешному платежу.
link.createdСоздана новая ссылка на оплату.
link.pausedСсылка приостановлена и больше не принимает платежи.
link.resumedСсылка возобновлена.

Подпись запросов

Каждый запрос содержит заголовок x-mypay-signature - HMAC-SHA256 от тела запроса, вычисленный с секретом из кабинета.

Проверка без SDK

const crypto = require('node:crypto');

const sig = crypto
  .createHmac('sha256', process.env.MYPAY_WEBHOOK_SECRET)
  .update(req.rawBody)
  .digest('hex');

if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(req.headers['x-mypay-signature']))) {
  throw new Error('Неверная подпись');
}

Доставка и retry

  • Отправка с таймаутом 10 секунд; ответ 200 подтверждает приём.
  • При ошибке или таймауте событие уходит повторно с экспоненциальной задержкой: 1 мин, 5 мин, 30 мин.
  • После последней попытки событие попадает в DLQ - очередь недоставленных сообщений, видимую в кабинете.
  • Идемпотентность: событие содержит event_id - обрабатывайте его один раз.