Files
OpenCart3/README.md
T

133 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌟 Платёжный модуль PayAnyWay для [OpenCart](https://www.opencart.com/) v3.x
![openCart](https://img.shields.io/badge/openCart-3.x-0070C0?logo=php&logoColor=white)
![PHP](https://img.shields.io/badge/PHP-5.6%2B-purple)
![License](https://img.shields.io/badge/License-MIT-green)
> **📦 Версия модуля: 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
```
## 🚀 Установка и настройка модуля
1. 📥 [Скачайте архив модуля](https://git.pub.moneta.ru/CMS/openCart3/releases) и переименуйте в `payanyway.ocmod.zip`.
2. 📂 Загрузите расширение через панель управления интернет-магазином.
Выберите раздел **"Модули / Расширения"** → **"Установка расширений"**. Нажмите "Загрузить" и выберите скачанный архив.
3. ⚙️ В разделе **"Модули / Расширения"** → **"Модули / Расширения"** выберите тип расширения **"Оплата"**.
В списке модулей оплаты найдите **PayAnyWay** и нажмите:
- **«Активировать»** — для включения модуля
- **«Редактировать»** — для перехода к настройкам
4. ✏️ Заполните соответствующие поля в настройках способа оплаты:
| Поле | Описание |
|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Включить модуль оплаты** | Включите или выключите модуль оплаты |
| **Номер счёта** | Ваш номер расширенного счёта в системе [MONETA.RU](https://moneta.ru/), только цифры |
| **Код проверки целостности данных** | Код проверки целостности данных, указанный в настройках расширенного счёта в системе [MONETA.RU](https://moneta.ru/). Сохраняется ровно так, как введён, в том числе с символами `&`, `"`, `<`, `>` |
| **Сервер платежей** | `Боевой` / `Демо` (демо-площадка MONETA.RU) |
| **Тестовый режим** | Имитация оплаты без реального списания средств. Должен совпадать с настройкой счёта в MONETA.RU: уведомление в другом режиме модуль отклоняет |
| **Фискализация чеков** | Включайте, только если к счёту подключён кассовый сервис [kassa.payanyway.ru](https://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
1. 📝 [Зарегистрируйтесь](https://payanyway.ru/partnerRegistration.htm) в платёжной системе PayAnyWay и заполните все необходимые данные. Дождитесь проверки аккаунта и создайте **расширенный счет**.
2. ⚙️ Заполните настройки расширенного счета (раздел **«Мой счет» → «Управление счетами» → «Редактировать счет»**):
| Параметр | Значение |
|------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Тестовый режим** | `Нет` |
| **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<sup>\*</sup>** | `GET` или `POST` (требуется настройка) |
| **Можно переопределять настройки в URL** | `Да` |
| **Подпись формы оплаты обязательна** | `Да` |
| **Код проверки целостности данных** | `ваш_код` (произвольный набор символов) |
| **Success URL** | Оставить пустым |
| **Fail URL** | Оставить пустым |
| **InProgress URL** | Необязательное поле. URL страницы магазина, куда должен попасть покупатель после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств. Поддерживается ограниченным количеством методов оплаты. Переход пользователя произойдет независимо от получения магазином средств и отчета о проведенной оплате |
| **Return URL** | Оставить пустым |
> ⚠️ **Важно!** Для кириллического домена PayURL и CheckURL должны быть указаны в кодировке [Punycode](https://2ip.ru/punycode/).
### <sup>\*</sup> 📨 Уведомления методом POST
При **HTTP method** = `POST` MONETA.RU переносит параметры из адреса Check URL / Pay URL в тело запроса, в том числе `route=extension/payment/payanyway/callback`. Штатный OpenCart 3 ищет маршрут только в адресе и без доработки отвечает главной страницей, а платёжная форма показывает «Код ошибки: 302».
Модуль решает это модификацией OCMOD из `install.xml`: маршрут колбэка (и только его) берётся из тела запроса. Чтобы модификация заработала:
1. Устанавливайте модуль только через **«Модули / Расширения» → «Установка расширений»** (архив `payanyway.ocmod.zip`). При заливке файлов по FTP модификация не регистрируется.
2. После установки или обновления модуля откройте **«Модули / Расширения» → «Модификации»** (Extensions → Modifications) и нажмите синюю кнопку **«Обновить»** вверху справа. Повторяйте это после включения, выключения или удаления любой модификации и после кнопки «Очистить».
3. Откройте настройки PayAnyWay. Если модификация не применена, над формой будет жёлтое предупреждение. Причину смотрите на вкладке «Лог» в «Модификациях»: строка `NOT FOUND` у файла `catalog/controller/startup/router.php` означает, что роутер уже изменён другой модификацией.
Если модификацию применить не удаётся, выберите в настройках счёта **HTTP method** = `GET`: при GET модификация не нужна.
---
## 📚 Полезные ресурсы OpenCart
* [OpenCart](https://www.opencart.com/)
* [Документация](https://docs.opencart.com/)
* [Релизы](https://github.com/opencart/opencart/releases)
## 📚 Полезные ресурсы OpenCart "Русская сборка"
* [Русская сборка OpenCart](https://opencart-russia.ru/)
* [Документация и FAQ](https://forum.opencart-russia.ru/forums/wiki/)
* [Форум поддержки](https://forum.opencart-russia.ru/)
## 📚 Полезные ресурсы OsStore
* [OsStore](https://ocstore.com/)
* [Форум поддержки](https://opencartforum.com/)
---
**✅ Модуль настроен, приятных платежей!** 💰🎉