msp3CloudPayments

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

msp3CloudPayments подключает CloudPayments к MiniShop3 в MODX 3 и позволяет принимать онлайн-оплату заказов через платёжную страницу CloudPayments.

Дополнение поддерживает обычную и двухстадийную оплату, несколько типов серверных уведомлений, возвраты и передачу данных для чеков 54-ФЗ.

Возможности

  • Обычная оплата с немедленным списанием.
  • Двухстадийная оплата с предварительной блокировкой средств.
  • Списание холда.
  • Отмена холда.
  • Возврат платежа.
  • Отмена неоплаченного счёта.
  • Запрос актуального статуса платежа.
  • Шесть типов уведомлений CloudPayments.
  • Проверка подписи уведомлений по API Secret.
  • Чек 54-ФЗ вместе со счётом.
  • История попыток оплаты в заказе MiniShop3.

Обычная и двухстадийная оплата

Обычная оплата — средства списываются сразу.

Двухстадийная оплата — средства сначала блокируются, а окончательное списание выполняется после подтверждения.

Это позволяет использовать CloudPayments для магазинов, где перед окончательным списанием необходимо подтвердить возможность выполнения заказа.

Шесть типов уведомлений

msp3CloudPayments обрабатывает отдельные уведомления для различных состояний платежа:

  • оплата;
  • проверка;
  • отказ;
  • подтверждение;
  • возврат;
  • отмена.

Подпись уведомлений проверяется с использованием API Secret. Отключить эту проверку в дополнении нельзя.

Чеки 54-ФЗ

Если включена передача чеков, данные чека отправляются вместе со счётом.

Для формирования чека в адресе заказа должен быть указан email или телефон покупателя.

Управление платежом из заказа

Во вкладке заказа доступны:

  • списание холда;
  • отмена холда;
  • возврат;
  • отмена неоплаченного счёта;
  • запрос статуса платежа.

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

msp3CloudPayments создаёт способы оплаты через стандартный механизм MiniShop3 и не требует изменений ядра магазина.

Требования

  • MODX Revolution 3.0+;
  • MiniShop3 1.14.0-beta1+;
  • PHP 8.2+;
  • pdoTools 3.x;
  • Public ID и API Secret CloudPayments;
  • HTTPS для webhook.

1. Подключение CloudPayments

Официальная страница подключения: https://cloudpayments.ru/integration

CloudPayments указывает следующий порядок подключения: заявка → тестовый доступ → документы → интеграция → тестовые платежи → получение полного доступа.

2. Что получить

После подключения для сайта понадобятся:

  • Public ID — публичный идентификатор.
  • API Secret — секретный ключ API.

Для работы с кабинетом: https://merchant.cloudpayments.ru/

3. Настройка MODX

Откройте: Система → Настройки → Системные настройки

Фильтр: msp3cloudpayments

Укажите:

  • msp3cloudpayments_public_id
  • msp3cloudpayments_api_secret

API Secret также используется для проверки подлинности серверных уведомлений.

4. URL уведомлений

В CloudPayments необходимо настроить шесть уведомлений:

https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=pay


https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=check


https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=fail


https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=confirm


https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=refund


https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=cancel


Все URL должны работать по HTTPS без перенаправления HTTP 301.

5. Тестирование

CloudPayments предоставляет тестовый режим и тестовые данные. Проверьте успешный платёж, ошибочный сценарий и, если используется двухстадийная оплата, подтверждение платежа.

6. Production

После тестирования:

  • замените тестовые реквизиты на рабочие;
  • проверьте шесть URL уведомлений;
  • отключите тестовый режим, если он используется в конфигурации;
  • выполните контрольный платеж.

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-23

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

Added

  • Интеграция CloudPayments: POST /orders/create возвращает Model.Url. payment_id и external_id — ms3_ref вида {orderId}-{random}. InvoiceId — номер заказа MiniShop3.
  • Канон MiniShop3: Payment + PaymentWebhookHandlerInterface + ms3_payment_lifecycle. Пакет не пишет status_id.
  • Пакетный webhook.php?event=` для Pay, Check, Fail, Confirm, Refund, Cancel. Form POST. Ответ `{"code":N}. Подпись X-Content-HMAC = Base64(HMAC-SHA256 от сырого тела, ключ API Secret).
  • Check не трогает lifecycle: ищет попытку по ms3_ref, сверяет сумму, отвечает 0 / 10 / 12.
  • Способы оплаты: CloudPaymentsPayment и CloudPaymentsTwoStagePayment. Pay со статусом Authorized ставит попытку authorized. Списание и отмена во вкладке заказа.
  • Чек 54-ФЗ CustomerReceipt в JsonData. Секреты сначала в msPayment.properties (public_id, api_secret), иначе системные настройки.
  • При установке копируются непустые ключи из старого пакета mspCloudPayments. Транспорт 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.
  • Неверный HMAC и пустое тело Pay отвечают code: 13, не 0. HTTP-транспорт без редиректов и без file://. Лог не пишет секреты.
  • BaseProcessor::initialize() сбрасывает общий modError. Иначе текст прошлого failure оставался на следующем success.
  • send() сам кладёт Model.Id (cloudpayments_order_id) в payload попытки. Ядро в recordAttemptFromSend() сохраняет только payment_link. Без этого orders/cancel неоплаченного счёта не находил id.
  • Возврат из вкладки не зовёт paymentsRefund, пока попытка не paid / partially_refunded. На authorized ответ «сначала capture», не общий conflict lifecycle.

Dependencies

  • MODX 3.x, MiniShop3 3.x (ветка beta с ms3_payment_lifecycle), PHP >= 8.2.

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