msp3Prodamus

Оплата через Prodamus для MiniShop3
Автор дополнения
Иван Бочкарев
Пакетов
44
Закачек
288
Обычно отвечает в течение суток
Автор дополнения
Пакетов
44
Закачек
288
Обычно отвечает в течение суток
Версия 1.0.0-pl
Дата выпуска 25.09.2026
Загрузки 0
Просмотры 3
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
Оплата через Prodamus для MiniShop3 — payform, webhook, подпись и чеки 54-ФЗ

msp3Prodamus подключает Prodamus к MiniShop3 в MODX 3 и позволяет принимать онлайн-оплату через страницу payform.

Покупатель переходит на страницу оплаты Prodamus, а результат операции передаётся обратно в магазин через защищённое уведомление.

Возможности



  • Оплата через Prodamus Payform.
  • Автоматическое создание ссылки на страницу оплаты.
  • Webhook для обработки результата платежа.
  • Поддержка уведомлений в формате формы и JSON.
  • Проверка подписи HMAC-SHA256.
  • Обработка уведомления только при корректной подписи.
  • Чек 54-ФЗ с данными корзины.
  • Передача налога, способа расчёта и предмета расчёта.
  • История попыток оплаты во вкладке заказа.
  • Настройка валюты платежа.

Как работает

  1. Покупатель оформляет заказ в MiniShop3.
  2. Выбирает Оплата через Prodamus.
  3. msp3Prodamus формирует ссылку на страницу payform.
  4. Покупатель переходит в Prodamus и выполняет оплату.
  5. Prodamus отправляет уведомление на webhook магазина.
  6. msp3Prodamus проверяет подпись и передаёт результат в MiniShop3.

Безопасный webhook

Prodamus передаёт подпись в заголовке Sign или поле sign.

msp3Prodamus проверяет подпись с использованием секрета страницы и алгоритма HMAC-SHA256.

После корректного уведомления сайт отвечает Prodamus HTTP 200 и success.

Чеки 54-ФЗ

Данные корзины передаются в Prodamus вместе с информацией о:

  • налоге;
  • способе расчёта;
  • предмете расчёта.

Это позволяет использовать штатный механизм формирования чеков Prodamus для заказов MiniShop3.

Важное ограничение

Prodamus в используемом API не предоставляет запросы для возврата, отмены и получения статуса платежа.

Поэтому во вкладке заказа отображается история попыток оплаты, но отдельные операции возврата или синхронизации через API Prodamus не выполняются.

Интеграция с MiniShop3

msp3Prodamus использует стандартный механизм платежей MiniShop3 и не изменяет ядро магазина.

Статус оплаченного заказа устанавливает MiniShop3.

Требования

  • MODX Revolution 3.0+;
  • MiniShop3 1.14.0-beta1+;
  • PHP 8.2+;
  • pdoTools 3.x;
  • URL страницы payform и секрет из настроек Prodamus;
  • email или телефон покупателя;
  • HTTPS для webhook.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.0-pl] - 2026-09-24

Первый публичный релиз компонента msp3Prodamus для MODX 3 и MiniShop3.

Added

  • Интеграция Prodamus payform: send() шлёт POST (do=link, type=json) и возвращает ссылку https://payform.ru/…. payment_id и external_id — order_id вида {orderId}-{hex}. Суммы в рублях с двумя знаками.
  • Канон MiniShop3: Payment + PaymentWebhookHandlerInterface + ms3_payment_lifecycle. Пакет не пишет status_id.
  • Пакетный webhook.php на один URL кабинета. Тело multipart/form-data или JSON. Подпись в заголовке Sign, HMAC-SHA256 по официальной сортировке. Ответ HTTP 200 и текст success.
  • Соответствие статусов: Success → paid, Order_canceled → cancelled, Order_denied → failed. order_num совпадает с external_id попытки.
  • Вкладка заказа: список попыток и синхронизация последней попытки. REST-статуса заказа у Prodamus нет. Возврат и отмена ссылки оформляются в кабинете.
  • Чек 54-ФЗ в поле products. Секреты сначала в msPayment.properties (secret, payform_url), иначе системные настройки msp3prodamus_*.
  • Телефон и email читаются из адреса заказа, затем из msOrder.properties, затем из msCustomer.
  • Транспорт EncryptedVehicle для modstore.pro. Локальная сборка: ENCRYPT=0. HTTP через file_get_contents. Лексиконы ru.

Fixed

  • BaseProcessor::checkPermissions() объявлен как public, как требует MODX\Revolution\Processors\Processor.
  • connector.php отдаёт массив ProcessorResponse::getResponse(), а не сам объект ответа.
  • Bootstrap грузит классы через PSR-4. vendor/autoload.php после composer --no-dev имел один и тот же ComposerAutoloaderInit и ронял MODX, если стояло несколько extras.
  • HTTP-транспорт без редиректов и без file://. Лог не пишет секреты.
  • BaseProcessor::initialize() сбрасывает общий modError. Иначе текст прошлого failure оставался на следующем success.
  • Контакты покупателя больше не теряются, если в заказе нет связанного Address, но есть строка msOrderAddress или msCustomer.

Dependencies

  • MODX 3.x, MiniShop3 >= 1.14.0-beta1, PHP >= 8.2.

Последние обсуждения в сообществе MODX.pro