
- MODX 3
- PHP 8.2
- miniShop3


Платёжный способ Сбербанка для MiniShop3 на MODX 3: register.do, redirect на formUrl, callback, смена статуса заказа, deposit / reverse / refund, опционально orderBundle для 54-ФЗ.
Нет. Только MODX Revolution 3.x и MiniShop3.
| Есть | Нет из коробки |
|---|---|
| Одностадийная и двухстадийная оплата | Кнопка Deposit/Refund в карточке заказа MS3 |
| Callback + checksum (HMAC / RSA) | Письма «заказ оплачен» (это MS3 / уведомления) |
54-ФЗ через orderBundle | Настройка онлайн-кассы в СберБизнес (делает банк) |
Примеры сниппетов «оплата из ЛК» и msp3SberbankOrderAction | Готовый шаблон личного кабинета |
Сертификаты НУЦ в certs/ | Договор эквайринга и логины -api |
Deposit, Reverse и Refund (списание, отмена холда, возврат): Интеграция.
Пакет зашифрован. Добавьте провайдер modstore.pro (URL https://modstore.pro/extras/, email и API-ключ из ЛК modstore) и укажите его в Show Details при Install. Подробно: Быстрый старт.
Проверьте по порядку:
https://ваш-домен.ru/assets/components/msp3sberbank/callback.php.msp3sberbank_api_login логин -api, пароль актуален.msp3sberbank_api_url совпадает с контуром учётки (ecomtest / ecommerce).msp3sberbank_paid_status_id или ms3_status_paid.msp3sberbank_debug и посмотрите лог после тестовой оплаты.Источник истины: callback, а не только возврат браузера на returnUrl.
Если callback настроен, банк сам дернёт callback.php и статус обновится. Без callback статус меняется только при receive() на returnUrl. Настройте callback.
Отдельной галочки в настройках нет. Нужно не вызывать оплату сразу после оформления и добавить кнопку в ЛК со сниппетом send().
Готовый код: Интеграция, оплата после проверки.
| Одностадийная | Двухстадийная | |
|---|---|---|
| API | register.do | registerPreAuth.do |
| После оплаты | Списание → paid_status_id | Холд → authorized_status_id |
| Дальше | — | Deposit (списание) или Reverse (отмена холда) |
Обе ведут покупателя на форму Сбербанка при send(). Двухстадийная не заменяет сценарий «сначала менеджер».
Только из вашего договора / ЛК мерчанта. Публичные демо с developers.sber.ru на ecomtest часто дают errorCode 5.
В API: логин с суффиксом -api, не -operator. Пошагово: Быстрый старт, шаг 2.
Чаще всего: в api_login попал -operator, устарел пароль после смены в ЛК, или тестовая учётка на боевом URL (и наоборот). Письмо: Support_ecomm@sberbank.ru.
Нет доверия к сертификатам НУЦ. В пакете certs/russian-trusted-chain.pem. Если ошибка остаётся: системные корни или msp3sberbank_ssl_ca_file. Подробнее: Системные настройки, TLS.
Тип подписи в ЛК совпадает с ключом в MODX. Включены уведомления с контрольной суммой. Токен callback не путать с паролем -api.
После register в payment_data должен быть sber_order_id = mdOrder. Поле orderNumber = id заказа MS3.
receive() и callback сверяют шлюз с order.cost (±1 коп.). Не меняйте сумму заказа после register.
msp3sberbank_send_order_bundle = 1, ФФД и tax_type в настройках. У покупателя в заказе email или телефон. Кассу настраивает банк / СберБизнес.
Коды НДС: Системные настройки, чеки.
order.cost (±1 коп.): проверьте скидки, доставку, округление.Отдельного UI в карточке заказа пока нет. Создайте сниппет msp3SberbankOrderAction или вызовите процессоры из своего кода. Примеры: Интеграция.
Не сработает: процессор вернёт, что способ оплаты не двухстадийный.
Компонент не шлёт почту. Он меняет status_id. Письма настраивают в MiniShop3 / Центр уведомлений. Сверьте msp3sberbank_paid_status_id со статусом в правилах.
Проверьте плагин msp3sberbank_bootstrap, namespace msp3sberbank, каталог core/components/msp3sberbank/. В MiniShop3 → Оплаты должны быть «Оплата через Сбербанк» и «Оплата через Сбербанк (двухстадийная)». Переустановите пакет, очистите кэш.
register и форма оплаты работают, если сервер ходит в интернет. Callback с банка на http://localhost не придёт. Для полного цикла нужен публичный HTTPS или туннель (ngrok) и этот URL в ЛК Сбера.
| Ключ лексикона | Когда |
|---|---|
msp3sberbank.error_access_denied | Ответ шлюза код 5 |
msp3sberbank.error_connection | Сеть / TLS / НУЦ |
msp3sberbank.error_register_failed | Register отклонён |
msp3sberbank.error_fiscal_contact | Нет email/phone при orderBundle |
msp3sberbank.error_bundle_amount_mismatch | Сумма корзины ≠ заказу |
msp3sberbank.error_amount_mismatch | Сумма в банке ≠ order.cost |
msp3sberbank.error_payment_not_completed | Статус ещё не deposited/authorized |
msp3sberbank.error_invalid_amount | Нулевая или битая сумма заказа |
Включите msp3sberbank_debug = 1 и смотрите core/cache/logs/error.log ([msp3Sberbank]).
msp3sberbank_debug = 1, фрагмент лога [msp3Sberbank] (пароли маскируются).Support_ecomm@sberbank.ru, support@ecom.sberbank.ru.