- MODX 3
- PHP 8.2
- miniShop3
Быстрый старт
Как принять первый платёж через Точка Банк на сайте с MiniShop3.
Требования
| Требование | Версия |
|---|---|
| MODX Revolution | 3.0+ |
| MiniShop3 | 1.14.0-beta1 и новее |
| PHP | 8.2+. Нужно расширение openssl: им пакет проверяет подпись уведомления банка |
| Сайт | 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). Если properties пусты, пакет читает системные настройки.
Заказ дешевле 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 Точки: на один client_id приходится один URL.
При перевыпуске банк удаляет старый JWT и старый client_id. В MODX вставьте новый токен. Если webhook был привязан к старому client_id, зарегистрируйте его заново.
В запрос пакет сам подставляет заголовок Authorization: Bearer.
customerCode
Это идентификатор компании в API, строка до 9 символов. На экране создания JWT его нет.
Вызовите Get Customers List с этим JWT. Возьмите customerCode у объекта, где customerType равен Business. Вставьте в msp3tochka_customer_code.
Чужой или пустой код даёт 403 Forbidden by consent.
merchantId
Поле msp3tochka_merchant_id оставьте пустым, если торговая точка интернет-эквайринга одна.
Если точек несколько, банк требует merchantId. Это 15 цифр из Get Retailers. Идентификатор точки СБП другой: он начинается с MA или MB. Его в эту настройку не кладите.
Термины банка: customerCode и merchantId.
Шаг 2: Куда вписать в MODX
- Настройки → Системные настройки, фильтр
msp3tochka. - Либо откройте способ оплаты и заполните properties:
jwt_token(также принимаютсяtokenиsecret) иcustomer_code. Непустые properties перекрывают системные настройки. - После сохранения: Управление → Очистить весь кеш. Иначе 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.
