bash.im ithappens.me zadolba.li
7346

Метод прерванного транзакционного акта

25 сентября 2011, 08:00

Торговая сеть, принимая кредитки через Сбербанк, решила принимать ещё и локальные карты банка «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-серверу: «Какая ещё операция? Что-то с буфером у тебя не то. Очистить буфер!»

Три раза проверили (главное в результате — воспроизводимость). Хорошо, что сервисы, висящие на тестовых портах, снимают с карты лишь тестовые рублики…