yoomoney / cms-opencart3

YooKassa payment module for Opencart 3.x
https://yookassa.ru/developers
Other
21 stars 16 forks source link

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

Open zhorapro opened 4 years ago

zhorapro commented 4 years ago

Модуль версии 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/yandexmoney/Model/KassaSecondReceiptModel.php getLastReceipt имеет смысл заменить _return array_pop($receipts);_ на _return array_shift($receipts);_ Хотя это может не иметь смысла, судя по логам, запрос списка чеков на второй и третей итерации возвращает только первоначальный чек, вторые отправленные чеки туда не успевают попасть.

ostulov commented 4 years ago

Добрый день!

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

zhorapro commented 4 years ago

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

ostulov commented 4 years ago

Добрый день!

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