Заказ в статусе "Отложен" вместо "Оплачен"

В случае оплаты заказа картой онлайн, во время обмена остатков из 1С и запрете отрицательного количества товаров на сайте может случиться ситуация когда при наборе корзины остатки были, а во время оплаты в банке их уже не стало. Возникает интересная ситуация - заказ вместо статуса Оплачен попадает в статус Отложен. Это очень непредсказуемое поведение, у меня заказы с такими статусами даже в 1С не прогружаются, грозит ошибками: во-первых, не формируется кассовый чек т.к. формирование чеков завязано на статус. Во-вторых, оплаченный заказ не имеет единственного в CMS признака оплаты - статуса оплаты. Это очень неправильное поведение, которое было бы хорошо устранить т.к. независимо от настроек статуса Оплачен, он себя не имеет права так вести, когда на него возложены такие функции.

4 лайка

Напоминаю о проблеме.

Сюда же. Сбербанк может при определенных обстоятельствах(не знаю, что там было, но факт) несколько раз передавать информацию на Сайт. У меня в одном заказе пришло аж трижды, в течении одной секунды и заказ трижды был переведен в статус Оплачен. При этом было сформировано 2 кассовых чека(вот тут вопрос, если три раза переведен в Оплачен, то почему чека два… ну да ладно). Было бы неплохо предусмотреть такие косяки сторонних сервисов и предусмотреть защиту от них. Если бы не внимательный бухгалтер - были бы проблемы с налоговой.

Есть обратная сторона вопроса. Если по каким-то причинам банк напротив не передал информацию об оплате - заказ на сайте остается в статусе Незавершенный, не формируется кассовый чек, ну и другие проблемы связанные с тем что заказ не в том статусе, который предполагает работу с ним отдела продаж(технический статус не выгружается в 1С т.к. возможно он будет еще оплачен). У Сбера есть API и при выборе соответствующего способа оплаты, было бы неплохо запрашивать информацию о заказе(а тут потребуется что-то сделать с формированием номера заказа передаваемого в Сбер т.к. в коробке там постфикс в виде таймстампа, а если информация о ID транзакии еще не получена, то как бы её угадать? В общем, тоже требует решения… Таймстамп - очевидно, костыль созданный для возможности повторной передачи оформления заказа, но рождает кучу проблем, нужно что-то иное, что возможно было при предсказать не только на стороне сайта(сейчас и сайт не знает какой номер заказа был передан в Сбер), но и в другом ПО интернет-магазина, в учетной программе, которая так же обращается к Сбербанку).

В общем, логику работы модуль было бы хорошо немного доработать. Сейчас в ней есть логические ошибки, которые приводят к проблемам.

Связанная проблема