yoomoney/cms-opencart3

Второй чек выбивается 12 раз

zhorapro opened this issue · 3 comments

Модуль версии 1.6.0
С 27 июля при переходе заказа в статус, указанный в настройке "Формировать второй чек при переходе заказа в статус", второй чек стал пробиваться 12 раз.
Происходит следующее:

  1. Метод hookOrderStatusChange перехватывает нужный статус и отправляет второй чек
  2. Делается запрос чеков по оплате и извлекается последний чек в массиве
  3. Перебор товаров из полученного последнего чека ищет товары со значением "payment_mode": "full_prepayment"
  4. Если такие товары в последнем чеке присутствуют, то формируется второй чек
  5. После успешной отправки второго чека метод hookOrderStatusChange вызывает изменение статуса со своим комментарием (Отправлен второй чек. Сумма %s рублей.)
  6. Изменение статуса в пункте 5 вызывает повторный цикл начиная с пункта 1
    Проблема в том, что последний чек, получаемый в пункте 2 - это самый первый чек, отправленный при оплате и у него всегда товары с атрибутом "payment_mode": "full_prepayment".
    Весь цикл крутиться до тех пор, пока последний чек в листинге (который ограничен 10 чеками) не станет одним из первых отправленных вторых чеков. Т.к. обновление листинга чеков происходит с небольшой задержкой, то успевают пробиться 11-13 чеков.

Ввиду того, что я у себя не вносил каких-то глобальных изменений в код движка, полагаю, что проблема в модуле. Возможно в методе catalog/model/extension/payment/yandex_money/Model/KassaSecondReceiptModel.php getLastReceipt имеет смысл заменить return array_pop($receipts); на return array_shift($receipts); Хотя это может не иметь смысла, судя по логам, запрос списка чеков на второй и третей итерации возвращает только первоначальный чек, вторые отправленные чеки туда не успевают попасть.

Добрый день!

Благодарю за обращение, проблема появилась из-за изменений на стороне Яндекс.Кассы. Мы уже подготавливаем исправление для этой проблеме. В ближайшие несколько рабочих дней должно выйти обновление.
До момента обновления модуля временно отключите отправку вторых чеков.

К сожалению, исправление в версии 1.6.1 не совсем решает проблему, как я писал выше, второй чек появляется в листинге чеков с некоторой задержкой, сегодня, после установки обновления, у меня успело отправиться три лишних чека.

Добрый день!

Сообщите пожалуйста, Ваш shopid или адрес сайта на почту cms@yamoney.ru. Посмотрим подробности по последним чекам.