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