Метод прерванного транзакционного акта
Торговая сеть, принимая кредитки через Сбербанк, решила принимать ещё и локальные карты банка «X». Конфигурация: кассовое ПО — DOS; ПО Сбера и банка «X» — DOS-модуль на кассе и Windows-сервер в ЛВС.
Для исключения случайностей были устроены тесты. Диалог кассового ПО с программным комплексом банка «X» во время крэш-теста изрядно повеселил. Восстановлено по логам ККМ и процессинга.
Кассовое ПО — DOS-модулю: «Провести покупку на сумму 50000 руб. по карте N!»
DOS-модуль — Windows-серверу: «Провести покупку на сумму 50000 руб. по карте N!»
Windows-сервер — процессингу: «Провести покупку на сумму 50000 руб. по карте N!»
Транзакция идёт около трёх секунд, и у нас есть время вытащить RJ-45 из кассы.
Процессинг — Windows-серверу: «ОК!»
Windows-сервер, поместив в свой буфер «ОК», DOS-модулю: «ОК!.. Эй, кассовый модуль! ОК, я тебе говорю!»
Касса молчит.
Windows-сервер — процессингу: «Отменить покупку на сумму 50000 руб по карте N!»
Процессинг — Windows-серверу: «ОК!»
И тут мы втыкаем RJ-45 обратно в кассу.
DOS-модуль (читает из буфера Windows-сервера): «Оплата — ОК!»
DOS-модуль — кассовой программе: «Оплата — ОК!»
Кассовая программа печатает чеки и слипы. Покупательница уходит с товаром и при своих деньгах.
DOS-модуль (читает из буфера Windows-сервера): «Отмена предыдущей операции — ОК!»
DOS-модуль — Windows-серверу: «Какая ещё операция?
Три раза проверили (главное в результате — воспроизводимость). Хорошо, что сервисы, висящие на тестовых портах, снимают с карты лишь тестовые рублики…