Добрый день!
Буду очень признателен, если кто-то поделится информацией (личным опытом).
Для интеграции Яндекс.Кассы в 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
Я общался с человеком который его запостил. Он просто взял код из репа яндекса, переименовал модуль и плагины и что-то там выпилил.
Я не смотрел что он там сделал, но вроде как это рабочий вариант модуля
Спасибо большое! Ваш форк решил проблему. Заменил файлы оригинального модуля. Шлюз заработал на ура!
P.S. Модуль по ссылке https://www.drupal.org/project/commerce_yandex_kassa за вести не удалось.
Как-то однажды писал в Яндекс по этой проблеме. С тех пор настройкой модуля не занимался. Использую PayMaster и Сбербанк в своих проектах.
Всем огромное спасибо за комментарии, информации я получил больше, чем ожидал. Еще раз спасибо!
Проблема, видимо, в сборке магазина. Еще не понял, как устранять, но ситуация прояснилась.
Отладка показала, что в методе 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.
Если выбираете Яндекс.Кассу, то остаетесь один на один со всеми проблемами.
Яндес.Кассу в часности и Яндекс в общем - не рекомендую подходить даже близко!