Что такое ошибка транзакции при выводе

Расскажем, почему банк отклоняет транзакцию…

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

[adace-ad id=»5173″]

Сегодня узнаем — что делать, если банк получателя отклонил транзакцию и какие причины этого сбоя существуют.

Причины отклонения транзакции

Владельцу карты, обычно, самостоятельно приходиться разбираться, почему не проходит транзакция: большинство банков причины не сообщают.

Если не проходит платеж в интернет-магазине, то причиной могут быть технические работы на сайте магазина, сбои на серверах платежного шлюза или ошибки в платежных сервисах (Steam, Яндекс.Касса). Когда реквизиты карты или счета) введены с ошибками, транзакция также не пройдет

Проблемы с картой возникают в следующих случаях:

  • У карты закончился срок действия, либо — он заканчивается менее чем через неделю. Требуется перевыпуск карты;
  • Карта заблокирована самим пользователем (намеренно, либо — случайно)
  • Карта заблокирована банком из-за подозрений в мошенничестве или по решению суда. Узнать причину блокировки можно только в самом банке;
  • Карта еще не активирована — чтобы активировать новую карту, необходимо вставить её в банкомат и ввести пин-код;
  • Карта вообще не подходит для совершения текущей операции, так как имеет низкий класс категорию (например — социальные карты МИР)

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

[adace-ad id=»5168″]

К любой банковской карте привязывается номер телефона. Если транзакция отклоняется, значит не был введён проверочный СМС-код.

Банк отклонил транзакцию: что делать

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

Транзакция отклонена оператором

В некоторых случаях, транзакция может отклоняться, если в системе существует вредоносный код.

Нужно установить Антивирус Касперского и запустить полную проверку системы. Если заблокирована сама карта, во многих случаях, её можно разблокировать просто позвонив в банк. Достаточно сообщить ФИО и одно кодовое слово

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

💡Почему важно знать причины неоплаты?

Оплата банковской картой через интернет — эту услугу сейчас предлагает практически любой интернет магазин. Вы можете например купить билет на поезд, оплатив банковской картой, сделать покупку на ozon.ru, купить ЖД билет онлайн.

Я всегда заказывал и оплачивал билеты банковской картой через интернет(я использую только дебетовые карты, у меня нет кредитной карты). Самое интересное, что и эта услуга иногда дает сбой — зависают деньги на карте, не проходит оплата.

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

Существует множество разных причин ошибок — они бывают по причине банка или владельца карты. Важно хотя бы предполагать причину ошибки, чтоб понимать как действовать дальше? К примеру, если не удается оплатить горячий билет, то нужно понимать в чем причина и попытаться исправить проблему. Иначе билет может быть куплен другим человеком.

Основные причины ошибок при оплате банковской картой

Первая причина, которая является самой распространенной — отсутствие нужной суммы на карте. Рекомендуется проверить ваш баланс — для этого нужно позвонить в банк или войти в интернет банк. Иногда по карте устанавливают ежемесячный или ежедневный лимит трат. Чтоб это проверить — нужно позвонить в банк.

Эта причина может быть не ясна сразу — при отказе в оплате может не отображаться ваш баланс. Ошибка аутентификации 3D secure может быть также связана с неверным вводом реквизитов карты на предыдущем шаге. В таком случае просто повторите платеж и укажите правильные данные.

Вторая причина — на стороне платежной системы. Например, терминал оплаты РЖД не позволяет платить картами MasterCard. Можно использовать только карты Visa.
Заданный магазин может не поддерживать данный способ оплаты. К примеру, Робокасса, которую подключают к множеству магазинов предлагает различные тарифы для оплаты.
Робокасса как оплатить
Я сначала хотел оплатить вебмани, однако я позвонил в магазин. Оказалось, оплатить вебмани нельзя. У них не подключена эта опция. Хотя способ оплаты через вебмани предлагается на странице оплаты.

Третья причина — возможно ваша карта заблокирована. Опять же можно позвонить в банк и проверить это. Блокировка может быть осуществлена банком автоматически в случае наличия подозрительных операций у клиента.

Четвертая причина — у вас не подключена опция 3d Secure(MasterCard SecureCode в случае MasterCard).
Технология 3D Secure заключается в следующем: при оплате вам приходит СМС от банка, которую вы должны ввести в специальном окне. Эту СМС знаете только вы и банк. Мошенничество в данном случае достаточно трудно, для него потребуется и ваш телефон.
Эта опция нужна вам для оплаты на сумму больше 3 тыс. рублей. Это как раз мой случай. Я купил в интернет магазине газовую плиту Bosh. При оплате товара на сумму 22 тыс. рублей мне выдалось вот такое сообщение:
оплата картой Робокасса

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

  1. Назвать 4 последних цифры номера карты
  2. Назвать фамилию имя отчество полностью
  3. Назвать кодовое слово.

Далее для подключения услуги 3d Secure от меня потребовали 2 номера из таблицы разовых ключей.  Вроде как услугу подключили, но через полчаса оплата снова не прошла. Позвонил в банк — сказали ожидайте когда подключится — услуга подключается не сразу. Нужно подождать.

Я решил проверить, подключена ли услуга. Я залогинился в Интернет-банк — увидел, что такая услуга есть(в ПСБ ритейл это можно посмотреть на странице карты, щелкнув по номеру карты)
банк 3D Secure
Еще раз попытка оплаты — мне высветилось окно, где я должен был ввести код подтверждения. После заполнения данных карты мне пришло СМС с кодом для оплаты
оплата 3d secure
Далее вуаля — заказ наконец то оплачен. Я получил следующее окно и статус заказа в магазине изменился на «Оплачен»
Мой заказ доставили в пункт назначения, где я его заберу в течение месяца. Главное оплата прошла.
Оплата картой через интернет

Самая частая ошибка 11070: ошибка аутентификации 3d-secure — причины

Самая частая ошибка, которая происходит при оплате картой — 11070: ошибка аутентификации 3dsecure. Есть 2 возможных причины этой ошибки

  1. Введен неверный одноразовый код. Вам пришел код, но при вводе вы допустили ошибку в цифре. В результате получили ошибку
  2. Одноразовый код протух. Время, которое вам дают на ввод одноразового кода при оплате, составляет не более 5 минут. Далее вам придется повторить оплату.

В любом случае, советуем повторить процесс оплаты и удостовериться, что вы ввели одноразовый пароль 3D Secure сразу после получения и пароль введен верно.

Ошибка процессинга карты — что это такое?

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

Вы не можете повлиять на данную ошибку никак. Вам стоит обратиться на горячую линию банка или интернет-магазина, где вы осуществляете транзакцию. Исправление ошибки — дело специалистов, поддерживающих данную систему. Остается только ждать.

Вы можете попробовать осуществить оплату повторно примерно через пол-часа. По идее такие ошибки должны исправляться очень быстро. Аналогичная ошибка бывает с сообщением «Сервис временно недоступен». Это значит, что сломалась серверная сторона и сделать ничего нельзя. Только ждать починки

Что значит хост недоступен при оплате картой

Хост — это определенный сетевой адрес. Это может быть ip адрес или же просто доменное имя(к примеру, server1.sberbak.online). При оплате картой через терминал происходит подключение к определенному сетевому адресу(хосту). На данном хосте находится программное обеспечение, которое производит оплату — снимает с карты деньги, проверяет баланс и т.д.

Если хост недоступен, значит деньги снять нельзя. Есть 2 основных причины недоступности:

  1. Нет интернет на устройстве, с которого производится оплата. В современных терминалах может быть вшит Интернет-модуль, через который терминал связывается с сервером. Возможно он потерял сеть или завис. В этом случае может помочь перезагрузка или же выход по голое небо, где Мобильный интернет ловит отлично
  2. Хост недоступен по причине поломки. В этом случае рекомендуется обратиться на горячую линию банка, который поддерживает ваш терминал. Данная проблема должна решаться на стороне хоста. Он может быть недоступен по разным причинам: завис, упал сервер, идет обновление программного обеспечения.

Что такое ошибка в CVC карты?

CVC-код — это трехзначный код, который находится на обратной стороне вашей банковской карты. Если появляется ошибка в CVC карты, то рекомендуем проверить, правильно ли вы ввели этот код? Если все правильно, пожалуйста проверьте, введены ли правильно другие данные вашей карты Сбербанка, ВТБ или другого банка.

cvc код
CVC код нужен для того, чтоб проверить, есть ли у вас на руках данная карта в руках. Данная ошибка значит, что CVC код введен неверно. Просто осуществите оплату повторно и введите все данные верно

Проблема при регистрации токена — как решить?

Проблема при регистрации токена — частая ошибка, которая проявляется на сайте РЖД при оплате билетов.
Токен — это уникальный идентификатор(стока типа 23hjsdfjsdhfjhj2323dfgg), которая формируется когда вы заказываете билет. Это как бы ваша сессия оплаты. Ошибка возникает на стороне сервера оплаты.
Решений может быть два

  1. Проблемы на сервере РЖД. Сервер оплаты очень занят и перегружен из-за числа заказов. Возможно на нем ошибка. Рекомендуем в этом случае попробывать повторить оплату позднее
  2. Токен Истек. Это вина того, кто платит. Рассмотрим ситуацию: если вы оформили билет, а потом отошли от компьютера на полчаса, а потом вернулись и нажали оплатить. Ваш заказ аннулирован, т.к. вы не оплатили вовремя. При оплате вы получите ошибку. Нужно заново купить билет и оплатить его в течение 10 минут.

Если ошибка в течение часа сохраняется, рекомендуем обратиться на горячую линию РЖД.

Ошибка банковской карты — карта не поддерживается

Ошибка «карта не поддерживается» может возникать, если вы оплачиваете какую-либо услугу картой другой платежной системы, предоплаченной картой либо же Виртуальной картой. Это не значит, что карта у вас «неправильная», на ней нет денег или еще что-либо. Просто в данном конкретном случае нельзя использовать карту вашего типа. К примеру, виртуальные карты нельзя использовать при оплате в Google Play Market.

Решение простое: попробуйте использовать другую карту. Если ошибка повторится, то обратитесь в службу поддержки интернет-магазина или платежного сервиса, где осуществляете оплату.

Таблица с кодами ошибок при оплате.

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

Код ошибки и описание
Код 00 – успешно проведенная операция.
Код 01 – отказать, позвонить в банк, который выпустил карту.
Код 02 – отказать, позвонить в банк, который выпустил карту (специальные условия).
Код 04 — изъять карту без указания причины.
Код 05 – отказать без указания причины.
Код 17 – отказать, отклонено пользователем карты.
код 19 — тех. ошибка на стороне банка
Код 41 – изъять, утерянная карта.
Код 43 – изъять, украденная карта.
код 50 — ?
Код 51 – отказать, на счете недостаточно средств.
Код 55 – отказать, неверно введенный ПИН-код.
Код 57 – отказать, недопустимый тип операции для данного вида карты
(например, попытка оплаты в магазине по карте предназначенной только для снятия наличных).
Код 61 – отказать, превышение максимальной суммы операции для данной карты.
Код 62 – отказать, заблокированная карта.
Код 65 – отказать, превышение максимального количества операции для данной карты.
Код 75 — отказать, превышение максимального количества неверных ПИН-кодов для данной карты.
Код 83 – отказать, ошибка сети (технические проблемы).
Код 91 – отказать, невозможно направить запрос (технические проблемы).
Код 96 – отказать, невозможно связаться с банком, который выдал карту.
Код Z3 — онлайн не работает, а в оффлайне терминал отклонил транзакцию.

Что делать, если с картой все ОК, но оплата не проходит?

Самая типичная проблема, когда оплата не проходит — сбой в банковской системе. В работе банка могут наблюдаться перебои. Это может быть не обязательно ваш банк, а банк который принимает платеж на стороне клиента(которому принадлежит терминал). В этом случае можно дать 2 совета

  1. Подождать и оплатить позднее. Сбои в работе оперативно решаются и уже через час оплата может пройти без проблем. Обычно о сбоях можно узнать по СМС сообщениям или позвонив на горячую линию вашего банка.
  2. Использовать другую карту. Если нельзя оплатить одной — нужно попробывать оплатить другой картой. Если оплата и другой картой не проходит, то это скорее всего сбой на стороне, принимающей платеж. Тут остается только ждать.

3 полезных совета при оплате картой через Интернет

Во первых — заведите себе специальную карту. Не используйте для оплаты зарплатную карту, на которой у вас все деньги. Оптимально — кредитная карта. Она позволяет в отдельных случаях вернуть часть суммы покупки(CashBack). Обычно это сумма до 5 процентов от покупки. Будьте внимательны, некоторые сервисы при оплате катой берут комиссии. И конечно же адрес страницы оплаты всегда должен начинаться с https и рядом с адресом должен стоять значок в виде замка(Соединение https).

Во вторых — не держите много денег на карте. На карте должно быть немногим больше суммы, необходимой вам для покупки. Примерно плюс 10% от общей стоимости покупки. Логика проста — с нулевой карты ничего не могут снять.
Делаете покупку — просто пополняете карту в интернет банке и получаете нужную сумму.

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

Популярные вопросы и ответы про оплату

Может ли пройти онлайн-оплата, если вы указали неверный cvv/cvc, но в системе 3d- secure ввели верный код из SMS?

Это вопрос из IT диктанта. Ответ на него ДА, может.

Код cvv/cvc известен только банку, который выпустил карту. И именно банк решает, пропустить транзакцию или нет. Данный код может и не передаваться при оплате, хотя и его нужно будет вводить при оплате. Авторизовать операцию возможно и без данного кода. Т.е. пройдет эта операция или нет — решает банк.

Пройдет ли оплата картой, если неверно ввести ФИО плательщика

ФИО плательщика практически не влияет на успешность оплаты. Можно ввести любое имя, хоть «Котик Вася» и при верном вводе других реквизитов карты оплата пройдет.

Дмитрий Тачков

Дмитрий Тачков

Работник банка или другого фин. учреждения
Подробнее

Создатель проекта, финансовый эксперт

Привет, я автор этой статьи и создатель всех калькуляторов данного проекта. Имею более чем 3х летний опыт работы банках Ренессанс Кредит и Промсвязьбанк. Отлично разбираюсь в кредитах, займах и в досрочном погашении. Пожалуйста оцените эту статью, поставьте оценку ниже.

-20010 Транзакция отклонена по причине того, что размер платежа превысил установленные лимиты Банком-эмитентом. Операция отклонена. Обратитесь в банк, выпустивший карту. -9000 Состояние начала транзакции. Операция отклонена. Обратитесь в магазин. -2101 Блокировка по e-mail Операция отклонена. Обратитесь в магазин. -2020 Получен неверный ECI. Код выставляется в том случае, если пришедший в PaRes ECI не соответствует допустимому значению для данной МПС. Правило работает только для MasterCard (01,02) и Visa (05,06), где значения в скобках — допустимые для МПС. Операция отклонена. Обратитесь в банк, выпустивший карту. -2019 PARes от эмитента содержит iReq, вследствие чего платёж был отклонён. Операция отклонена. Обратитесь в банк, выпустивший карту. -2018 Directory server Visa или MasterCard либо недоступен, либо в ответ на запрос вовлечённости карты (VeReq) пришла ошибка связи. Это ошибка взаимодействия платёжного шлюза и серверов МПС по причине технических неполадок на стороне последних. Операция отклонена. Обратитесь в банк, выпустивший карту. -2017 Отклонено. Статус PARes-а не «Y». Операция отклонена. Обратитесь в магазин. -2016 Банк-эмитент не смог определить, является ли карта 3dsecure. Операция отклонена. Обратитесь в банк, выпустивший карту. -2015 VERes от DS содержит iReq, вследствие чего платёж был отклонён. Операция отклонена. Обратитесь в банк, выпустивший карту. -2013 Исчерпаны попытки оплаты. Операция отклонена. Проверьте введённые данные, достаточность средств на карте и повторите операцию. -2012 Данная операция не поддерживается. Операция отклонена. Обратитесь в банк, выпустивший карту. -2011 Банк-эмитент не смог провести авторизацию 3dsecure-карты. Операция отклонена. Обратитесь в банк, выпустивший карту. -2010 Несовпадение XID. Операция отклонена. Обратитесь в магазин. -2007 Истёк срок, отведённый на ввод данных карты с момента регистрации платежа (таймаут по умолчанию — 20 минут; продолжительность сессии может быть указана при регистрации заказа; если у мерчанта установлена привилегия «Нестандартная продолжительность сессии», то берётся период, указанный в настройках мерчанта). Истёк срок ожидания ввода данных. -2006 Означает, что эмитент отклонил аутентификацию (3DS авторизация не пройдена). Операция невозможна. Аутентификация держателя карты завершена неуспешно. -2005 Означает, что мы не смогли проверить подпись эмитента, то есть PARes был читаемый, но подписан неверно. Операция отклонена. Обратитесь в банк, выпустивший карту. -2003 Блокировка по порту. Операция отклонена. Обратитесь в магазин. -2002 Транзакция отклонена по причине того, что размер платежа превысил установленные лимиты. Примечание: имеется в виду либо лимиты Банка-эквайера на дневной оборот Магазина, либо лимиты Магазина на оборот по одной карте, либо лимит Магазина по одной операции. Операция отклонена. Обратитесь в магазин. -2001 Транзакция отклонена по причине того, что IP- адрес Клиента внесён в чёрный список. Операция отклонена. Обратитесь в магазин. -2000 Транзакция отклонена по причине того, что карта внесена в чёрный список. Операция отклонена. Обратитесь в магазин. -999 Оплата заказа была отклонена СБОЛ’ом Платеж СБОЛ отклонен -100 Не было попыток оплаты. — 0 Платёж успешно прошёл. — 1 Для успешного завершения транзакции требуется подтверждение личности. В случае интернет-транзакции (соот-но и в нашем) невозможно, поэтому считается как declined. Операция отклонена. Обратитесь в банк, выпустивший карту. 5 Отказ сети проводить транзакцию. Операция отклонена. Обратитесь в банк, выпустивший карту. 15 МПС не смогла определить эмитента карты. Ошибка проведения платежа. Попробуйте позднее. Если данная ошибка возникла повторно, обратитесь в Ваш банк для разъяснения причин. Телефон банка должен быть указан на обратной стороне карты. 53 Карты не существует в системах процессинга. Операция отклонена. Обратитесь в магазин. 81 DECLINED_BY_PINPROC Операция отклонена. Обратитесь в банк, выпустивший карту. 100 Ограничение по карте (Банк эмитент запретил интернет транзакции по карте). Операция отклонена. Обратитесь в банк, выпустивший карту. 101 Истёк срок действия карты. Операция отклонена. Проверьте введённые данные, достаточность средств на карте и повторите операцию. 103 Нет связи с Банком-Эмитентом. Торговой точке необходимо связаться с банком-эмитентом. Операция отклонена. Обратитесь в банк, выпустивший карту. 104 Попытка выполнения операции по счёту, на использование которого наложены ограничения. Операция отклонена. Обратитесь в банк, выпустивший карту. 106 Превышено допустимое число попыток ввода ПИН. Вероятно карта временно заблокирована. Операция отклонена. Обратитесь в магазин. 107 Следует обратиться к Банку-Эмитенту. Операция отклонена. Обратитесь в банк, выпустивший карту. 109 Неверно указан идентификатор продавца/терминала или АСС заблокирован на уровне процессинга. Операция отклонена. Обратитесь в магазин. 110 Неверно указана сумма транзакции. Операция отклонена. Обратитесь в магазин. 111 Неверный номер карты. Операция отклонена. Обратитесь в банк, выпустивший карту. 116 Сумма транзакции превышает доступный остаток средств на выбранном счёте. Операция отклонена. Проверьте введённые данные, достаточность средств на карте и повторите операцию. 118 Сервис не разрешён (отказ от эмитента). Операция отклонена. Обратитесь в банк, выпустивший карту. 119 Транзакция незаконна. Операция отклонена. Обратитесь в банк, выпустивший карту. 120 Отказ в проведении операции — транзакция не разрешена эмитентом. Код ответа платёжной сети — 57. Причины отказа необходимо уточнять у эмитента. Операция отклонена. Обратитесь в банк, выпустивший карту. 121 Предпринята попытка выполнить транзакцию на сумму, превышающую дневной лимит, заданный банком-эмитентом. Операция отклонена. Обратитесь в банк, выпустивший карту. 123 Превышен лимит на число транзакций: клиент выполнил максимально разрешённое число транзакций в течение лимитного цикла и пытается провести ещё одну. Операция отклонена. Обратитесь в банк, выпустивший карту. 125 Неверный номер карты. Подобная ошибка может означать ряд вещей: Попытка возврата на сумму, больше холда, попытка возврата нулевой суммы. Для AmEx — неверно указан срок действия карты. Операция отклонена. Проверьте введённые данные, достаточность средств на карте и повторите операцию. 208 Карта утеряна. Операция отклонена. Обратитесь в магазин. 209 Превышены ограничения по карте. Операция отклонена. Обратитесь в магазин. 400 Реверсал обработан. — 902 Ограничение по карте (Владелец карты пытается выполнить транзакцию, которая для него не разрешена). Операция отклонена. Обратитесь в банк, выпустивший карту. 903 Предпринята попытка выполнить транзакцию на сумму, превышающую лимит, заданный банком-эмитентом. Операция отклонена. Обратитесь в банк, выпустивший карту. 904 Ошибочный формат сообщения с точки зрения банка эмитента. Операция отклонена. Обратитесь в банк, выпустивший карту. 907 Нет связи с Банком, выпустившим Вашу карту. Для данного номера карты не разрешена авторизация в режиме stand-in (этот режим означает, что эмитент не может связаться с платёжной сетью и поэтому транзакция возможна либо в оффлайне с последующей выгрузкой в бэк офис, либо она будет отклонена). Нет связи с банком. Повторите позже. 909 Невозможно провести операцию (Ошибка функционирования системы, имеющая общий характер. Фиксируется платёжной сетью или банком-эмитентом). Операция отклонена. Обратитесь в банк, выпустивший карту. 910 Банк-эмитент недоступен. Нет связи с банком. Повторите позже. 913 Неверный формат сообщения (Неправильный формат транзакции с точки зрения сети). Операция отклонена. Обратитесь в банк, выпустивший карту. 914 Не найдена транзакция (когда посылается завершение или reversal или refund). Операция отклонена. Обратитесь в магазин. 999 Отсутствует начало авторизации транзакции. Отклонено по фроду или ошибка 3dsec. После получения этого кода ответа дальнейшие попытки проведения платежа отклоняются. Операция отклонена. Обратитесь в магазин. 1001 Пусто (Выставляется в момент регистрации транзакции, т.е. когда еще по транзакции не было введено данных карт). Не получен ответ от банка. Повторите позже. 2002 Неверная операция. Операция отклонена. Обратитесь в магазин. 2003 SSL (Не 3d-Secure/SecureCode) транзакции запрещены Магазину. Операция отклонена. Обратитесь в магазин. 2004 Оплата через SSL без ввода CVС2 запрещена. Операция отклонена. Обратитесь в магазин. 2005 Платёж не соответствует условиям правила проверки по 3ds. Операция отклонена. Обратитесь в магазин. 2006 Однофазные платежи запрещены. Операция отклонена. Обратитесь в магазин. 2008 Транзакция ещё не завершена. Операция отклонена. Обратитесь в магазин. 2009 Сумма возврата превышает сумму оплаты. Операция отклонена. Обратитесь в магазин. 2014 Ошибка выполнения 3DS-правила. Операция отклонена. Обратитесь в магазин. 2015 Ошибка выполнения правила выбора терминала (правило некорректно). Операция отклонена. Обратитесь в магазин. 2016 Мерчант не имеет разрешения на 3-D Secure, необходимое для проведения платежа. Операция отклонена. Обратитесь в магазин. 2022 Заказ отклонён. Отклонён. 2023 Очередь на запросов на обработку в процессинг превысила допустимый лимит. Ошибка проведения платежа. Попробуйте позднее. 4005 Заказ отклонён продавцом. Отклонено продавцом. 71015 Введены неправильные параметры карты. Операция отклонена. Проверьте введённые данные, достаточность средств на карте и повторите операцию. 151018 Таймаут в процессинге. Не удалось отправить. Не получен ответ от банка. Повторите позже. 151019 Таймаут в процессинге. Удалось отправить, но не получен ответ от банка. Не получен ответ от банка. Повторите позже. 341014 Код отказа РБС. Операция отклонена. Обратитесь в магазин.

Result Code
Description
Как решить проблему
Куда обратиться

76

51

076

9859

116

603

Insufficient funds

Not sufficient funds

Decline, not sufficient funds

Decline, not sufficient funds
На балансе карты недостаточно средств
Если на карте баланс больше или равен сумме транзакции, а отказ все равно происходит по причине недостатка средств, тогда возможны такие причины:
— банк-эмитент удерживает дополнительные комиссии с держателя карты. Это может возникать в случаях погашение кредита посредством интернет-платежа, либо если договор на обслуживание банковской карты предусматривает дополнительные комиссии;
— происходит конвертация из валюты покупки в валюту карты. Убедитесь, что средств на карте достаточно для покрытия комиссии за конвертацию валют. Некоторые банки-эмитенты устанавливают комиссии на конвертацию валют как-правило в пределах 1%
Банк-эмитент (банк, выпустивший карту)

50

5

9905

180

Transaction declined

Do not honor

Do not Honour

Transaction declined

Do not honor
Не обслуживать
Пожалуй, самый общий и не определенный код отказа. Он может указывать на любые ограничения, наложенные банком-эмитентом, которые банк пожелал оставить не уточненными.
Возможные причины:
— карта заблокирована или на ней установлен статус
— на карте не установлен лимит на оплату в интернет, либо этот лимит недостаточный
— сработали настройки системы безопасности банка-эмитента
— сработали ограничения по сумме или количеству операций по карте у банка-эмитента
— банк-эмитент установил ограничения на проведение данного типа транзакций
— по карте не разрешены международные платежи (доместиковая карта)
— банк-эмитент установил ограничение на транзакции с двойной конвертацией валют (DCC)
— банк-эмитент установил ограничения на транзакции в данной валюте
— банк-эмитент установил ограничения на транзакции в данной стране
— банк-эмитент в США ограничил по карте операции в валюте, отличной от USD
— банк-эмитент в США ограничил по карте операции в странах бывшего СНГ и других рисковых регионах
Банк-эмитент (банк, выпустивший карту). Если банк-эмитент не видит данную транзакцию, тогда необходимо обратиться в банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

55

055

12

902

9882

9912

Invalid transaction

Invalid transaction card / issuer / acquirer

Decline reason message: invalid transaction

Invalid transaction
Операция для данной карты или мерчанта не разрешена
Причины могут быть теми же, что и для Do not honor
Банк-эмитент (банк, выпустивший карту). Если банк-эмитент не видит данную транзакцию, тогда необходимо обратиться в банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

95

095

61

061

121

9861

9863

Decline, exceeds withdrawal amount limit

Exceeds amount limit

Exceeds withdrawal limit

Withdrawal limit would be exceeded

Withdrawal limit already reached

Card exceeds withdrawal amount limit
На карте достигнут лимит по сумме операций в сутки, в месяц или на разовую транзакцию
Возможные причины (более детально смотрите по банку-эквайеру выше):
— на карте не установлен лимит операций в интернет или он уже достигнут или будет достигнут с текущей транзакцией
— общий лимит по сумме для операций покупок по карте уже достигнут или будет достигнут с текущей транзакцией
— карта не открыта для расчетов в интернет
— на карте не активирован сервис 3D-Secure из-за чего операции в интернет без 3D-Secure пароля попадают под ограничения банка-эмитента
Банк-эмитент (банк, выпустивший карту)

65

065

82

082

9860

Activity count exceeded

Exceeds frequency limit

Maximum number of times used

Card exceeds withdrawal frequency limit
На карте достигнут лимит по количеству операций в сутки или в месяц
Возможные причины (более детально смотрите по банку-эквайеру выше):
— на карте не установлен лимит операций в интернет или он уже достигнут или будет достигнут с текущей транзакцией
— общий лимит по количеству операций покупок по карте уже достигнут или будет достигнут с текущей транзакцией
— карта не открыта для расчетов в интернет
— на карте не активирован сервис 3D-Secure из-за чего операции в интернет без 3D-Secure пароля попадают под ограничения банка-эмитента
Банк-эмитент (банк, выпустивший карту)

57

119

Not permitted to client

Transaction not permitted on card

Transaction not permitted to card

Decline, transaction not permitted to cardholder

Transaction not permitted to card

Not permitted to client

Decline, transaction not permitted to cardholder

Function Not Permitted To Cardholder

Not permitted to client
Транзакция не разрешена для карты или клиента

Банк эмитент отклонил транзакцию так как она не может быть осуществлена для этой карты или клиента.

Возможные причины (более детально смотрите по банку-эквайеру выше):
— данный карточный продукт не рассчитан для такого типа операции
— для данной карты не настроен такой тип операции на стороне банка-эмитента

Банк-эмитент (банк, выпустивший карту)

58

120

Decline, transaction not permitted to terminal

Not permitted to merchant

The requested service is not permitted for terminal

Function Not Permitted To Terminal

Txn Not Permitted On Term

Not permitted to merchant
Транзакция не разрешена для терминала или мерчанта
Мерчант или терминал настроен некорректно, или данный тип операции не разрешен на стороне банка-эквайера или платежного провайдера. В первую очередь нужно уточнить конфигурацию торговой точки у платежного провайдера и список допустимых операций
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

211

N7

9881

Bad CVV2

Decline for CVV2 Failure

CVV2 is invalid

Invalid CVV2

Decline Cvv2 failure

Invalid CVV2 code
Введен неверный CVV2 код во время проведения платежа
Необходимо проверить CVV2 код на оборотной стороне карты. Код состоит из 3 цифр для Visa/MasterCard/Discover и из 4 цифр для карт American Express.
CVV2 код также может называться CVC2, CID, CSC2 код.
В некоторых случаях такой код отказа может возвращаться и при вводе неверного срока действия карты.
Стоит обратить внимание, если банк эмитент использует динамический код CVV2, генерируемый на короткий промежуток времени в клиент-банке — срок жизни такого CVV2 кода мог истечь на момент совершения операции
Банк-эмитент (банк, выпустивший карту)

058

59

059

62

062

9858

104

Restricted card

Restricted status

Decline, restricted card

Card is restricted

Your card is restricted

Restricted Card
Операции по карте ограничены
Возможные причины:
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи
— для карты не доступны интернет-платежи
Банк-эмитент (банк, выпустивший карту)

56

056

Transaction not supported by institution
Your card is not supported. Please use card of other payment system
Данный тип платежной системы не поддерживается
Банк-эквайер или платежный провайдер не поддерживает платежную систему данной карты.
Отказ может возникать в таких случаях:
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— оплата картой Monobank в счет микро-кредитной организации (погашение кредита), либо выдача кредит. Монобанк блокирует операции в адрес МФО по некоторым типам карт
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру
Монобанк, если карта этого банка

100

1000

Decline (general, no comments)

General decline, no comments

General decline

General decline
Общий отказ.
Причины могут быть теми же, что и для Do not honor
Банк-эмитент (банк, выпустивший карту)

54

101

Expired card

Decline, expired card

Expired card

Pick-up, expired card

Card expired

Invalid card expiry date
Истек срок действия карты
Возможные причины
— срок действия карты закончился
— указан неверный срок действия карты
— карта была перевыпущена с новым сроком
Банк-эмитент (банк, выпустивший карту)

14

111

9852

1012

305113

Card number does not exist

Invalid card number

No such card

Decline, card not effective

Invalid card

Wrong card number

Invalid card number
Неверный номер карты
Возможные причины:
— неверный номер карты
— карта не действительна
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи
Банк-эмитент (банк, выпустивший карту)

909

42

7

07

108

9875

207

42

External Decline Special Condition

Special Pickup

Pick up card (special)

Pick up card, special condition (fraud account)

Pick-up, special conditions

Decline, refer to card issuer’s special conditions

Pick up card, special condition (fraud account)
Специальный отказ банка-эмитента. Владелец карты подозревается в мошенничестве.
Банк-эмитент подозревает держателя карты в мошенничестве, либо система безопасности (антифрод-система) банка эмитента отклонила транзакцию
Банк-эмитент (банк, выпустивший карту)

122

63

89

Decline, security violation

Security violation

Security violation
Отказ по соображениям безопасности
Код отказа может отдаваться как банком-эмитентом, так и банком-эквайером. Возможные причины:
— карточный счет заморожен или заблокирован
— ограничения правил безопасности (система Antifraud на стороне любого из участников)
Банк-эмитент (банк, выпустивший карту)
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

200

76

114

21

Invalid account

Decline, no account of type requested

No To Account

Invalid card number
Неверный номер карты или счета
Возможные причины:
— счет карты закрыт или заблокирован
— по счету запрещены расходные операции
— карта не действительна
— неверный номер карты
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи
— карта не предназначена для расчетов в интернет
Банк-эмитент (банк, выпустивший карту)

74

074

907

911

910

9872

91

291

82

908

810

Unable to authorize

Decline reason message: card issuer or switch inoperative

Destination not available

Issuer or switch inoperative

Issuer unavailable

Time-out at issuer

Decline reason message: card issuer timed out

Decline reason message: transaction destination cannot be found for routing

Transaction timeout

Acquiring bank request timeout

Ошибка связи: таймаут

Недоступен эмитент/эквайер

Таймаут при попытке связи с банком-эмитентом. Как правило такая ошибка возникает при проблемах технического характера на стороне любого из участников: банка-эквайера, банка эмитента, платежной системы Visa/MasterCard/МИР.

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

Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

Банк-эмитент (при получении 91 кода)

15

815

92

No such card/issuer

No such issuer

Invalid Issuer

Invalid card number
Указан неверный номер карты
см. Неверный номер карты

811

96

0

System error
Unknown payment system error
Технический сбой на стороне эквайера/платежной системы
Технический сбой на стороне банка-эквайера
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

4

04

44

43

200

104

Pick-up (general, no comments)

Pick up card

Your card is restricted

Hot Card, Pickup (if possible)

Hold — Pick up card

Pick-up, restricted card

Pick-up, card acceptor contact card acquirer

Pick up card (no fraud)
Изъять карту
Банк-эмитент отклонил транзакцию с сообщением о необходимости изъять карту, если это возможно. Как правило причиной является блокировка карты по причине утери
Банк-эмитент (банк, выпустивший карту)

52
Number of PIN tries exceeded
PIN tries exceeded
Превышен лимит попыток ввода PIN-кода
На карте установлен статус в связи с превышением попыток ввода PIN-кода при оплате в наземных POS-терминалах или использования карты в банкомате.
Также причиной может быть то, что карта только что выпущена и первой операцией для нее должна быть операция смены PIN-кода
Банк-эмитент (банк, выпустивший карту)

205

110

13

567

9913

9867

Invalid advance amount

Decline, invalid amount

Invalid amount

Invalid amount
Неверная сумма
Причины отказа:
— слишком маленькая сумма. Если карта открыта в валюте, убедитесь, что сумма транзакции не менее 1 цента доллара США или 1 Евро цента
— слишком большая сумма
— из суммы транзакции невозможно удержать сумму комиссии платежного провайдера. Убедитесь, что сумма транзакции не меньше суммы всех комиссий
— ограничения на карте плательщика на стороне банка, который выпуcтил карту.
— достигнуты лимиты на стороне банка-эквайера.
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру, Банк-эмитент (банк, выпустивший карту)

948

102

202

9934

59

Suspected fraud

Decline, suspected fraud

Suspected fraud
Подозрение в мошенничестве
Система безопасности одного из участников процессинговой цепочки подозревает участие карты в мошеннических действиях или в компрометации.
Также, возможно, что банк-эмитент заблокировал карту/счет в связи с подозрительными действиями, скиммингом, компрометацией
Банк-эмитент (банк, выпустивший карту)

800

904

30

030

9874

574

Format error

Decline reason message: format error

Format error
Ошибка формата сообщения
Технический сбой при попытке авторизовать транзакцию у банка-эмитента. Вероятно, какие-то из атрибутов транзакции указаны неверно. Необходимо уточнить у банка детали, которые вызвали такой отказ.
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

41

540

208

9840

Lost Card, Pickup

Pick up card (lost card)

Lost card

Lost card, pick-up

Pick-up, lost card

Lost card
Карта утеряна
На карте установлен статус утеряна по заявлению картодержателя.
Банк-эмитент (банк, выпустивший карту)

93

124

Violation of law

Decline, violation of law

Suspected fraud
Транзакция не может быть выполнена: нарушение закона
Банк-эмитент отказал в осуществлении транзакции во избежание нарушения закона
Банк-эмитент (банк, выпустивший карту)

909

96

Decline reason message: system malfunction

System malfunction

System malfunction
Технический сбой на стороне эквайера/платежной системы
Технический сбой на стороне банка-эквайера
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

01

02

107

108

Refer to card issuer

Decline, refer to card issuer

Decline, refer to card issuer special conditions

Refer to issuer

Decline, refer to card issuer
Обратиться к банку-эмитенту
Отказ банка-эмитента. Держатель карты должен обратиться в свой банк
Банк-эмитент (банк, выпустивший карту)

201
Incorrect PIN
Incorrect PIN
Неверный PIN
На карте установлен статус в связи с превышением попыток ввода PIN-кода при оплате в наземных POS-терминалах или использования карты в банкомате.
Также причиной может быть то, что карта только что выпущена и первой операцией для нее должна быть операция смены PIN-кода
Банк-эмитент (банк, выпустивший карту)

210
Bad CAVV
Do not honor
Неверный CAVV
Ошибка возникает при проверке 3DSecure на стороне банка-эмитента. Причиной может случить либо неверная настройка 3DSecure на карте, либо некорректная реализация Apple/Google Pay токенов на стороне платежной платформы, мерчанта или банка-эквайера
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

43

209

057

9841

Pick up card (stolen card)

Pick-up, stolen card

Stolen card

Stolen card, pick-up

Lost/Stolen

Lost or stolen card

Stolen card
Карта украдена
Банк-эмитент установил на карте статус «украдена» по обращению держателя карты
Банк-эмитент (банк, выпустивший карту)

6000

106

Pre-authorizations are not allowed within this context.

Merchant is not allowed preauth

Preauth not allowed
Операция предавторизации на разрешена для торговца
Необходимо обратиться к платежному провайдеру или банку-эквайеру для активации двухстадийной оплаты перед пред-авторизацию/завершение (preauth/capture или prepurchase/completion или authorization/sale)
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

03

3

109

9903

20003

Invalid merchant

Decline, invalid merchant

Merchant is not configured correctly
Мерчант настроен некорректно
Необходимо обратиться к платежному провайдеру или банку-эквайеру для настройки или активации мерчанта или мерчант-аккаунта.
Также причиной может быть некорректно переданный идентификатор мерчанта в транзакции
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

Коды ответов

Результатом выполнения и критерием успешности любой операции является Код ответа (Responce Code (RC)). В рамках протокола ISO 8583 он передается в поле 39 ответного сообщения. Формат RC зависит от версии ISO 8583: в версии ISO 8583:1987 он двузначный, в версии ISO 8583:1993 — трехзначный. Главным образом будем рассматривать обмен в рамках версии 1987 г., по причине ее большей распространенности. При этом заметим, что каждый конкретный разработчик ПЦ использует различные подходы к обеспечению совместимости между версиями: какие-то хосты передают в рамках P2H три символа RC, при этом, в случае если обмен выполняется в рамках версии 1987 г., заполняя лидирующий символ (первый слева) нулем. В других случаях ПЦ выполняет конвертацию трехзначного RC версии 1993 г. — в его двузначный эквивалент версии ISO 8583:1987 и в таком виде отправляет его на POS.

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

Ниже приведем наиболее распространенные RC, разбив их на две условные группы — Технические и Сервисные.

Технические RC

В это группу включим основные коды ответов, полученные в результате тех или иных технических сбоев, либо ошибок при заполнении сообщения. Заметим, что вариативность причин возникновения любого их описанных ниже RC более или менее широка, и в рамках материала дана исключительно в целях примера.

00 — Approved (Одобрено). Транзакция завершена успешно.

12 — Invalid Transaction (Неверная транзакция). Неверны какие-либо параметры транзакции. Допустим, поля сообщения заполнены таким образом, что из них следует, что операция Выдача наличных выполняется в торговом POS-терминале. Что, в общем случае, недопустимо.

13 — Invalid Amount (Неверная сумма). Поле 4 (Сумма) заполнено неверным значением. Данный RC может возникнуть в случае срабатывания какого-либо лимита, либо в рамках операций, подразумевающих предварительную авторизацию с ее последующим завершением (например, предварительное бронирование услуг с последующим расчетом).

14 — Invalid Card Number(Неверный номер карты). Неверно заполнено поле 2 (Номер карты), либо имеет место быть попытка выполнить транзакцию по карте, отсутствующей в базе данных эмитента.

15 — Invalid Issuer (Неверный эмитент). Такой RC обычно отправляется авторизационной платформой ПС и говорит о том, что маршрут отправки операции эмитенту не найден (в большинстве случаев, по причине неверного БИНа карты).

30 — Format Error (Ошибка формата данных). Возникает в результате тех или иных ошибок при заполнении сообщения в рамках определенного диалекта. Например, какое-либо поле превышает допустимое количество символов, либо вообще отсутствует, либо заполняется в неверном формате и/или кодировке. При этом ряд ПС, в случае отправки данного RC, направляет в ответном сообщении дополнительное поле с конкретным указанием на ошибочный элемент входящего сообщения.

88 и 89 — Cryptographic Failure (Криптографическая ошибка). Транзакция отклонена по причине ошибок криптографии. К примеру, таких как, ошибка шифрования пинблока, ошибка проверки цифровой подписи и других.

96 — System Error (Системная ошибка). В общем случае ошибка свидетельствует о том, что произошел сбой на каком-либо из этапов обмена. Как правило, в рамках ПЦ эквайрера, однако нам известны случаи, когда данный RC передавался и в рамках H2H.

Сервисные RC

К сервисным RC можно отнести коды ответов по операциям в рамках которых отсутствовали технические ошибки, а отказ был получен по причине ограничений доступа к тому или иному сервису со стороны эмитента или ПС, либо других условий, не связанных с техническими проблемами.

00 — Approved (Одобрено). Транзакция завершена успешно.

01 — Refer to Call Issuer (Позвоните эмитенту). Для завершения транзакции необходимо связаться с эмитентом.

04 — Capture Card (Изъять карту). Эмитент или ПС направил команду на изъятие карты.

05 — Do Not Honor (Не оплачивать). Отказ без объяснения причины. В подавляющем большинстве случаев такой RC отправляется эмитентом. Причины также следует уточнять у эмитента.

41 — Lost Card (Карта утеряна). Попытка выполнить операцию по карте, помеченной в БД эмитента или ПС как утерянная.

43 — Stolen Card (Карта украдена). Попытка выполнить операцию по карте, помеченной в БД эмитента или ПС как украденная.

51 — Not Sufficient Funds (Недостаточно средств). Сумма операции превышает сумму доступных средств на карточном счете.

52 и 53 — No Checking/Saving Account. Попытка выполнить операцию с неверным карточным счетом.

54 — Expired Card (Карта просрочена). Попытка выполнить операцию по карте с истекшим сроком действия.

55 — Incorrect PIN (Неверен пин). При выполнении операции с онлайн-пинкодом он был введен некорректно.

57 — Transaction Not Permitted to Issuer/Cardholder (Транзакция не разрешена для Эмитента/Держателя карты). Попытка выполнить операцию, не разрешенную для конкретного эмитента или держателя карты.

58 — Transaction Not Permitted to Acquier/Terminal (Транзакция не разрешена для Эквайрера/Терминала). Попытка выполнить операцию, не разрешенную для конкретного эквайрера или терминала.

Таков список наиболее часто встречающихся кодов ответа, имеющих одинаковые значения для всех ведущих ПС. Заметим, что их число несколько шире и варьируется в зависимости от конкретного диалекта ПС. Например в рамках спецификации Visa могут присутствовать RC, отсутствующие у Mastercard, и наоборот.

Эквайринг для торговой точки

Оффлайновые коды ответов

В общих чертах следует коснутся и оффлайновых RC. К ним относятся коды, сгенерированные программным обеспечением POS-терминала. Поскольку в данном случае обмен выполняется не в рамках ISO 8583, а условия возникновения таких RC наступают в процессе т.н. EMV Transaction Flow, ограничимся общим описанием (Вопросы APDU/EMV-обмена будут подробно освещены в будущих материалах).

Z1 — OFFLINE DECLINED (Отклонено оффлайн). Было принято решение отклонить транзакцию, не отправляя онлайн-сообщение.

Z3 — NO ONLINE, DECLINED (Нет связи, отклонено оффлайн). POS-терминал предпринял попытку отправить онлайн-запрос, которая закончилась неудачно по причине отсутствия связи. В оффлайне транзакция отклонена.

Y1 — OFFLINE APPROVED (Одобрено оффлайн). Транзакция одобрена без онлайн-обращения к эмитенту. Справедливо для терминалов, поддерживающих оффлайн-транзакции.

Y3 — NO ONLINE, APPROVED (Нет связи, одобрено оффлайн). POS-терминал предпринял попытку отправить онлайн-запрос, которая закончилась неудачно по причине отсутствия связи. В оффлайне транзакция была одобрена. Справедливо для терминалов, поддерживающих оффлайн-транзакции.

SMS-информирование

Достаточно популярная ныне услуга SMS-информирования используется многими держателями карт. Помимо очевидного удобства, являясь в ряде случаев причиной споров, а иногда и скандалов между мерчантом и кардхолдером. Рассмотрим наиболее типичный случай:

  • Клиент расплачивается картой.
  • Получает SMS о списании суммы услуги/покупки.
  • Терминал не печатает чек/зависает/перезагружается.
  • Мерчант не имеет на руках успешного чека по операции.
  • Клиент утверждает, что операция успешна, при этом ссылается на SMS.

Дальнейший сценарий развития событий зависит от опытности персонала ТСП и многих других факторов.

Первое и самое важное, что следует принимать во внимание в такой ситуации: критерием успешности операции по карте является чек (либо, если речь идет об одобренных ПС терминалах, не оснащенных чековым принтером — его электронный эквивалент), содержащий успешный код ответа и/или его расшифровку. Никакие SMS, полученные клиентом, критерием успешности операции не являются. Ни один диспутный цикл ни по одной претензии не будет рассматривать полученное кардхолдером SMS в качестве аргумента. Основная причина состоит в том, что такая услуга как SMS-информирование никак не специфицирована со стороны ПС. То есть, технические инструменты, в том числе и протоколы/формат обмена, которыми она достигается, зависят от каждого конкретного эмитента. В том числе, может быть реализована и с помощью различных самописных решений. В общем случае, некий условный «SMS-сервер» анализирует запросы к карточному контракту и фиксирует изменения его доступного остатка. Помимо этого, в большинстве случаев могут анализироваться поля 41 (Идентификатор Терминала (Terminal ID)), 42 (Идентификатор Мерчанта (Merchant ID)) и 43 (Имя и местонахождение мерчанта (Card Acceptor Name/Location)) из входящего запроса от эквайрера. Затем эти данные вносятся в «тело» SMS-сообщения и отправляются на номер телефона, который кардхолдер указал при выпуске карты. На выходе получается SMS-сообщение примерно такого формата: «КАРТА, ДАТА/ВРЕМЯ, Тип операции, Сумма, НАИМЕНОВАНИЕ ТСП, ДОСТУПНЫЙ ОСТАТОК».

Подчеркнем ряд важных моментов: фактически, принцип функционирования SMS-сервера базируется на срабатывании триггеров. При этом он может быть настроен на срабатывание при выполнении операции Оплата, но не срабатывать на операцию Отмена оплаты; далее, SMS-сервер ничего «не знает» про состояние каналов связи в момент выполнения операции. Соответственно, не способен «понять», был ли ответ на авторизацию успешно доставлен на POS-терминал. Сумма и комбинации всех этих факторов, а также отсутствие регламентов со стороны ПС, делают SMS-инфо крайне ненадежным источником. Этот факт необходимо учитывать как мерчантам, так и кардхолдерам. Безусловно, качество предоставления такой услуги, как SMS-информирование в последние годы существенно возросло. Однако это не отменяет сказанного выше.

Содержание:

  1. Что значит ошибка 57 на терминале от сбербанка
  2. Почему может возникать данная ошибка
  3. Что делать, если возникла ошибка

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

  • активацию продукта в системе путем ввода кода;
  • считывание информации;
  • передачу данных в центр обработки (ЦОД);
  • проверка информации на мошенничество;
  • отмена подозрительных операций по счету;
  • разрешение транзакции эмитентом;
  • информирование о проведенной операции, которое отражается на чеке, мониторе.

Прохождение каждого этапа обеспечивает списание денег со счета. Бывают ситуации блокирования операций с обозначением в виде комбинации цифр, которые отражают сервисный или аппаратный уровень ошибки. Код ошибки 57 при оплате картами платежной системы Visa, Master Card указывает на то, что для предъявленного финансового продукта банком-эмитентом не предусмотрен данный тип транзакции.

Многие пользователи интересуются, что это значит, когда на терминале Сбербанка ошибка 57 возникает при пользовании пластиковым носителем. Удачно проведенной операции присваивается номер в банке. Он требуется для идентификации при обращении в службу поддержки.

Почему может возникать данная ошибка

Финансовая операция может быть отменена любой стороной. Отказ банка-эмитента возможен на основании оперативного анализа ситуации. Транзакция запрещена для карты по таким причинам:

  • ошибка в номере счета получателя;
  • блокирование карты;
  • недостаток средств на текущем счете;
  • ограничения по совершению операций;
  • неправильный ввод кода доступа;
  • подозрения в мошенничестве:
  • технический сбой работы системы.

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

Например, по карте разрешается снятие наличных средств без возможности оплаты покупок. При отказе службы, которая позволяет принимать платежи с использованием пластиковой карты, появляется код ошибки 58.

Об истечении срока действия карты указывает комбинация цифр 572, при блокировании возникает код 274, 579. В этих ситуациях проведение операции невозможно. Клиенту рекомендуется обратиться в отделение финансового учреждения по месту выдачи пластикового носителя.

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

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

В случае потери соединения на дисплей выводится уведомление об отсутствии мониторинга. В зависимости от используемого канала связи рекомендуется проверить целостность кабеля подключения, обратиться за помощью к системному администратору. Терминал обеспечивает соединение с периодичностью 1-5 раз в минуту.

Что делать, если возникла ошибка

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

Для этого требуется посетить отделение финансового учреждения, оставить заявку на официальном ресурсе, обратиться в службу поддержки по телефону горячей линии, терминал Сбербанка. Обращение должно быть рассмотрено в течение 30 дней с момента подачи.

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

Попытка совершить сомнительную операцию иллюстрируется кодом. Сомнительные операции имеют типичные характеристики. Они описаны в Федеральном законе №115 «О противодействии легализации (отмыванию) доходов, полученных преступным путем, и финансированию терроризма».

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

Транзакция — это логически завершенная банковская операция, заключающаяся в переводе определенной суммы денег со счета одного лица на счет другого. Но это все официальная терминология. А если просто — это действия с банковской дебетовой картой — пополнение, снятие наличных, денежные переводы, оплата за товары и услуги в местах, где предусмотрен расчет с помощью карт (в основном Visa и MasterCard).

Что делать, если транзакция не удалась?

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

Тип транзакции

В классификации транзакций есть два типа: online и offline. Online тип транзакции осуществляется после соединения с процессинговым сервером, в котором происходит авторизация. После этого выполняется сама операция в режиме реального времени.

В offline транзакциях прямой связи между сторонами платежной системы нет, а есть импринтер, позволяющий получить оттиск информационной стороны карты на бумаге. Бумага с оттиском, который должен быть четко виден, называется слип. Его заполняют и предъявляют эмитенту на оплату. Слип должен быть в трех экземплярах: продавцу, покупателю и банку.

Что делать, если транзакция не удалась?

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

Так что делать, если транзакция не удалась? Нужно безотлагательно позвонить в службу клиентской поддержки банка, обслуживающего карту и объяснить суть ситуации. В зависимости от сложности и характера сбоя, проблему решат за 2-3 дня, а может все затянется на некоторое время, в течение которого вам потребуется хладнокровие ацтека.

Система транзакций

Перевод денежных средств любым из способов — это транзакция, независимо от технических приемов. Система транзакций включает:

  • денежные операции с пластиковой картой и с платежными терминалами;
  • перевод денег между банковскими счетами — осуществляется сотрудником банка;
  • моментальный перевод наличных, без открытия счета — отправляются на предъявителя паспорта и кодового шифра транзакции, который отправитель сообщает получателю — WesternUnion, Contact, Золотая Корона и др;
  • электронный банкинг — транзакции внутри электронных платежных систем Qiwi, PayPal, Webmoney и др.

Ошибка транзакции

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

При неверно указанных реквизитах, ФИО получателя или утере секретного кода перевода, проблема решается службой клиентской поддержки данной системы. Если вы ошибочно ввели неверный номер карты получателя и деньги «ушли не туда», здесь сложней. Нужно будет написать заявление в банке и если после его вмешательства «получатель» останется глух, придется урегулировать вопрос с возвратом средств самостоятельно, поскольку тут налицо человеческий фактор.

Что такое транзакционные ошибки?

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

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

Как найти ошибки транзакции

Начиная

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

Как вы можете видеть, страница содержит три разных панели сверху вниз:

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

Использование панели фильтров

Если вы не измените ничего на панели фильтров, диаграмма и таблица отобразят все типы ошибок транзакций, которые произошли для всех рекламодателей в течение последних семи дней. На панели фильтров вы можете настроить эти параметры. Давайте рассмотрим их все:

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

Ошибки транзакции на диаграмме

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

Сведения об ошибках транзакций

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

Слева направо вы найдете следующие свойства:

  • Дата, когда произошла ошибка.
  • Рекламодатель, которому была присвоена ошибочная транзакция.
  • Имя ошибки.
  • Краткое описание ошибки.
  • Идентификатор заказа транзакции.

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

Вы не умеете работать с транзакциями

Время на прочтение
11 мин

Количество просмотров 97K

Заголовок вышел броским, но накипело. Сразу скажу, что речь пойдет об 1С. Дорогие 1С-ники, вы не умеете работать с транзакциями и не понимаете что такое исключения. К такому выводу я пришел, просматривая большое количество кода на 1С, рождаемого в дебрях отечественного энтерпрайза. В типовых конфигурациях с этим все достаточно хорошо, но ужасающее количество заказного кода написано некомпетентно с точки зрения работы с базой данных. Вы когда-нибудь видели у себя ошибку «В данной транзакции уже происходили ошибки»? Если да — то заголовок статьи относится и к вам. Давайте под катом разберемся, наконец, что такое транзакции и как правильно с ними обращаться, работая с 1С.

Почему надо бить тревогу

Для начала, давайте разберемся, что же такое представляет собой ошибка «В данной транзакции уже происходили ошибки». Это, на самом деле, предельно простая штука: вы пытаетесь работать с базой данных внутри уже откаченной (отмененной) транзакции. Например, где-то был вызван метод ОтменитьТранзакцию, а вы пытаетесь ее зафиксировать.

Почему это плохо? Потому что данная ошибка ничего не говорит вам о том, где на самом деле случилась проблема. Когда в саппорт от пользователя приходит скриншот с таким текстом, а в особенности для серверного кода, с которым интерактивно не работает человек — это… Хотел написать «критичная ошибка», но подумал, что это buzzword, на который уже никто не обращает внимания…. Это задница. Это ошибка программирования. Это не случайный сбой. Это косяк, который надо немедленно переделывать. Потому что, когда у вас фоновые процессы сервера встанут ночью и компания начнет стремительно терять деньги, то «В данной транзакции уже происходили ошибки» это последнее, что вы захотите увидеть в диагностических логах.

Есть, конечно, вероятность, что технологический журнал сервера (он ведь у вас включен в продакшене, да?) как-то поможет диагностировать проблему, но я сейчас навскидку не могу придумать вариант — как именно в нем найти реальную причину указанной ошибки. А реальная причина одна — программист Вася получил исключение внутри транзакции и решил, что один раз — не карабас «подумаешь, ошибка, пойдем дальше».

Что такое транзакции в 1С

Неловко писать про азбучные истины, но, видимо, немножго придется. Транзакции в 1С — это то же самое, что транзакции в СУБД. Это не какие-то особенные «1С-ные» транзакции, это и есть транзакции в СУБД. Согласно общей идее транзакций, они могут либо выполниться целиком, либо не выполниться совсем. Все изменения в таблицах базы данных, выполненные внутри транзакции, могут быть разом отменены, как будто ничего не было.

Далее, нужно понимать, что в 1С не поддерживаются вложенные транзакции. Собственно говоря, они не поддерживаются не «в 1С», а вообще не поддерживаются. По-крайней мере, теми СУБД, с которыми умеет работать 1С. Вложенных транзакций, например, нет в MS SQL и Postgres. Каждый «вложенный» вызов НачатьТранзакцию просто увеличивает счетчик транзакций, а каждый вызов «ЗафиксироватьТранзакцию» — уменьшает этот счетчик. Данное поведение описано в множестве книжек и статей, но выводы из этого поведения, видимо, разобраны недостаточно. Строго говоря, в SQL есть т.н. SAVEPOINT, но 1С их не использует, да и вещь это достаточно специфичная.

Здесь и далее, специально для Воинов Истинной Веры, считающих, что код должен писаться только на английском, под спойлерами будет приведен аналог кода в англоязычном синтаксисе 1С.

Процедура ОченьПолезныйИВажныйКод(СписокСсылокСправочника)

    НачатьТранзакцию();

    Для Каждого Ссылка Из СписокСсылокСправочника Цикл
        ОбъектСправочника = Ссылка.ПолучитьОбъект();
        ОбъектСправочника.КакоеТоПоле = "Я изменен из программного кода";
        ОбъектСправочника.Записать();
    КонецЦикла;

    ЗафиксироватьТранзакцию();

КонецПроцедуры

Код на английском

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

Вы же наверняка пишете такой код, да? Приведенный пример кода содержит ошибки. Как минимум, три. Знаете какие? Про первую я скажу сразу, она связана с объектными блокировками и не имеет отношения непосредственно к транзакциям. Про вторую — чуть позже. Третья ошибка — это deadlock, который возникнет при параллельном исполнении этого кода, но это тема для отдельной статьи, ее рассматривать сейчас не будем, дабы не усложнять код. Ключевое слово для гугления: deadlock управляемые блокировки.

Обратите внимание, простой ведь код. Такого в ваших 1С-системах просто вагон. И он содержит сразу, как минимум, 3 ошибки. Задумайтесь на досуге, сколько ошибок есть в более сложных сценариях работы с транзакциями, написанных вашими программистами 1С :)

Объектные блокировки

Итак, первая ошибка. В 1С существуют объектные блокировки, так называемые «оптимистические» и «пессимистические». Кто придумал термин, не знаю, убил бы :). Совершенно невозможно запомнить, какая из них за что отвечает. Подробно про них написано здесь и здесь, а также в прочей IT-литературе общего назначения.

Суть проблемы в том, что в указанном примере кода изменяется объект базы данных, но в другом сеансе может сидеть интерактивный пользователь (или соседний фоновый поток), который тоже будет менять этот объект. Здесь один из вас может получить ошибку «запись была изменена или удалена». Если это произойдет в интерактивном сеансе, то пользователь почешет репу, ругнется и попробует переоткрыть форму. Если это произойдет в фоновом потоке, то вам придется искать это в логах. А журнал регистрации, как вы знаете, медленный, а ELK-стек для журналов 1С у нас в отрасли настраивают единицы… (мы, к слову, входим в число тех, кто настраивает и другим помогает настраивать :))

Короче говоря, это досадная ошибка и лучше, чтобы ее не было. Поэтому, в стандартах разработки четко написано, что перед изменением объектов необходимо ставить на них объектную блокировку методом «ОбъектСправочника.Заблокировать()«. Тогда параллельный сеанс (который тоже должен так поступить) не сможет начать операцию изменения и получит ожидаемый, управляемый отказ.

А теперь про транзакции

С первой ошибкой разобрались, давайте перейдем ко второй.

Если не предусмотреть проверку исключения в этом методе, то исключение (например, весьма вероятное на методе «Записать()») выбросит вас из данного метода без завершения транзакции. Исключение из метода «Записать» может быть выброшено по самым разным причинам, например, сработают какие-то прикладные проверки в бизнес-логике, или возникнет упомянутая выше объектная блокировка. Так или иначе, вторая ошибка гласит: код, начавший транзакцию, не несет ответственность за ее завершение.

Именно так я бы назвал эту проблему. В нашем статическом анализаторе кода 1С на базе SonarQube мы даже отдельно встроили такую диагностику. Сейчас я работаю над ее развитием, и фантазия программистов 1С, чей код попадает ко мне на анализ, порой приводит меня в шок и трепет…

Почему? Потому что выброшенное наверх исключение внутри транзакции в 90% случаев не даст эту транзакцию зафиксировать и приведет к ошибке. Следует понимать, что 1С автоматически откатывает незавершенную транзакцию только после возвращения из скриптового кода на уровень кода платформы. До тех пор, пока вы находитесь на уровне кода 1С, транзакция остается активной.

Поднимемся на уровень выше по стеку вызовов:

Процедура ВажныйКод()

     СписокСсылок = ПолучитьГдеТоСписокСсылок();
     ОченьПолезныйИВажныйКод(СписокСсылок);

КонецПроцедуры

Смотрите, что получается. Наш проблемный метод вызывается откуда-то извне, выше по стеку. На уровне этого метода разработчик понятия не имеет — будут ли какие-то транзакции внутри метода ОченьПолезныйИВажныйКод или их не будет. А если будут — то будут ли они все завершены… Мы же все тут за мир и инкапсуляцию, верно? Автор метода «ВажныйКод» не должен думать про то, что именно происходит внутри вызываемого им метода. Того самого, в котором некорректно обрабатывается транзакция. В итоге, попытка поработать с базой данных после выброса исключения изнутри транзакции, с высокой вероятностью приведет к тому, что «В данной транзакции бла-бла…»

Размазывание транзакций по методам

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

Например:

Процедура ВажныйКод()

     СписокСсылок = ПолучитьГдеТоСписокСсылок();
     ОченьПолезныйИВажныйКод(СписокСсылок);

     ЗафиксироватьТранзакцию();

     // Путевка в ад, серьезный разговор с автором о наших сложных трудовых отношениях.

КонецПроцедуры

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

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

Пытаемся исправить код

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

Первый подход типичного 1С-ника

Обычно программисты 1С знают, что при записи может быть выдано исключение. А еще они боятся исключений, поэтому стараются их все перехватывать. Например, вот так:

Процедура ОченьПолезныйИВажныйКод(СписокСсылокСправочника)

    НачатьТранзакцию();

    Для Каждого Ссылка Из СписокСсылокСправочника Цикл
        ОбъектСправочника = Ссылка.ПолучитьОбъект();

        ОбъектСправочника.КакоеТоПоле = "Я изменен из программного кода";
        Попытка
              ОбъектСправочника.Записать();
        Исключение
              Лог.Ошибка("Не удалось записать элемент %1", Ссылка);
              Продолжить;
        КонецПопытки;
    КонецЦикла;

    ЗафиксироватьТранзакцию();

КонецПроцедуры

Ну как, стало лучше, да? Ведь теперь, возможные ошибки записи обрабатываются и даже логируются. Исключения больше не возникнут при записи объекта. И в логе даже видно — на каком объекте, не поленился, вывел в сообщение ссылку вместо лаконичного «Ошибка записи справочника», как это часто любят писать вечно торопящиеся разработчики. Иными словами, налицо забота о пользователе и рост компетенций.

Однако, опытный 1С-ник здесь скажет, что нет, лучше не стало. По сути ничего не поменялось, а может даже стало и хуже. В методе «Записать()» платформа 1С сама начнет транзакцию записи, и эта транзакция будет уже вложенной по отношению к нашей. И если в момент работы с базой данных 1С свою транзакцию откатит (например, будет выдано исключение бизнес-логики), то наша транзакция верхнего уровня все равно будет помечена как «испорченная» и ее нельзя будет зафиксировать. В итоге этот код так и останется проблемным, и при попытке фиксации выдаст «уже происходили ошибки».

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

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

Методы работы с транзакциями в 1С

Не будет лишним напомнить, что вообще 1С предоставляет нам для работы с транзакциями. Это всем известные методы:

  • НачатьТранзакцию()
  • ЗафиксироватьТранзакцию()
  • ОтменитьТранзакцию()
  • ТранзакцияАктивна()

Первые 3 метода очевидны и делают то, что написано в их названии. Последний метод — возвращает Истину, если счетчик транзакций больше нуля.

И есть интересная особенность. Методы выхода из транзакции (Зафиксировать и Отменить) выбрасывают исключения, если счетчик транзакций равен нулю. То есть, если вызвать один из них вне транзакции, то возникнет ошибка.

Как правильно пользоваться этими методами? Очень просто: надо прочитать сформулированное выше правило: код, начавший транзакцию, должен нести ответственность за ее завершение.

Как же соблюсти это правило? Давайте попробуем:

НачатьТранзакцию();
ДелаемЧтоТо();
ЗафиксироватьТранзакцию();

Выше мы уже поняли, что метод ДелаемЧтоТо — потенциально опасен. Он может выдать какое-то исключение, и транзакция «вылезет» наружу из нашего метода. Окей, добавим обработчик возможного исключения:

НачатьТранзакцию();
Попытка
    ДелаемЧтоТо();
Исключение
    // а что же написать тут?
КонецПопытки;
ЗафиксироватьТранзакцию();

Отлично, мы поймали возникающую ошибку, но что с ней делать? Записать сообщение в лог? Ну, может быть, если код логирования ошибок должен быть именно на этом уровне и ошибку мы тут ждем. А если нет? Если мы не ожидали тут никаких ошибок? Тогда мы должны просто передать это исключение выше, пусть с ними разбирается другой слой архитектуры. Делается это оператором «ВызватьИсключение» без аргументов. В этих ваших джава-сиплюсплюсах это делается точно так же оператором throw.

НачатьТранзакцию();
Попытка
    ДелаемЧтоТо();
Исключение
    ВызватьИсключение;
КонецПопытки;
ЗафиксироватьТранзакцию();

Так, стоп… Если мы просто прокидываем исключение дальше, то зачем тут вообще нужна Попытка? А вот зачем: правило заставляет нас обеспечить завершение начатой нами транзакции.

НачатьТранзакцию();
Попытка
    ДелаемЧтоТо();
Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
КонецПопытки;
ЗафиксироватьТранзакцию();

Теперь, вроде бы, красиво. Однако, мы ведь помним, что не доверяем коду ДелаемЧтоТо(). Вдруг там внутри его автор не читал этой статьи, и не умеет работать с транзакциями? Вдруг он там взял, да и вызвал метод ОтменитьТранзакцию или наоборот, зафиксировал ее? Нам очень важно, чтобы обработчик исключения не породил нового исключения, иначе исходная ошибка будет потеряна и расследование проблем станет невозможным. А мы помним, что методы Зафиксировать и Отменить могут выдать исключение, если транзакция не существует. Здесь-то и пригождается метод ТранзакцияАктивна.

Финальный вариант

Наконец, мы можем написать правильный, «транзакционно-безопасный» вариант кода. Вот он:

**UPD: в комментариях предложен более безопасный вариант, когда ЗафиксироватьТранзакцию расположен внутри блока Попытка. Здесь приведен именно этот вариант, ранее Фиксация располагалась после блока Попытка-Исключение.

НачатьТранзакцию();
Попытка
    ДелаемЧтоТо();
    ЗафиксироватьТранзакцию();
Исключение
    Если ТранзакцияАктивна() Тогда
        ОтменитьТранзакцию();
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;

Постойте, но ведь не только «ОтменитьТранзакцию» может выдавать ошибки. Почему же тогда «ЗафиксироватьТранзакцию» не обернут в такое же условие с «ТранзакцияАктивна»? Опять же, по тому же самому правилу: код, начавший транзакцию, должен нести ответственность за ее завершение. Наша транзакция необязательно самая первая, она может быть вложенной. На нашем уровне абстракции мы обязаны заботиться только о нашей транзакции. Все прочие должны быть нам неинтересны. Они чужие, мы не должны нести за них ответственность. Именно НЕ ДОЛЖНЫ. Нельзя предпринимать попыток выяснения реального уровня счетчика транзакций. Это опять нарушит инкапсуляцию и приведет к «размазыванию» логики управления транзакциями. Мы проверили активность только в обработчике исключения и только для того, чтобы убедиться, что наш обработчик не породит нового исключения, «прячущего» старое.

Чек-лист рефакторинга

Давайте рассмотрим несколько наиболее распространенных ситуаций, требующих вмешательства в код.

Паттерн:

НачатьТранзакцию();
ДелаемЧтоТо();
ЗафиксироватьТранзакцию();

Обернуть в «безопасную» конструкцию с Попыткой, Проверкой активности и пробросом исключения.

Паттерн:

Если Не ТранзакцияАктивна() Тогда
    НачатьТранзакцию()
КонецЕсли

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

Примерно похожий вариант:

Если ТранзакцияАктивна() Тогда
    ЗафиксироватьТранзакцию()
КонецЕсли

аналогично: фиксация транзакции по условию — это странно. Почему тут условие? Что, кто-то иной мог уже зафиксировать эту транзакцию? Повод для разбирательства.

Паттерн:

НачатьТранзакцию()
Пока Выборка.Следующий() Цикл

    // чтение объекта по ссылке
    // запись объекта

КонецЦикла;
ЗафиксироватьТранзакцию();

  1. ввести управляемую блокировку во избежание deadlock
  2. ввести вызов метода Заблокировать
  3. обернуть в «попытку», как показано выше

Паттерн:

НачатьТранзакцию()
Пока Выборка.Следующий() Цикл

    Попытка
    Объект.Записать();
    Исключение
           Сообщить("Не получилось записать");
    КонецПопытки;

КонецЦикла;
ЗафиксироватьТранзакцию();

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

В заключение

Я, как вы уже, наверное, догадались, отношусь к людям, любящим платформу 1С и разработку на ней. К платформе, разумеется, есть претензии, особенно в среде Highload, но в общем и целом, она позволяет недорого и быстро разрабатывать очень качественные корпоративные приложения. Давая из коробки и ORM, и GUI, и веб-интерфейс, и Reporting, и много чего еще. В комментариях на Хабре обычно пишут всякое высокомерное, так вот, ребята — основная проблема 1С, как экосистемы — это не платформа и не вендор. Это слишком низкий порог вхождения, который позволяет попадать в отрасль людям, не понимающим, что такое компьютер, база данных, клиент-сервер, сеть и всякое такое. 1С сделала разработку корпоративных приложений слишком легкой. Я за 20 минут могу написать на ней учетную систему для закупок/продаж с гибкими отчетами и веб-клиентом. После этого, мне несложно подумать о себе, что и на больших масштабах можно писать примерно так же. Как-то там 1С сама все внутри сделает, не знаю как, но наверное сделает. Напишу-ка я «НачатьТранзакцию()»….

И знаете — самое главное, что это прекрасно. Простота разработки в 1С позволяет моментально реализовывать бизнес-идеи и встраивать их в процессы компании. Потом всегда можно отрефакторить, главное понимать как. И если вдруг вам нужна помощь в аудите вашей «медленной 1С» — обращайтесь к специалистам по оптимизации. Она совсем не медленная.

Расскажем, почему банк отклоняет транзакцию…

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

[adace-ad id=»5173″]

Сегодня узнаем — что делать, если банк получателя отклонил транзакцию и какие причины этого сбоя существуют.

Причины отклонения транзакции

Владельцу карты, обычно, самостоятельно приходиться разбираться, почему не проходит транзакция: большинство банков причины не сообщают.

Если не проходит платеж в интернет-магазине, то причиной могут быть технические работы на сайте магазина, сбои на серверах платежного шлюза или ошибки в платежных сервисах (Steam, Яндекс.Касса). Когда реквизиты карты или счета) введены с ошибками, транзакция также не пройдет

Проблемы с картой возникают в следующих случаях:

  • У карты закончился срок действия, либо — он заканчивается менее чем через неделю. Требуется перевыпуск карты;
  • Карта заблокирована самим пользователем (намеренно, либо — случайно)
  • Карта заблокирована банком из-за подозрений в мошенничестве или по решению суда. Узнать причину блокировки можно только в самом банке;
  • Карта еще не активирована — чтобы активировать новую карту, необходимо вставить её в банкомат и ввести пин-код;
  • Карта вообще не подходит для совершения текущей операции, так как имеет низкий класс категорию (например — социальные карты МИР)

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

[adace-ad id=»5168″]

К любой банковской карте привязывается номер телефона. Если транзакция отклоняется, значит не был введён проверочный СМС-код.

Банк отклонил транзакцию: что делать

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

Транзакция отклонена оператором

В некоторых случаях, транзакция может отклоняться, если в системе существует вредоносный код.

Нужно установить Антивирус Касперского и запустить полную проверку системы. Если заблокирована сама карта, во многих случаях, её можно разблокировать просто позвонив в банк. Достаточно сообщить ФИО и одно кодовое слово

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

Возможно, вам также будет интересно:

  • Что такое ошибка статуса карты
  • Что такое ошибка статус 404
  • Что такое ошибка стар форс
  • Что такое ошибка сс23 в мта
  • Что такое ошибка срс на жестком диске

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии