Добрый день!
Буду очень признателен, если кто-то поделится информацией (личным опытом).
Для интеграции Яндекс.Кассы в Drupal 8 Яндекс предлагает свой модуль https://kassa.yandex.ru/integration/drupal8-yandexkassa/
Я уже давно наблюдаю за этим решением и убежден, что модуль, предлагаемый Яндексом, не работал и не работает, а техническая поддержка Яндекса игнорирует все проблемы модуля и даже может не ответить на обращение.
Вопросы
1) У кого-нибудь получилось запустить модуль в том виде, в котором его поставляет Яндекс?
2) Модуль нужно расценивать как заготовку (без корректировок не работает) для примера использования их библиотеки https://github.com/yandex-money/yandex-checkout-sdk-php
Буду рад любой информации. Спасибо!
Комментарии
1. Модуль вроде вполне себе работал, но оказался бесполезен на одном из проектов - в силу специфической структуры чекаута. Решили вопрос кастомным модулем, но с использованием упомянутой библиотеки yandex-checkout-sdk-php - так было быстрее, поскольку эта библиотека таки обрабатывает ошибки и даёт мало-мальские врэпперы для основных функций API.
2. Не могу как-то однозначно ответить на этот вопрос, поскольку, как писал выше, на проекте модуль оказался бесполезен. Не думаю, что нужны какие-либо корректировки кода (в нашем случае всё заработало), но должен отметить крайне слабое и устаревшее документирование установки, настройки и работы с модулем. До многих вещей приходилось доходить самому.
Спасибо за скорый ответ!
а) А эта проблема у вас не возникала? https://drupal.ru/node/141230 (Работа с яндекс кассой в Drupal 8. Кому-нибудь удалось это настроить?)
Нужно отметить, что год назад этой ошибки еще не было, а вот теперь она есть и судя по всему Яндекс не торопиться ее править.
б) Также у меня не решена проблема, когда в тестовом режиме все работает хорошо, а в боевом режиме оплата проходит, но заказ не финализируется, так и остается в корзине, со всеми вытекающими из этого последствиями (Яндекс свою причастность отрицает).
К чему я задаю эти вопросы?
Я пришел к выводу, что полагаться на модуль Яндекс не следует (поддержка по факту отсутствует, модуль не реагирует на обновления самого commerce2). Не хотелось с этим разбираться, но ситуация не меняется уже очень давно. В связи с этим хочу убедиться, что модуль не пригоден, а не я что-то делаю не так.
Возникала (при попытке добавить шлюз), но точно не помню, как решил. Помню, что после копания форумов и документации таки как-то "допёр".
Вообще - это странно.
Но не будем забывать, что Я.Касса работает через механизм HTTP-уведомлений. То есть - после осуществления платежа Я.Касса отправляет запрос на специальный роут Друпала. Так вот, настройки этого роута (т.е. просто адрес) для HTTP-уведомлений в ЛК Я.Кассы нужно вбивать раздельно для тестового и боевого режимов (даже если адрес совпадает). Может, здесь это забыли сделать?
Я даже боюсь озвучить время, которое было потрачено на переговоры с Яндексом по этому вопросу, но вопрос не решился...
Как я понимаю, подтверждения, что модуль Яндекса не работает я у вас не найду :).
Буду разбираться в коде (пока в сторону "Url для нотификаций" и смотрю). Если кто-то, проходящий мимо, что-то может сообщить по этому вопросу, буду очень рад.
Еще раз спасибо, OldWarrior, за участие!
Я могу только сказать, что модуль, пожалуй, слишком сырой для комфортной и надёжной работы. Либо - наоборот, устарел. В любом случае заставить его работать с первого тычка обычно не получается.
@mgbsv, я уже отвечал в чате друпала, продублирую здесь:
ситуация следующая:
Есть официальная версия модуля от яндекса - https://github.com/yandex-money/yandex-money-cms-v2-drupal8
У этой версии есть проблемы. Она полурабочая.
====
Есть ещё мой форк официального модуля - https://github.com/davpsh/commerce_yandex_checkout. В нём, в свободное время, я дорабатываю логику, исправляю баги и пишу тесты.
Мой форк вроде тоже рабочий, правда я не проверял всех кейсов.
====
Есть такой модуль (появился относительно недавно) - https://www.drupal.org/project/commerce_yandex_kassa
Я общался с человеком который его запостил. Он просто взял код из репа яндекса, переименовал модуль и плагины и что-то там выпилил.
Я не смотрел что он там сделал, но вроде как это рабочий вариант модуля
Спасибо большое! Ваш форк решил проблему. Заменил файлы оригинального модуля. Шлюз заработал на ура!![Wink](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/wink.gif)
P.S. Модуль по ссылке https://www.drupal.org/project/commerce_yandex_kassa за вести не удалось.
Как-то однажды писал в Яндекс по этой проблеме. С тех пор настройкой модуля не занимался. Использую PayMaster и Сбербанк в своих проектах.
![](/sites/default/files/inline/images/2020/104649/2020-08-05_18-54-05.png)
Всем огромное спасибо за комментарии, информации я получил больше, чем ожидал. Еще раз спасибо!
Проблема, видимо, в сборке магазина. Еще не понял, как устранять, но ситуация прояснилась.
Отладка показала, что в методе onNotify (в файле YandexCheckout.php) выполняется блок (как и ожидается):
$payment->setRemoteState($paymentInfo->status);
$order->state = 'completed';
$order->setCompletedTime(\Drupal::time()->getRequestTime());
$order->save();
$payment->save();
$this->log('Payment complete');
return new Response('Payment complete', 200);
Согласно коду в onNotify, ордер переводится в состояние 'completed', но при этом (если загрузить ордер после всего процесса), можно видеть:
locked = 1
placed = NULL
cart = 1
checkout_step = payment
Это проясняет, почему ордер остается в корзине. Будем искать.
Обсуждение моей проблемы продолжаю здесь Paymen с onNotify - Заказ остается в корзине
Всем спасибо!
Точно могу утверждать, что модуль от Яндекса, не то что с ошибками, а написан без понимания полной интеграции с commerce 2.
Если выбираете Яндекс.Кассу, то остаетесь один на один со всеми проблемами.
Яндес.Кассу в часности и Яндекс в общем - не рекомендую подходить даже близко!