feat: add fiscalization settings, POST callbacks and fix callback issues See merge request products/cashier/cms/OpenCart3!14
🌟 Платёжный модуль PayAnyWay для OpenCart v3.x
📦 Версия модуля: 1.0.4
ℹ️ Совместимость версий OpenCart:
3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.0, 3.0.3.1, 3.0.3.2, 3.0.3.3, 3.0.3.4, 3.0.3.5, 3.0.3.6, 3.0.3.7, 3.0.3.8, 3.0.3.9, 3.0.4.0, 3.0.4.1, 3.0.5.0
ℹ️ Совместимость версий OpenCart "Русская сборка":
3.0.0.1, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.0, 3.0.3.1, 3.0.3.2, 3.0.3.6, 3.0.3.7, 3.0.3.8, 3.0.3.9, 3.0.4.0, 3.0.4.1, 3.0.5.0
ℹ️ Совместимость версий ocStore:
3.0.2.0, 3.0.3.7, 3.0.3.9
ℹ️ Примечание по валюте
Данный модуль работает только с валютой RUB (Российский рубль).
Перед активацией модуля убедитесь, что на сайте в качестве базовой валюты установлен RUB, либо у пользователя выбран счёт в RUB. Использование других валют не поддерживается.
🏗️ Структура модуля
├── upload
│ ├── admin
│ │ ├── controller/extension/payment/payanyway.php
│ │ ├── language/{en-gb,ru-ru}/extension/payment/payanyway.php
│ │ ├── view/image/payment/payanyway.png
│ │ └── view/template/extension/payment/payanyway.twig
│ └── catalog
│ ├── controller/extension/payment/payanyway.php — форма оплаты, Check URL и Pay URL
│ ├── language/{en-gb,ru-ru}/extension/payment/payanyway.php
│ ├── model/extension/payment/payanyway.php
│ └── view/theme/default/template/extension/payment/payanyway.twig
├── install.xml — OCMOD: приём Check/Pay URL методом POST (правка роутера витрины)
└── README.md
🚀 Установка и настройка модуля
- 📥 Скачайте архив модуля и переименуйте в
payanyway.ocmod.zip. - 📂 Загрузите расширение через панель управления интернет-магазином. Выберите раздел "Модули / Расширения" → "Установка расширений". Нажмите "Загрузить" и выберите скачанный архив.
- ⚙️ В разделе "Модули / Расширения" → "Модули / Расширения" выберите тип расширения "Оплата".
В списке модулей оплаты найдите PayAnyWay и нажмите:
- «Активировать» — для включения модуля
- «Редактировать» — для перехода к настройкам
- ✏️ Заполните соответствующие поля в настройках способа оплаты:
| Поле | Описание |
|---|---|
| Включить модуль оплаты | Включите или выключите модуль оплаты |
| Номер счёта | Ваш номер расширенного счёта в системе MONETA.RU, только цифры |
| Код проверки целостности данных | Код проверки целостности данных, указанный в настройках расширенного счёта в системе MONETA.RU. Сохраняется ровно так, как введён, в том числе с символами &, ", <, > |
| Сервер платежей | Боевой / Демо (демо-площадка MONETA.RU) |
| Тестовый режим | Имитация оплаты без реального списания средств. Должен совпадать с настройкой счёта в MONETA.RU: уведомление в другом режиме модуль отклоняет |
| Фискализация чеков | Включайте, только если к счёту подключён кассовый сервис kassa.payanyway.ru. Включена — на проверочный запрос модуль отвечает чеком для кассы (без кассы MONETA.RU вернёт ошибку -700). Выключена — в операцию уходят только позиции заказа и контакты покупателя. По умолчанию включена |
| Email для чеков | Обязателен при фискализации. Подставляется в чек, только если у покупателя нет ни e-mail, ни телефона (ФИО покупателя в чеке остаётся) |
| НДС | Ставка НДС всех позиций чека |
| Признак способа расчёта | Для товаров, доставки и сборов. Обычно Полный расчёт. Проданные подарочные сертификаты всегда идут авансом |
| Признак предмета расчёта | Для товаров. Доставка и сборы всегда идут услугой, подарочные сертификаты — платежом |
| Валюта платежа | RUB |
| Статусы заказа | Выберите соответствующие статусы заказа из списка |
| Обрабатываемый | Укажите статус заказа, который выставляется при его создании |
| Успешный | Укажите статус заказа, который выставляется при успешной оплате |
| Неуспешный | Укажите статус заказа, который выставляется при ошибке оплаты |
| Отменённые | Заказ в этих статусах не оплачивается: на проверочный запрос модуль отвечает отказом. По умолчанию Canceled, Canceled Reversal, Voided |
| URL для уведомлений | Адрес Check URL и Pay URL для настроек счёта MONETA.RU, кнопка «Скопировать» |
| Регион отображения | Географическая зона, в которой будет отображаться способ оплаты |
| Порядок сортировки | Определяет порядок отображения платежного метода в списке методов оплаты при оформлении заказа. Чем меньше число, тем выше позиция в списке |
Сумма позиций чека всегда равна сумме оплаты: налоги OpenCart входят в цену товаров, скидки (купоны, подарочные сертификаты, бонусные баллы) распределяются по товарам, доставка и сборы идут отдельными позициями. В истории заказа при оплате сохраняется номер операции MONETA.RU: «Заказ оплачен. Номер операции: N».
⚠️ После обновления модуля нажмите «Модули / Расширения» → «Модификации» → «Обновить», затем откройте настройки PayAnyWay, проверьте новые поля (фискализация после обновления включена) и нажмите «Сохранить». Пока при включённой фискализации не задан «Email для чеков», над формой настроек показывается предупреждение.
🔧 Инструкция по настройке счета PayAnyWay
-
📝 Зарегистрируйтесь в платёжной системе PayAnyWay и заполните все необходимые данные. Дождитесь проверки аккаунта и создайте расширенный счет.
-
⚙️ Заполните настройки расширенного счета (раздел «Мой счет» → «Управление счетами» → «Редактировать счет»):
| Параметр | Значение |
|---|---|
| Тестовый режим | Нет |
| Check URL | https://your_site_name/index.php?route=extension/payment/payanyway/callback |
| Pay URL | https://your_site_name/index.php?route=extension/payment/payanyway/callback |
| HTTP method* | GET или POST (требуется настройка) |
| Можно переопределять настройки в URL | Да |
| Подпись формы оплаты обязательна | Да |
| Код проверки целостности данных | ваш_код (произвольный набор символов) |
| Success URL | Оставить пустым |
| Fail URL | Оставить пустым |
| InProgress URL | Необязательное поле. URL страницы магазина, куда должен попасть покупатель после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств. Поддерживается ограниченным количеством методов оплаты. Переход пользователя произойдет независимо от получения магазином средств и отчета о проведенной оплате |
| Return URL | Оставить пустым |
⚠️ Важно! Для кириллического домена PayURL и CheckURL должны быть указаны в кодировке Punycode.
* 📨 Уведомления методом POST
При HTTP method = POST MONETA.RU переносит параметры из адреса Check URL / Pay URL в тело запроса, в том числе route=extension/payment/payanyway/callback. Штатный OpenCart 3 ищет маршрут только в адресе и без доработки отвечает главной страницей, а платёжная форма показывает «Код ошибки: 302».
Модуль решает это модификацией OCMOD из install.xml: маршрут колбэка (и только его) берётся из тела запроса. Чтобы модификация заработала:
- Устанавливайте модуль только через «Модули / Расширения» → «Установка расширений» (архив
payanyway.ocmod.zip). При заливке файлов по FTP модификация не регистрируется. - После установки или обновления модуля откройте «Модули / Расширения» → «Модификации» (Extensions → Modifications) и нажмите синюю кнопку «Обновить» вверху справа. Повторяйте это после включения, выключения или удаления любой модификации и после кнопки «Очистить».
- Откройте настройки PayAnyWay. Если модификация не применена, над формой будет жёлтое предупреждение. Причину смотрите на вкладке «Лог» в «Модификациях»: строка
NOT FOUNDу файлаcatalog/controller/startup/router.phpозначает, что роутер уже изменён другой модификацией.
Если модификацию применить не удаётся, выберите в настройках счёта HTTP method = GET: при GET модификация не нужна.
📚 Полезные ресурсы OpenCart
📚 Полезные ресурсы OpenCart "Русская сборка"
📚 Полезные ресурсы OsStore
✅ Модуль настроен, приятных платежей! 💰🎉