msp3PayKeeper

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

msp3PayKeeper подключает PayKeeper к MiniShop3 в MODX 3 и позволяет принимать оплату заказов через платёжную систему PayKeeper.

Покупатель переходит на страницу PayKeeper для оплаты, а результат операции передаётся обратно в MiniShop3 через webhook.

Что поддерживает msp3PayKeeper

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

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

При обычной оплате деньги списываются в рамках стандартного платежа PayKeeper.

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

Списание холда выполняется непосредственно из вкладки заказа MiniShop3.

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

msp3PayKeeper добавляет в заказ MiniShop3 информацию о попытках оплаты и позволяет выполнять основные операции:

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

Чеки 54-ФЗ

При включённой настройке чек с корзиной заказа передаётся в PayKeeper вместе со счётом.

Для передачи корзины необходим email покупателя.

Webhook

PayKeeper отправляет уведомления на отдельный endpoint:

assets/components/msp3paykeeper/webhook.php


Результат оплаты обрабатывается на стороне сайта, поэтому возвращение покупателя на сайт не является единственным источником информации о платеже.

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

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

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

Требования

  • MODX Revolution 3.x;
  • MiniShop3 1.14.0-beta1+;
  • PHP 8.2+;
  • pdoTools 3.x;
  • 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.

[2.0.0-pl] - 2026-09-23

Пересборка компонента msp3PayKeeper на msp3PaymentSkeleton для MODX 3 и MiniShop3.

Changed

  • Канон MiniShop3: Payment + PaymentWebhookHandlerInterface + ms3_payment_lifecycle. Пакет не пишет status_id.
  • HTTP через file_get_contents и Basic Auth. curl_exec больше нет.
  • Webhook кабинета: form POST, подпись md5(id + sum + clientid + orderid + secret_word), ответ OK + md5(id + secret_word).
  • send() создаёт счёт POST /change/invoice/preview/ и возвращает invoice_url. payment_id и external_id равны invoice_id. Валюта RUB, суммы с двумя знаками.
  • Двухстадийка: batch_date в уведомлении ставит попытку authorized. Списание во вкладке заказа вызывает capture и markPaid.
  • Секреты сначала в msPayment.properties (server_url, api_login, api_password, secret_word), иначе системные настройки.
  • Пространство имён Msp3PayKeeper. Старые классы Msp3Paykeeper остаются через class_alias.

Added

  • Способы оплаты: PayKeeperPayment (одна стадия) и PayKeeperTwoStagePayment (холд, если в кабинете включён двухэтапный режим).
  • Возврат POST /change/payment/reverse/ по id платежа. Отмена неоплаченного счёта POST /change/invoice/revoke/.
  • Корзина 54-ФЗ в service_name. Транспорт EncryptedVehicle для modstore.pro. Локальная сборка: ENCRYPT=0.

Fixed

  • BaseProcessor::checkPermissions() объявлен как public, как требует MODX\Revolution\Processors\Processor.
  • connector.php отдаёт массив ProcessorResponse::getResponse(), а не сам объект ответа.
  • Bootstrap грузит классы через PSR-4. vendor/autoload.php после composer --no-dev имел один и тот же ComposerAutoloaderInit и ронял MODX, если стояло несколько extras.
  • class_alias для Msp3Paykeeper не вызывается повторно на регистронезависимой ФС (macOS).
  • HTTP-транспорт без редиректов и без file://. Лог не пишет секреты.
  • BaseProcessor::initialize() сбрасывает общий modError. Иначе текст прошлого failure оставался на следующем success.
  • Официальный POST без invoice_id больше не ищет попытку по id платежа. После проверки подписи пакет подставляет invoice_id из попытки заказа. Обработчик берёт способ оплаты заказа, а не первый активный класс пакета.
  • Возврат из вкладки не зовёт reverse, пока попытка не paid / partially_refunded. На authorized ответ «сначала capture», не общий conflict lifecycle.

Dependencies

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

[1.0.0-pl] - 2026-09-23

Первый релиз оплаты PayKeeper для MiniShop3 до перехода на lifecycle.

Added

  • Базовая интеграция PayKeeper для MiniShop3 (до ms3_payment_lifecycle).

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