Skip to content
mspTBank
Приём оплаты через T-Bank для MiniShop3: redirect, webhook, чеки 54-ФЗ, одно- и двухстадийная схема, возвраты
  1. Компоненты
  2. mspTBank
  3. FAQ

FAQ

Оплата и статус заказа

Заказ не переходит в «оплачен»

Проверьте по порядку:

  1. Notification URL в кабинете T-Bank совпадает с https://ваш-домен.ru/assets/components/msptbank/webhook.php.
  2. Сайт доступен по HTTPS снаружи (не только localhost).
  3. Фаервол и WAF не блокируют POST от IP T-Bank.
  4. Заполнены msptbank_terminal_key и msptbank_password для того же терминала, что в кабинете.
  5. В MODX верный ms3_status_paid (часто ID 3).
  6. Включите msptbank_debug и посмотрите лог MODX после тестовой оплаты.

Источник истины: webhook, а не только возврат браузера на SuccessURL.

Покупатель вернулся на сайт, но статус «не оплачен»

Webhook мог опоздать или не дойти. TbankPayment::receive() при наличии PaymentId в URL вызывает GetState как fallback. Если параметра нет, дождитесь webhook или проверьте Notification URL.

Сумма в webhook не совпадает

WebhookHandler отклоняет уведомление, если Amountorder.cost в копейках. Проверьте, что стоимость заказа в MS3 не менялась после Init.

Тестовый контур

Ошибки rest-api-test.tinkoff.ru

  1. msptbank_test_mode = «Да».
  2. TerminalKey без приставки DEMO (по инструкции T-Bank для тестовой среды).
  3. IP сервера добавлен в белый список через чат Т-Бизнес.
  4. Платите только тестовыми картами, не боевой картой.

Боевой терминал в test_mode

Не смешивайте контуры. Для msptbank_test_mode = «Да» нужны ключи и whitelist тестового контура. Для боевых платежей выключите test_mode и используйте рабочий терминал.

Конфигурация

«Payment is not configured»

Пустые msptbank_terminal_key или msptbank_password. Заполните оба в Системные настройки → msptbank.

Способ оплаты TBank не появился

Переустановите пакет или создайте msPayment вручную с классом MspTBank\Payment\TbankPayment. Очистите кэш MODX.

Плагин msptbank_bootstrap отключён

Классы MspTBank\ не загрузятся. Включите плагин на событии OnMODXInit.

Повторная оплата

Каждый клик «Оплатить» создаёт новый платёж

Так работает текущая версия: каждый вызов send() делает новый Init. До webhook tbank_payment_id в заказе нет.

Для оплаты из ЛК:

  • показывайте кнопку только в статусах «к оплате»
  • вызывайте send() по клику, не при рендере списка
  • при необходимости храните pending PaymentId в своём сниппете.

54-ФЗ и чеки

Как включить передачу Receipt?

  1. Подключите онлайн-кассу в терминале T-Bank.
  2. Оставьте msptbank_send_receipt = «Да».
  3. Проверьте msptbank_taxation и msptbank_vat.
  4. Убедитесь, что у заказа есть Email или телефон покупателя.

Компонент добавляет Receipt в Init, Confirm для двухстадийной схемы и Refund.

Что будет, если у заказа нет Email и телефона?

Компонент пропустит чек, запишет warning в лог и отправит платёж без Receipt. Оплата не блокируется, потому что T-Bank требует Email или Phone для Receipt.

Нужно ли отключать msptbank_send_receipt?

Да, если в терминале T-Bank не подключена онлайн-касса или магазин пока не готов передавать чеки. В этом случае установите msptbank_send_receipt = «Нет».

Почему платёж не отправляется с ошибкой Receipt items total mismatch?

Сумма строк Receipt.Items не совпала с суммой платежа или возврата. Компонент останавливает запрос, чтобы не отправить некорректный чек. Проверьте состав заказа, стоимость доставки, скидки и итоговую сумму.

Какой PaymentMethod передаётся в чеке?

Для обычной оплаты в Init используется full_payment. При двухстадийной схеме Init отправляет full_prepayment, а Confirm после AUTHORIZED отправляет full_payment. Для Refund используется full_payment.

Отладка

Где смотреть логи

Включите msptbank_debug = «Да». Сообщения с префиксом компонента попадут в лог MODX (core/cache/logs/ или путь из конфигурации). Password терминала в лог не пишется.

Webhook возвращает ошибку

При неверном Token или несовпадении суммы обработчик логирует предупреждение и не меняет заказ. Сверьте Password терминала и тело уведомления в debug-логе.

Общие

Работает ли с MiniShop2?

Нет. Только MiniShop3 и MODX 3.

Какие PHP-расширения нужны?

json, curl (для HTTP к API T-Bank).

Нужен ли composer на сервере?

Нет для установки transport-пакета. Зависимости поставляются вместе с компонентом.