Удаление оплаченного заказа при двойном оформлении

version 4.11.3

При оплате через Робокассу, если пользователь по какой-то причине не смог после успешной оплаты вернуться со страницы оплаты робокассы(тупит инет, глючит ПК etc) в магазин, и нажал “назад”, чтобы попасть в корзину и ещё раз нажал “Оформить заказ”, то уже оплаченный заказ удаляется из БД и оформляется заново.

Как воспроизвести проблему:

  1. Оформляете заказ
  2. оплачиваете через Робокассу
  3. сразу после оплаты предотвращаете возврат в магазин(закрыли вкладку)
  4. открываете корзину, оплачиваете заказ заново

имеется ввиду, что Робокасса присылает данные по
/index.php?dispatch=payment_notification.result&payment=robokassa
но пользователь после этого не попадает сюда:
/index.php?dispatch=payment_notification.return&payment=robokassa
и идёт оплачивать корзину еще раз

Это глобальная проблема, по сбербанку кажется или яндекс, подобное писали когда много раз происходит оплата/отмена, не понимаю, почему не сделали банальную проверку защиту от таких вещей в самом движке.

Все верно, подтверждаем. Приходится лютые костыли клиентам ставить. Проблема на всех платежках. Обратите внимание @cs-cart_team

1 лайк

Вообще почти у всех уже есть вебхуки или АПИ для запроса статуса платежа, почему их не интегрируют в систему?
Просто если вы делаете сами модули, будь добры поддерживаете их актуальными или откажитесь от них и пусть этим займутся нормальные разработчики и сделают модули пусть и платными, но рабочими на 100%.

3 лайка

Подтверждаю. Проблема на всех платежках.

Мало того, несколько раз сталкивались с ситуацией, когда клиент оплачивал заказ, возвращался в корзину, набивал ее другими товарами и оплачивал. В итоге получаем две оплаты и один заказ в БД.


Собственно, проблема есть и была всегда

2 лайка

Проблема в том, что при переходе на сайт платежной системы заказ не оформляется. Проблему поднимали ни раз и уже давно. Оформление заказа новое сделали, а проблема осталась. Видимо не достаточно логического “Нажал оформить заказ - заказ должен быть оформлен”. Обязательно нужно рыдать, кричать, умолять или еще чего-то там чтобы понять что проблема есть - при выборе онлайн-оплаты и нажатии на кнопку “Оформить заказ” - заказ не оформляется. Но если это не проблема, а фича, то про нее нужно упомянуть на сайте в описании CS-Cart :joy:

Да о чем речь, зайдите на мультивендер лендинг, один сайт уже сменил движок, другой продается, третий выглядит как обычный магазин на столько грустно что лучше не показывать его в портфолио движка. У меня складывается ощущение, что cs-cart это как фрукты на рынке покупать, на витрине красивые, а в пакет кладут что попало. А когда возмущаешься тебе говорят не нравится иди дальше.

При оплате после подтверждения таких проблем не замечал, слава богу :joy: ну и ещё костыль какой то впилен был вроде

Потому-что по факту заказ уже оформлен полностью, а при оплате там полузаказ оформляется, вообще странный механизм цс-карт незавершенных заказов, когда у заказа есть номер, но почему-то это не заказ, а незавершенный заказ. Ну нельзя же просто взять и сделать нормально.

1 лайк

В старых версиях так и было. Но потом поведение, о котором пишут в этой теме, было добавлено как одна из фишек :smiley:

Проблема в болванчиках сидящих в баг-трекере. Уж сколько раз тыкали, а всё одно по одному. Формальный подход без интереса приводит к тому что вместо того чтобы пользователи ПОМОГАЛИ выявлять баги разработчикам, получается кривое зеркало, где пользователи должны ДОКАЗАТЬ существование проблемы людям, не заинтересованным в выявлении. Уж сколько раз было что разработчики и в код тыкали и показывали что и на что исправить, а тема уходила в “Не воспроизводится”, потому что неквалифицированный сотрудник техподдержки не может понять написанного.

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

1 лайк

Вот тут нужно осторожно. Суть в том. Что покупатель может перейти к онлайн оплате (тут нужен order_id, это важно!). Он попадает на страницу шлюза. Тут он или потерял карту, или испугался формы, или вспомнил что лимиты меньше суммы заказа… закрывает вкладку и хочет выбрать другой способ оплаты.
Если по факту заказ уже оформлен, ему нужно додуматься добраться до личного кабинета и повторно оплатить заказ другим способом, если он найдёт это и если для его статуса это будет доступно.

В общем, можно исправляя одну ошибку, сделать другую. Важно понять каким должен быть алгоритм. Я, навскидку, тоже пока не вижу правильного решения, которое учтёт все возможные варианты на 100%

И с такой проблемой тоже сталкивались… Надо попробовать посмотреть, как делают большие известные магазины, которые такие проблемы у себя решили, ну и конкуренты по рынку CMS.

А еще не забыть(как в текущей версии модуля Сбербанк) - нельзя наобум генерировать id заказа и передавать в Сбербанк(или любую другую платежную систему) т.к. в случае незавершения операции позже не к чему даже обратиться чтобы проверить статус оплаты - там номер операции с рандомным постфиксом… Всегда должен сохраняться способ обратиться повторно по возможно уже переданному заказу, чтобы актуализировать его состояние. Стандартный модуль Сбербанка ведет себя неправильно - если заказ оплатили и после закрыли страницу эквайринга, CS-Cart уже никак не может актуализировать статус заказа, даже с доработками - нет ни номера заказа, ни id транзакции.

имхо, проблема решается в 1 строчу: перед оформлением заказа проверить оплачен он уже или нет.

Когда заказ оформлен то у менеджера куча возможностей довести сделку до конца - контакты есть и есть 100% готовность клиента приобрести товар (он оформил заказ). А магазин может помочь, например если еще не оплачен то отправить не простое письмо (спасибо за заказ), а с инструкцией как оплатить и что делать если не получилось. Но пока заказ не оформлен менеджер не знает готов ли клиент приобрести товар. А звонить всем кто просто набирает корзину… кому такое понравится? ))
Купить в 1 клик так и работает - оставьте краткую заявку и мы поможем все оформить. Полное оформление заказа это тоже 1 клик только больше полей в форме и доп возможности, которые не должны негативно влиять на завершение оформления заявки (заказа).

Смотрите выше, механизмы оплат вступают в дело только после создания заказа, так как для оплаты нужен номер заказа.

Баг есть, это факт. Хотелось бы увидеть решение которое решит обе проблемы, а не вернет старую)

1 лайк