- MODX 3
- PHP 8.2
- miniShop3
Быстрый старт
Требования
| Требование | Версия |
|---|---|
| MODX Revolution | 3.0+ |
| MiniShop3 | 1.14.0‑beta1 и новее |
| PHP | 8.2+. Требуется расширение openssl для проверки подписи уведомления банка |
| pdoTools | 3.0+ |
| Сайт | HTTPS на webhook; 301 с HTTP часто приводит к потере тела POST |
Шаг 1: Провайдер modstore и установка пакета
- Система → Управление пакетами → Провайдеры → добавьте modstore.pro:
- URL:
https://modstore.pro/extras/ - Email и API‑ключ из личного кабинета modstore.pro
- URL:
- Убедитесь, что установлен MiniShop3.
- Управление пакетами → установите msp3Tochka (в Show Details укажите провайдера modstore.pro).
- Управление → Очистить кеш.
Резолвер создаёт два активных способа. Старый mspTochka, если он уже установлен, не удаляется.
| Название | Класс |
|---|---|
| Оплата через Точка Банк | Msp3Tochka\Payment\TochkaPayment |
| Оплата через Точка Банк (двухстадийная) | Msp3Tochka\Payment\TochkaTwoStagePayment |
JWT и customerCode поместите в msPayment.properties (ключи jwt_token, token, secret или secret_key). Если свойства пусты, пакет читает системные настройки. При пустом JWT пакет использует устаревший ключ msptochka_jwt_token.
Пакет не отправляет оплату, если сумма заказа меньше 1 копейки. paymentLinkId ограничен 45 символами.
Откуда брать ключи
Для работы требуется открытый счёт в Точке и подключённый интернет‑эквайринг. В песочнице боевые ключи не нужны. Публичные значения приведены в шаге 3.
JWT
Токен выпускается в интернет‑банке. Инструкция банка: авторизация по JWT.
- Вкладка Сервисы.
- В блоке Все сервисы откройте Интеграции и API.
- Создать JWT‑ключ. Укажите название и срок действия. По истечении срока ключ перевыпускается вручную. Refresh‑токен не предусмотрен.
- Продолжить. Отметьте разрешения. Для эквайринга банк обычно требует
MakeAcquiringOperationиReadAcquiringData. Пакет не проверяет права токена. При нескольких компаниях разрешения настраиваются для каждой.ManageWebhookDataтребуется только при регистрации webhook через API Точки. Из админки MODX пакет не регистрирует webhook. - Создать ключ и ввести код из СМС.
- Скопируйте JWT в поле
msp3tochka_jwt_token. Тот же токен отображается в блоке JWT‑ключи того же сервиса.
На том же экране банк показывает client_id. В настройках msp3Tochka поля для него нет. Он требуется при регистрации webhook через API Точки: один URL на один client_id.
При перевыпуске банк удаляет старый JWT и старый client_id. В MODX вставьте новый токен. Webhook со старым client_id зарегистрируйте заново.
В запросах пакет автоматически подставляет заголовок Authorization: Bearer.
customerCode
Это идентификатор компании в API. Банк обычно выдаёт строку до 9 символов. Пакет не проверяет длину. На экране создания JWT этот код не отображается.
Вызовите метод Get Customers List с вашим JWT. Найдите объект, у которого customerType равен Business, и возьмите значение customerCode. Вставьте его в поле msp3tochka_customer_code.
Неверный или пустой код приводит к ошибке 403 Forbidden by consent.
merchantId
Поле msp3tochka_merchant_id оставьте пустым, если у вас одна торговая точка интернет‑эквайринга.
При нескольких точках банк требует merchantId. Согласно документации банка, это 15 цифр из метода Get Retailers. Пакет не проверяет формат. Идентификатор точки СБП отличается: по правилам банка он начинается с MA или MB. Его не следует помещать в эту настройку.
Термины банка: customerCode и merchantId.
Шаг 2: Куда вписать в MODX
- Настройки → Системные настройки, фильтр
msp3tochka. - Либо откройте способ оплаты и заполните свойства:
jwt_token(а такжеtoken,secret,secret_key) иcustomer_code. Непустые свойства имеют приоритет над системными настройками. - После сохранения: Управление → Очистить весь кеш. Иначе API может не увидеть новые значения.
Список полей: Системные настройки.
Шаг 3: Песочница
msp3tochka_test_mode = Да. Хост: https://enter.tochka.com/sandbox/v2.
Публичные значения из документации Точки:
- JWT:
sandbox.jwt.token customerCode:1234567abmerchantId:200000000001097
В песочнице отсутствует платёжная форма. Ссылка ведёт на merch.example.com. Запрос статуса возвращает учебный ответ: оплачено, сумма 100 ₽, номер ссылки в ответе отсутствует. Пакет в этом случае берёт номер из токена. Уведомление пройдёт только при сумме заказа 100 ₽.
Оплата картой в песочнице невозможна.
Шаг 4: URL уведомлений
В кабинете Точки укажите событие acquiringInternetPayment. Укажите URL сайта:
https://ваш‑домен.ru/assets/components/msp3tochka/webhook.phpHTTPS без Basic Auth и без 301. Тело уведомления – компактный JWT, Content‑Type: text/plain. Пакет проверяет подпись ключом банка (msp3tochka_webhook_jwk_url), затем самостоятельно запрашивает статус платежа.
Шаг 5: Способ оплаты в MiniShop3
- В админке MiniShop3 откройте Настройки → Оплаты.
- Включите Оплата через Точка Банк или Оплата через Точка Банк (двухстадийная).
- Привяжите способ к доставке.
Если рядом установлен старый mspTochka, отключите его и измените URL webhook. Подробнее: Переход.
Шаг 6: Боевой режим
msp3tochka_test_mode= Нет. Хост в боевом режиме:https://enter.tochka.com/uapi, если не заданmsp3tochka_api_base_url.- Вставьте боевые JWT,
customer_codeи при нескольких точкахmerchant_id. Очистите кеш. - Зарегистрируйте webhook из шага 4.
- Первый платёж лучше провести на 1 ₽. Проверьте попытку
paid, статусms3_status_paidи письмо из Центра уведомлений. - Отключите
msp3tochka_debug.
