Files
Moodle/README.md

155 lines
14 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.
# 🌟 Платёжный модуль Moneta для [Moodle](https://moodle.org/)
![Moodle](https://img.shields.io/badge/Moodle-4.3%2B-orange?logo=moodle&logoColor=white)
![PHP](https://img.shields.io/badge/PHP-8.1%2B-purple)
![License](https://img.shields.io/badge/License-GPLv3%2B-blue)
> **© Правообладатель:** НКО «МОНЕТА» (ООО)
> **📦 Версия модуля: 1.0.0**
> **ℹ️ Требования:**
> PHP 8.1+
> Payment API Moodle 4.3+
> **ℹ️ Примечание по валюте:**
> Данный модуль работает **только с валютой RUB (Российский рубль)**. Использование других валют не поддерживается.
> Стоимость курса в `enrol_fee` должна быть задана в рублях, иначе платежный модуль **"Moneta"** не будет предложен.
## 🚀 Установка и настройка модуля
### 1. 📥 Скачайте модуль
[Архив последнего релиза](https://git.pub.moneta.ru/CMS/Moodle/releases/latest) — файл
`paygw_moneta-<версия>.zip` в разделе «Файлы» релиза. Внутри архива — папка `moneta`,
распаковывать его не нужно.
> ⚠️ Не берите «Исходный код (ZIP)» / «Исходный код (TAR.GZ)» — их сервис добавляет к
> каждому релизу автоматически, и корневая папка в них названа не `moneta`. Если такой
> архив всё же скачан, при установке (шаг 2) нажмите **«Показать больше…»** и в поле
> **«Переименовать корневой каталог»** укажите `moneta`.
### 2. 📂 Установите плагин
**Через интерфейс Moodle** (нужны права администратора сайта):
1. **Администрирование → Плагины → Установка плагинов**.
2. Добавьте архив в поле **«ZIP-пакет»** одним из способов:
- перетащите файл в поле;
- или нажмите **«Выберите файл...»**, в открывшемся окне выберите **«Загрузить файл»**,
укажите архив на компьютере и нажмите **«Загрузить этот файл»**.
Затем нажмите **«Установить плагин из ZIP-файла»**. Moodle сам определит тип плагина
(платёжный шлюз) и папку назначения.
3. Нажмите **«Продолжить»** на странице проверки, затем **«Обновить Moodle»** — создастся
таблица заказов и шлюз Moneta включится автоматически.
**Вручную** (если установка из ZIP отключена на сервере): распакуйте архив так, чтобы
получилась папка `payment/gateway/moneta` в корне Moodle (в Moodle 5.1 и новее —
`public/payment/gateway/moneta`), и откройте **Администрирование → Уведомления**,
чтобы завершить установку.
### 3. ✅ Проверьте, что включено нужное
1. **Администрирование → Плагины → Платежные шлюзы → Управление платежными шлюзами** —
у **Moneta** включён значок видимости.
2. **Администрирование → Плагины → Способы зачисления → Управление способами зачисления** —
включён способ **«Зачисление за оплату»** (штатный плагин Moodle `enrol_fee`, через него
курсы продаются).
### 4. 💳 Создайте платёжный счёт Moodle и подключите к нему Moneta
1. **Администрирование → Платежи → Платежные счета → Создать платежный счет** —
придумайте название (например, номер вашего счёта MONETA.RU) и сохраните.
2. В строке счёта, в списке его шлюзов, нажмите **Монета**, включите шлюз и
заполните реквизиты по таблице ниже.
3. Скопируйте **URL для уведомлений** кнопкой «Скопировать в буфер обмена» — он понадобится в
личном кабинете MONETA.RU.
### 5. 🎓 Назначьте цену курсу
В курсе: **Участники → Способы зачисления на курс → Добавить способ →
Зачисление за оплату**. Укажите **Платежный счет** (созданный на шаге 4),
**Оплата за зачисление** (цену) и валюту **RUB**, сохраните.
**Название способа** заполнять не обязательно. Если его задать, в Moodle 5.x оно
заменит заголовок «Для зачисления на этот курс требуется оплата» на странице
записи на курс; в списке способов зачисления его видят преподаватели. На оплату
не влияет: в чеке и на странице перехода к оплате всегда полное название курса.
Студент увидит на странице курса кнопку оплаты, выберет **Moneta**, проверит
курс и сумму на странице перехода к оплате и нажмёт **«Оплатить»**. После
подтверждения оплаты от MONETA.RU доступ к курсу открывается автоматически.
### 6. 🧪 Проверьте оплату
Для проверки без реальных денег используйте **Сервер платежей: Демо** со
счётом на [demo.moneta.ru](https://demo.moneta.ru/) и оплатите курс от имени
студента. Заказы и причины отказов видны в **Администрирование → Платежи →
Заказы Монета**. Покупатель получает сообщения «Ссылка на оплату» и «Оплата
принята» по своим настройкам уведомлений (веб-уведомление и/или письмо, если
на сайте настроена исходящая почта).
### Обновление
Скачайте новый архив и установите его так же, как в шаге 2 (Moodle предложит
заменить текущую версию), либо замените папку `payment/gateway/moneta` вручную
и откройте **Администрирование → Уведомления**. Настройки счетов и заказы
сохраняются.
### Реквизиты шлюза в платёжном аккаунте
| Поле | Значение |
|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Номер счёта** | Обязательно. Ваш номер расширенного счёта в системе [MONETA.RU](https://moneta.ru/) |
| **Код проверки целостности данных** | Обязательно. Код проверки целостности данных, указанный в настройках расширенного счёта в системе [MONETA.RU](https://moneta.ru/) |
| **Сервер платежей** | `Боевой` (по умолчанию) / `Демо` (demo.moneta.ru, отдельный номер счёта) |
| **Тестовый режим** | Должен совпадать с флагом «Тестовый режим» в настройках счёта |
| **Email для чеков** | Обязательно. Подставляется в чек, если у покупателя нет ни email, ни телефона — чек придёт на этот адрес, а ФИО покупателя в чеке сохранится |
| **Фискализация чеков** | Фискализация чеков по 54-ФЗ средствами системы [MONETA.RU](https://moneta.ru/) сервисом [kassa.payanyway.ru](https://kassa.payanyway.ru/) |
| **Ставка НДС** | Ставка для позиции «доступ к курсу» в чеке |
| **Отправлять ссылку оплаты на почту** | При создании заказа покупателю приходит сообщение со ссылкой на оплату — можно оплатить позже (по умолчанию включено) |
| **URL для уведомлений** | `https://<сайт>/payment/gateway/moneta/callback.php` — его нужно указать в настройках расширенного счёта `Check URL` / `Pay URL` в системе [MONETA.RU](https://moneta.ru/) |
## 🔧 Настройка счёта в личном кабинете [MONETA.RU](https://moneta.ru/)
1. 📝 [Зарегистрируйтесь](https://moneta.ru/partnerRegistration.htm) в платёжной системе MONETA.RU и заполните все
необходимые данные. Дождитесь проверки аккаунта и создайте **расширенный счет**.
2. ⚙️ Заполните настройки расширенного счета (раздел **«Мой счет» → «Управление счетами» → «Редактировать счет» →
«Показать дополнительные поля»**):
| Параметр | Значение |
|------------------------------------------|------------------------------------------------------|
| **Псевдоним** | `Монета` |
| **Тестовый режим** | `Нет` |
| **Check URL** | `https://<сайт>/payment/gateway/moneta/callback.php` |
| **Pay URL** | `https://<сайт>/payment/gateway/moneta/callback.php` |
| **HTTP метод (PayUrl, CheckUrl)** | `GET` / `POST` |
| **Код проверки целостности данных** | `ваш_код` (произвольный набор символов) |
| **Подпись формы оплаты обязательна** | `Да` |
| **Можно переопределять настройки в url** | `Да` |
| **Success URL** | Оставить пустым |
| **Fail URL** | Оставить пустым |
| **InProgress URL** | Оставить пустым |
| **Return URL** | Оставить пустым |
| **Target (возврат для iframe)** | Оставить пустым |
> ⚠️ **Важно!** Для кириллического домена PayURL и CheckURL должны быть указаны в кодировке [Punycode](https://2ip.ru/punycode/).
3. Для фискализации чеков по 54-ФЗ средствами за рамками **Moodle**, настройте вашу кассу в сервисе [kassa.payanyway.ru](https://kassa.payanyway.ru),
в настройках Вашего расширенного счёта в системе [MONETA.RU](https://moneta.ru/) установите Pay URL: https://kassa.payanyway.ru/index.php?do=invoicepayurl,
а в настройках кассы в сервисе [kassa.payanyway.ru](https://kassa.payanyway.ru) пропишите ссылку на Pay URL Вашего интернет-магазина.
В этом случае будет пробиваться чек по 54-ФЗ через сервис [kassa.payanyway.ru]([kassa.payanyway.ru](https://kassa.payanyway.ru)), а запрос на Pay URL
магазина будет проходить транзитом через сервис [kassa.payanyway.ru](https://kassa.payanyway.ru).
---
## 📚 Полезные ресурсы
- [Документация Moodle](https://docs.moodle.org/)
- [Документация Moneta](https://docs.moneta.ru/)
---
**✅ Модуль настроен, приятных платежей!** 💰🎉