Prodamus: Принять оплату во встроенном виджете

Сценарий из mcp-everything. Актуально на 2026-10-12.

Используй, когда покупатель должен остаться на сайте. Клиентский статус можно показать через postMessage, но окончательное подтверждение всё равно приходит по webhook.

  1. Подключи https://widget.prodamus.ru/src/init.js и https://widget.prodamus.ru/src/init.css в <head>.
  2. Назначь кнопке уникальный ID.
  3. Вызови payformInit с доменом без https:// и передай order_sum либо products.
  4. Обработай window.addEventListener("message") для статусов close, waiting, error, success.
  5. Прими POST {urlNotification} и подтверди оплату на сервере.
<script defer src="https://widget.prodamus.ru/src/init.js"></script>
<link rel="stylesheet" href="https://widget.prodamus.ru/src/init.css">

<script>
  // если у вас несколько кнопок, то для каждой из кнопок нужно продублировать код ниже, со своим уникальным идентификатором кнопки.
  // UNIQ_IDButton -  техническое название кнопки (должно быть уникальным)
  // UNIQ_ID - уникальный идентификатор кнопки, который
  const UNIQ_IDButton = document.querySelector("#UNIQ_ID")
  // например, если у Вашей кнопки UNIQ_ID это englishCourse, то вместо UNIQ_IDButton следует написать englishCourseButton
  // UNIQ_IDButton - название вашей кнопки
  UNIQ_IDButton?.addEventListener("click", () => {
      payformInit("XXX.payform.ru", { // где, XXX.payform.ru - ссылка на вашу пейформу, без указания https://
          order_sum: 100, // Стоимость заказа в валюте заказа
          currency: "rub", // Валюта заказа. Не обязательный параметр (можно просто удалить всю строчку)
      })
  })
</script>

Базовые URL

Авторизация

Тип: Другое

Секретный ключ доступен в настройках платёжной страницы в блоке «Секретный ключ». Для создания платёжных ссылок, управления подписками и вызова GET или POST /rest/payment/do/ данные запроса без поля signature рекурсивно приводят к строкам, сортируют по ключам, преобразуют в JSON, экранируют / и подписывают HMAC SHA-256. Готовые реализации Hmac.php, hmac.js, prodamus_hmac.py, HmacHelper.cs, HmacHelper.java и hmac.go опубликованы на страницах документации.

Входящий webhook подписан в заголовке Sign; подпись проверяется тем же секретным ключом платёжной страницы. Для оплаты по связке поддержка выдаёт отдельный ключ, привязанный к sys; ключ платёжной страницы используют только для первого платежа.

Для GET /rest/receipt/getReceipts и GET /rest/payment-methods/getList передаются заголовки Timestamp и Authorization: Bearer <token>, где <token> = base64_encode(<timestamp> . md5(<SECRET_KEY>)).

Методы сценария

{urlNotification} — Получить webhook об оплате

Prodamus отправляет итоговый статус платежа методом POST. При успешной обработке endpoint должен вернуть HTTP 200.

Документация: https://help.prodamus.ru/payform/tekhnicheskaya-dokumentaciya/webhook-ob-oplate

Параметр Где Тип Обяз. Описание
Sign header string да HMAC-подпись входящего тела
date body string да Дата платежа
order_id body number да ID заказа в Prodamus
order_num body string да Номер заказа на стороне магазина; может быть пустым
sum body string да Сумма заказа
currency body string да rub, usd или eur
attempt body string да Номер попытки доставки
products body array да Корзина товаров
products[i].name body string да Наименование товара
products[i].price body number да Цена за единицу
products[i].quantity body integer да Количество
payment_status body string да success, order_canceled или order_denied
payment_status_description body string да Расшифровка статуса
payment_init body string да api, auto или manual

payformInit — Открыть платёжный виджет

Первый аргумент — домен платёжной страницы без https://; второй — параметры заказа. Передаётся order_sum либо products.

Документация: https://help.prodamus.ru/payform/tekhnicheskaya-dokumentaciya/integraciya-platezhnogo-vidzheta#пример-вызова-виджета

Параметр Где Тип Обяз. Описание
xxx.payform.ru body string да Домен платёжной страницы без https://
order_sum body number нет Обязателен, если нет products
products body array нет Обязателен, если нет order_sum
products[i].name body string да Наименование товара
products[i].price body number да Цена за единицу
products[i].quantity body integer да Количество
products[i].sku body string нет ID товара в вашей системе
sys body string нет Код интеграции от поддержки
urlNotification body string нет URL webhook; учитывается вместе с sys

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://help.prodamus.ru/payform/tekhnicheskaya-dokumentaciya Вся интеграция одним документом: https://mcp-everything.ru/integrations/prodamus.md