Merge branch 'master' into release

# Conflicts:
#	README.md
#	modules/gateways/callback/payanyway.php
#	modules/gateways/payanyway.php
This commit is contained in:
Ivan Sadovin 2026-05-18 11:30:38 +03:00
commit c3f7257472
3 changed files with 399 additions and 332 deletions

View File

@ -1,6 +1,5 @@
# 🌟 Платёжный модуль PayAnyWay для WHMCS # 🌟 Платёжный модуль PayAnyWay для WHMCS
![WHMCS](https://img.shields.io/badge/WHMCS-Gateway%20Module-0070C0?logo=php&logoColor=white) ![WHMCS](https://img.shields.io/badge/WHMCS-Gateway%20Module-0070C0?logo=php&logoColor=white)
![PHP](https://img.shields.io/badge/PHP-5.6%2B-purple) ![PHP](https://img.shields.io/badge/PHP-5.6%2B-purple)
![License](https://img.shields.io/badge/License-MIT-green) ![License](https://img.shields.io/badge/License-MIT-green)
@ -12,32 +11,33 @@ WHMCS предоставляет мощный функционал, которы
> Данный модуль работает **только с валютой RUB (Российский рубль)**. > Данный модуль работает **только с валютой RUB (Российский рубль)**.
> Перед активацией модуля убедитесь, что в WHMCS в качестве базовой валюты установлен RUB, либо у пользователя выбран счёт в RUB. Использование других валют не поддерживается. > Перед активацией модуля убедитесь, что в WHMCS в качестве базовой валюты установлен RUB, либо у пользователя выбран счёт в RUB. Использование других валют не поддерживается.
> **📦 Версия модуля: 1.1.0** > **📦 Версия модуля: 1.0.0**
## 🏗️ Структура модуля ## 🏗️ Структура модуля
``` ```
└── modules ├── modules
└── gateways │ └── gateways
├── callback │ ├── callback
│ └── payanyway.php │ │ └── payanyway.php
└── payanyway.php │ └── payanyway.php
└── README.md
``` ```
## 🚀 Установка и настройка модуля ## 🚀 Установка и настройка модуля
1. 📥 [Скачайте архив модуля](https://www.payanyway.ru/info/public/cms/whmcs.zip) и распакуйте его. 1. 📥 [Скачайте архив модуля](https://git.pub.moneta.ru/CMS/WHMCS/releases) и распакуйте его.
2. 📂 Скопируйте содержимое архива в корень сайта. 2. 📂 Скопируйте содержимое архива в корень сайта.
3. ⚙️ В списке модулей оплаты WHMCS найдите **PayAnyWay** и активируйте его. 3. ⚙️ В списке модулей оплаты WHMCS найдите **PayAnyWay** и активируйте его.
4. ✏️ Заполните соответствующие поля в настройках способа оплаты: 4. ✏️ Заполните соответствующие поля в настройках способа оплаты:
| Поле | Значение | | Поле | Значение |
|------|----------| |-----------------------------------------|----------------------------------------------------------------|
| **Show on Order Form** | ✅ Поставить галочку | | **Show on Order Form** | ✅ Поставить галочку |
| **Display Name** | `PayAnyWay` | | **Display Name** | `PayAnyWay` |
| **Account Number** | Номер расширенного счета в PayAnyWay (Moneta) | | **Account Number** | Номер расширенного счета в PayAnyWay (Moneta) |
| **Code of data integrity verification** | Код проверки целостности данных из настроек расширенного счета | | **Code of data integrity verification** | Код проверки целостности данных из настроек расширенного счета |
| **Test Mode** | ❌ Галочку **не** ставить | | **Test Mode** | ❌ Галочку **не** ставить |
--- ---
@ -47,20 +47,20 @@ WHMCS предоставляет мощный функционал, которы
2. ⚙️ Заполните настройки расширенного счета (раздел **«Мой счет» → «Управление счетами» → «Редактировать счет»**): 2. ⚙️ Заполните настройки расширенного счета (раздел **«Мой счет» → «Управление счетами» → «Редактировать счет»**):
| Параметр | Значение | | Параметр | Значение |
|----------|----------| |------------------------------------------|------------------------------------------------------------------|
| **Тестовый режим** | `Нет` | | **Тестовый режим** | `Нет` |
| **Check URL** | `https://your_site_name/modules/gateways/callback/payanyway.php` | | **Check URL** | `https://your_site_name/modules/gateways/callback/payanyway.php` |
| **Pay URL** | `https://your_site_name/modules/gateways/callback/payanyway.php` | | **Pay URL** | `https://your_site_name/modules/gateways/callback/payanyway.php` |
| **HTTP method** | `GET` / `POST` | | **HTTP method** | `GET` / `POST` |
| **Проверить Check/Pay URL** | `Нет` | | **Проверить Check/Pay URL** | `Нет` |
| **Можно переопределять настройки в URL** | `Да` | | **Можно переопределять настройки в URL** | `Да` |
| **Подпись формы оплаты обязательна** | `Да` | | **Подпись формы оплаты обязательна** | `Да` |
| **Код проверки целостности данных** | аш_код` (произвольный набор символов) | | **Код проверки целостности данных** | аш_код` (произвольный набор символов) |
| **Success URL** | Оставить пустым | | **Success URL** | Оставить пустым |
| **Fail URL** | Оставить пустым | | **Fail URL** | Оставить пустым |
| **InProgress URL** | Оставить пустым | | **InProgress URL** | Оставить пустым |
| **Return URL** | Оставить пустым | | **Return URL** | Оставить пустым |
> ⚠️ **Важно!** Для кириллического домена PayURL и CheckURL должны быть указаны в кодировке [Punycode](https://2ip.ru/punycode/). > ⚠️ **Важно!** Для кириллического домена PayURL и CheckURL должны быть указаны в кодировке [Punycode](https://2ip.ru/punycode/).

View File

@ -16,26 +16,20 @@ require_once __DIR__ . '/../../../includes/invoicefunctions.php';
require_once __DIR__ . '/../payanyway.php'; require_once __DIR__ . '/../payanyway.php';
$requestData = ($_SERVER['REQUEST_METHOD'] === 'POST') ? $_POST : $_GET; $requestData = ($_SERVER['REQUEST_METHOD'] === 'POST') ? $_POST : $_GET;
$gatewayModuleName = 'payanyway';
try { try {
$gatewayModuleName = 'payanyway';
$gatewayParams = getGatewayVariables($gatewayModuleName); $gatewayParams = getGatewayVariables($gatewayModuleName);
if (!$gatewayParams['type']) { if (!$gatewayParams || !isset($gatewayParams['type'])) {
payanyway_sendResponse('FAIL', 500); // Module Not Activated payanyway_sendResponse('FAIL');
} }
$gatewayName = payanyway_getWhmcsVariableOrFail($gatewayParams, 'name');
$integrityCode = payanyway_getPayAnyWayIntegrityCodeOrFail($gatewayParams);
$callbackData = payanyway_getCallbackData($requestData); $callbackData = payanyway_getCallbackData($requestData);
('CHECK' === $callbackData['MNT_COMMAND']) (isset($callbackData['MNT_COMMAND'])) && ('CHECK' === $callbackData['MNT_COMMAND'])
? payanyway_handleCheckCallback($callbackData, $gatewayName, $integrityCode) ? payanyway_handleCheckCallback($callbackData, $gatewayParams)
: payanyway_handlePayCallback($callbackData, $gatewayName, $integrityCode, $gatewayModuleName); : payanyway_handlePayCallback($callbackData, $gatewayParams, $gatewayModuleName);
} catch (\PayAnyWayException $e) {
logTransaction($gatewayModuleName, $requestData, 'Error: ' . $e->getMessage());
payanyway_sendResponse('FAIL', 500);
} catch (\Exception $e) { } catch (\Exception $e) {
logTransaction($gatewayModuleName, $requestData, 'Error: ' . $e->getMessage()); logTransaction($gatewayModuleName, $requestData, 'Error: ' . $e->getMessage());
payanyway_sendResponse('FAIL', 500); payanyway_sendResponse('FAIL');
} }

File diff suppressed because it is too large Load Diff