msp3AlfaBank

Оплата через msp3AlfaBank для MiniShop3
Автор дополнения
Иван Бочкарев
Пакетов
35
Закачек
288
Обычно отвечает в течение суток
Автор дополнения
Пакетов
35
Закачек
288
Обычно отвечает в течение суток
Версия 1.0.0-pl
Дата выпуска 25.09.2026
Загрузки 0
Просмотры 3
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
Оплата через Альфа-Банк для MiniShop3 — эквайринг, холд, возвраты и синхронизация

msp3AlfaBank подключает интернет-эквайринг Альфа-Банка к MiniShop3 в MODX 3.

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

Возможности

  • Обычная оплата с немедленным списанием средств.
  • Двухстадийная оплата с предварительной блокировкой средств.
  • Списание холда из заказа MiniShop3.
  • Отмена холда.
  • Возврат платежа.
  • Webhook/callback от банка.
  • Дополнительный запрос статуса платежа через API Альфа-Банка.
  • Сверка суммы платежа с сохранённой попыткой оплаты.
  • Сохранение номера платежа банка.
  • Синхронизация состояния платежа из вкладки заказа.
  • История попыток оплаты в MiniShop3.

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

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

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

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

Проверка результата платежа

После получения callback пакет не полагается только на данные уведомления.

msp3AlfaBank самостоятельно запрашивает состояние платежа у Альфа-Банка и сверяет сумму с соответствующей попыткой оплаты.

Это позволяет отделить факт получения уведомления от фактического состояния операции в банке.

Управление из заказа

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

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

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

msp3AlfaBank добавляет два способа оплаты:

  • Оплата через Альфа-Банк;
  • Оплата через Альфа-Банк (двухстадийная).

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

Требования

  • MODX Revolution 3.0+;
  • MiniShop3 1.14.0-beta1+;
  • PHP 8.2+;
  • pdoTools 3.x;
  • HTTPS для webhook;
  • API-логин и пароль Альфа-Банка.

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

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

Added

  • Интеграция REST RBS Альфа-Банка: register.do, registerPreAuth.do, getOrderStatusExtended.do, deposit.do, reverse.do, refund.do. Auth: userName и password в каждом запросе. Суммы в копейках.
  • send() регистрирует заказ и возвращает formUrl. payment_id и external_id — orderNumber вида {orderId}-{random}. Банковский orderId (mdOrder) пишется в payload попытки.
  • Канон MiniShop3: Payment + PaymentWebhookHandlerInterface + ms3_payment_lifecycle. Пакет не пишет status_id.
  • Пакетный webhook.php. Статус читается через getOrderStatusExtended.do, не из тела колбэка. HMAC у банка нет: проверка по учётным данным API и сумме попытки.
  • Способы оплаты: AlfaBankPayment и AlfaBankTwoStagePayment (холд registerPreAuth.do). Списание и отмена во вкладке заказа.
  • Секреты сначала в msPayment.properties (user_name / login, password / secret), иначе системные настройки.
  • При установке копируются непустые ключи из старого пакета mspAlfaBank. Транспорт 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.
  • send() сам кладёт банковский orderId (mdOrder) в payload попытки через lifecycle->initiate(). Ядро в recordAttemptFromSend() сохраняет только payment_link, из‑за этого capture/refund/reverse не находили заказ до callback.
  • Возврат из вкладки не зовёт refund.do, пока попытка не paid / partially_refunded. На authorized ответ «сначала capture», не общий conflict lifecycle.

Dependencies

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

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