Автор дополнения
Иван Бочкарев
Пакетов
21
Закачек
135
Обычно отвечает в течение суток
Автор дополнения
Пакетов
21
Закачек
135
Обычно отвечает в течение суток
Версия 1.0.2-pl
Дата выпуска 09.07.2026
Загрузки 4
Просмотры 449
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
msp3YooKassa — приём оплаты через ЮKassa для MiniShop3 на MODX Revolution 3.x

Поддерживаются карты, кошельки и остальные способы из вашего договора с ЮKassa. Связка с сервисом — по официальному API (HTTP Basic: shopId и секретный ключ), внутри используется SDK yoomoney/yookassa-sdk-php. Статусы смотрите в кабинете ЮKassa. На сайте заказ подтягивается по входящим HTTP-уведомлениям (webhook).

Особенности
  • рассчитано на MiniShop3 и MODX 3.0+
  • одно- и двухстадийные схемы в терминах процесса оплаты ЮKassa: сразу списание или холд waiting_for_capture с последующим подтверждением
  • свои URL успеха и ошибки, при необходимости — подробные логи в MODX

Регистрация в ЮKassa

Сначала заведите магазин в ЮKassa и возьмите в разделе интеграции идентификатор магазина и секретный ключ. С чего начать технически — в быстром старте для разработчиков.



HTTP-уведомления

В кабинете укажите URL приёма уведомлений: Интеграция → HTTP-уведомления (страница настроек). По правилам ЮKassa адрес должен быть на HTTPS (TLS 1.2+), обычно порт 443 или 8443.

Пример для вашего сайта:

ВАШ_ДОМЕН/assets/components/msp3yookassa/webhook.php

Дополнение разбирает тело уведомления (JSON) и отвечает 200 OK, как требует ЮKassa.



Настройка в MODX

После установки откройте системные настройки с префиксом msp3yookassa_ (пространство имён msp3yookassa) и заполните как минимум:

  • Идентификатор магазина — ключ msp3yookassa_shop_id (это shopId из API)
  • Секретный ключmsp3yookassa_secret_key (второй параметр HTTP Basic к API)

По желанию включают чеки 54-ФЗ (msp3yookassa_payment_receipt), код НДС (msp3yookassa_vat_strong, значения 1–10 — справочник ЮKassa), свои success/fail URL и отладку msp3yookassa_debug.



Тестовый магазин

В кабинете ЮKassa есть тестовый магазин с отдельным shopId и ключом с префиксом test_. Чаще всего он появляется после ИНН и заполнения технических данных. Подставьте тестовые значения в настройки компонента так же, как боевые: сценарий оплаты как в бою, деньги не уходят.

Боевые карты в тесте не подходят. Берите номера тестовых карт из инструкции ЮKassa. Срок действия — любая дата позже сегодняшней. CVC и код 3-D Secure можно набрать любыми цифрами (конкретные карты и сценарии — в той же статье).

Чеки 54-ФЗ

В тесте можно включить проверку чеков: касса имитируется, чек в ОФД не уйдёт — так и задумано для отладки (раздел о тестировании).

Для реальных продаж включите передачу данных чека в настройках и проверьте кассу уже в боевом магазине. В заказе должен быть email покупателя.

Сценарии оплаты

ЮKassa умеет одностадийную оплату (статус succeeded) и двухстадийную: после оплаты — waiting_for_capture, дальше подтверждение или отмена. В админке MODX для подтверждения используется процессор Msp3YooKassa\Processors\CaptureProcessor с параметром order_id. Статусы подробно — в справочнике API и описании процесса оплаты.

Способы оплаты в MiniShop3

После установки в магазине появятся:

  • Оплата через ЮKassa — одностадийно: списание по правилам выбранного сценария ЮKassa
  • Оплата через ЮKassa (двухстадийная) — холд средств, затем вручную в менеджере MODX можно подтвердить списание или отменить платёж



Документация ЮKassa: yookassa.ru/developers. Компонент: docs.modx.pro/components/msp3yookassa

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.2-pl] - 2026-07-09

Fixed

  • Webhook: notifications for payments not created by this package (e.g. SMS invoices from the YooKassa cabinet) are acknowledged and skipped at debug level instead of writing order not found to the MODX error log.

[1.0.1-pl] - 2026-06-20

Fixed

  • Webhook and two-stage capture: order status is updated via MiniShop3 OrderStatusService instead of direct save(), so msOnChangeOrderStatus fires and notification center emails (e.g. manager alert on paid status) are sent.
  • OrderStatusUpdater: status change runs before saving properties, avoiding a paid payment ID in DB while the order status stayed unchanged.
  • Webhook/capture failures (status change, hash mismatch, missing order) are always written to the MODX error log; debug-only messages stay behind msp3yookassa_debug.
  • OrderStatusUpdater validates MiniShop3 bootstrap before changing status.

Changed

  • README, docs/readme.txt, _preview/DESCRIPTION.md: статус после оплаты, уведомления MS3, разделение error/debug логов.

[1.0.0-pl] - 2026-04-23

Added

  • YooKassa API integration for MiniShop3.
  • One-stage payment (immediate capture).
  • Two-stage payment (hold; capture/cancel from manager via Capture processor).
  • HTTP webhook endpoint to sync order status from YooKassa notifications.
  • Optional 54-FZ receipts (fiscalization) via ReceiptBuilder.
  • System settings: shop_id, secret_key, receipt mode, VAT code, success/fail URLs, debug flag.
  • Bootstrap plugin (OnMODXInit) for PSR-4 autoload of payment handlers.
  • Transport resolvers: settings, msPayment records (one-stage and two-stage classes), assets.
  • Payment send() success payload includes order_id, order_num, and msorder (UUID) for storefront integrations and debugging.
  • Build: optional modstore.pro transport encryption (EncryptedVehicle, resolve.encryption.php) — same pattern as ms3Favorites; enable with encrypt => true in _build/config.inc.php.
  • Repository _preview/: ModStore copy (DESCRIPTION.md, modstore-description.md), logos logo-320.png / logo-320-v2.png / logo-320-v3.png, banners banner-1200x630.png / banner-1200x630-v2.png — not included in transport ZIP.

Changed

  • Runtime MODX log lines from this extra (including webhook and receipt debug, YooKassa payment flow) are written only when system setting msp3yookassa_debug is enabled.
  • Capture processor: log line on capture failure is also gated by msp3yookassa_debug (failure message still returned to the manager action).
  • Debug log label: YooKassa createPayment request distinguishes the API request body from the payment response.

Fixed

  • $modx->log(): context is no longer passed as the third argument (that parameter is the log target in MODX/xPDO). Passing an array there could corrupt HTTP output and break MiniShop3 JSON API (order/submit), causing frontend submission errors.
  • Order persistence after createPayment: if saving the order with yookassa_payment_id in properties fails, return a clear error instead of continuing silently.

Последние обсуждения в сообществе MODX.pro