Один день Ивана Полторака, или Невероятное путешествие по «Миру»

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

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

Целый день я путешествовал по платёжной системе «Мир», но при этом нисколько не устал и даже не запыхался. Как так получилось? Читайте под катом.

Последние два месяца я провёл на банковском счету Петра Васильевича. Место спокойное, тихое, движения денежных средств случаются редко. Я хорошо отдохнул, но мы, денежные суммы, от природы странники. Сегодня я вновь услышал музу дальних странствий. Она говорила мне: встань и иди. И я повиновался её зову.

8:09

Вчера Пётр Васильевич был на шашлыках. Его пригласил старый друг, Эмиль Артурович, который любезно взял на себя всю готовку. От Петра Васильевича требовалось только одно — оплатить свою долю в продуктах переводом с карты на карту. Что он на следующий день и сделал.

Доля после некоторого округления составляла 1 500 рублей. А это могло значить только одно — мне предстоит путешествие.

Сперва я ощутил на себе взгляд — цепкий, исследующий. Любой платёж начинается с авторизации. Банк-эквайер говорит платёжной системе: хочу денег. От платёжной системы к банку-эмитенту идёт запрос: одобряет ли он проведение платежа. Эмитент проверяет, что платёж инициирован тем, кем надо (например, пользователь ввёл пин-код или посмотрел в камеру смартфона), и самое главное — что на счету есть необходимая сумма.

9d2d085a785d119413beaf75d218ad5b.png

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

Уютно устроившись на счету Петра Васильевича, я наблюдал за своим путешествием со стороны. Вы скажете, так не бывает? Ещё как бывает. Мы, денежные суммы, слишком важные персоны, чтобы по каждому чиху срываться и бежать из банка в банк. Карточные платёжные системы устроены так, что вместо денег по ним путешествуют цифровые двойники — платёжные требования. Банк-эмитент и банк-эквайер договариваются, что один из них ждёт от другого некую сумму, а другой согласен её отдать. Договариваются не напрямую, а при посредстве платёжной системы: сами эти банки могут даже не знать о существовании друг друга. И в результате некий мой двойник, назовём его Полторак-2, перешёл со счёта Петра Васильевича на счёт Эмиля Артуровича, а я наблюдал за этим, жуя попкорн.

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

324c1b328fcf4b001e5dc0250a0b2fce.pngНаталья Азисова

Product Owner

12:31

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

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

Что происходит при оплате — я уже рассказывал. Авторизация, платёжные требования. Банк Эмиля Артуровича обязался выплатить 1 500 рублей, банк ИП Сапожникова милостиво согласился их принять. Таким образом мой виртуальный двойник отправился ещё в одно путешествие, а я по-прежнему не сделал и шага с уютного счёта Петра Васильевича.

Дзынькнул телефон: пришло СМС об успешно проведённой оплате. Радостный Эмиль Артурович собрался уходить, даже не дождавшись чека, как вдруг телефон дзынькнул снова — отмена платежа. «Одни проблемы с этим терминалом!» — пожаловался ИП Сапожников. Предложил попробовать ещё раз. «Ладно», — сказал Эмиль Артурович, понемногу начиная злиться. Второй платёж тоже отменился. На предложение расплатиться наличными Эмиль Артурович лишь возмущённо фыркнул — не для того он дожил до двадцатых годов двадцать первого века, чтобы носить с собой нал. Швырнув кеды на прилавок, Эмиль Артурович ушёл несолоно хлебавши.

Может показаться, что отменить платёж — это то же самое, что перевести деньги обратно. Однако — не совсем. Когда платёж отменяется по техническим причинам, платёжное требование просто не создаётся. Эмитент и эквайер как бы говорят друг другу:, а давайте ничего не было? В итоге Полторак-2 не совершил путешествие туда и обратно — путешествие закончилось, не успев начаться.

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

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

dbb4737d4979eb627168bb9c25a7b295.pngНаталья Азисова

Product Owner

13:40

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

b8ac5a18df18bb9b1687ab0f3250c869.png

Принимаясь за вторую пачку попкорна, я наблюдал, как Полторак-2 перемещается со счёта Эмиля Артуровича на счёт ИП Бражникова.

Да, надеюсь, читатели хорошо понимают, что на самом деле никакого Полторака-2 не существует. У кого-то могло сложиться впечатление, что в банковской системе есть некие копии денег, которые между ними перемещаются. Но по факту Полторак-2 — это умозрительный феномен как солнечный зайчик или отражение в зеркале. То, что реально существует — цепочка платёжных требований, приводящая в итоге к перемещению реальных денежных средств.

Впрочем, это мелочи. Иллюзорная природа отражения в зеркале ничуть не мешает нам разглядывать его. Точно так же я с интересом слежу за перемещениями своего виртуального двойника.

14:43

Пока Эмиль Артурович наслаждался первым стаканом бурбона, Пётр Васильевич тоже решил заняться шоппингом. Случилось так, что он, как и его друг, решил обзавестись новыми кедами, и тоже зашёл к ИП Сапожникову. Впрочем, последнее как раз неудивительно: друзья жили на одной улице, и это был ближайший обувной магазин к ним обоим.

Пётр Васильевич выбрал другую модель кедов, однако стоили они опять же 1 500 рублей. Думаю, читатель уже привык к подобным совпадениям и принимает их как должное. Внимательно осмотрев подошву, Пётр Васильевич не обнаружил дефектов и, удовлетворённый, направился на кассу. Он приложил карту к платёжному терминалу, ввёл пин-код и…

«Недостаточно средств», — ответил бессердечный терминал.

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

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

00:01

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

Свои платёжные требования банки собирают в большие текстовые файлы в специальном формате.

9b0a5462e3327df3ad25993e8d7e0a01.png

Формат определяется стандартом ISO 8583, он понятен всем платёжным системам. Это старый формат, аж 1987 года. Молодым платёжным системам, таким как «Мир», было бы удобнее использовать более современный ISO 20022. Однако прелесть ISO 8583 — в его универсальности и широкой распространённости.

Файл может иметь объём в несколько гигабайт и содержать информацию о сотнях тысяч транзакций. Каждый банк может отправить свои платёжные требования как одним файлом, так и несколькими: разбив, например, по подразделениям или по времени. Всего в среднем платёжная система «Мир» обрабатывает около 60 миллионов платёжных поручений в сутки. Их обработка — занятие ресурсоёмкое. Сервера «Мира» не дожидаются, когда придут все файлы, а обрабатывают их по мере поступления. Производят парсинг, предварительную обработку информации, укладывают её в базу данных, объединяют с уже имеющейся.

Чтобы оперативно обрабатывать такие объёмы данных, нужно максимально распараллелить вычисления. Во-первых, на уровне отдельных файлов. Наша система не ждёт, пока обработается один файл, чтобы взяться за другой — она рассчитана на одновременную работу с достаточно большим их числом. Файл откладывается в очередь ожидания, только если достигнут лимит одновременно обрабатываемых файлов.

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

dd1d81bd5e023dff38bb0c667ac9c9d0.pngАлександр Богославский

Product Manager

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

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

Банки стараются отправить свои платёжные требования как можно раньше. Это в их собственных интересах: раньше обработается платёжное требование — раньше деньги фактически перейдут к эквайеру — больше выгоды эквайер сумеет из них извлечь.

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

8492b5b3a0e634397da9ff2d2af4a44a.pngАлександр Богославский

Product Manager

9:04

2292bdee9f72b49663e8f6b9b222c22a.png

Пока сервера «Мира» обрабатывали платежи, я успел немного вздремнуть. Проснулся, как обычно, к девяти. Промежуток с 9:00 до 15:00 — особое время для таких как я. К девяти утра платёжная система уже собрала все требования банков и завершает клиринг. До трёх часов дня она должна отправить итоговую информацию в Центробанк. По сравнению с гигабайтами входных данных файл, отправляемый Центробанку (так называемый «реестр нетто-позиций банков») совсем небольшой. В нём для каждого банка указана одна-единственная сумма, которую нужно списать или начислить.

У каждого банка имеется корреспондентский счёт в ЦБ. Ориентируясь на файл, полученный от платёжной системы, ЦБ списывает и начисляет средства на эти счета. В итоге за сутки для каждого банка происходит одно фактическое движение средств.

15:30

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

Медленно поднимаю веки, осматриваюсь по сторонам. Кажется, я на банковском счету некоей Альбины Сергеевны. Здесь уютно, но судя по истории операций, карта платёжная и надолго я тут не задержусь.

«А как же ИП Бражников?» — спросят меня читатели. А никак, отвечу я им. Когда агрегированные платёжные данные доходят до Центробанка, из них уже вычищены все детали. Центробанк ничего не знает про увлекательное путешествие Полторака-2. Его задача — работа с реальными деньгами. Он списывает средства с одних счетов и зачисляет на другие. Для Центробанка эти средства обезличены, он просто не имеет информации о том, между какими банками из списка происходили транзакции, а между какими нет. Так что на счёт к ИП Бражникову отправился какой-то другой Полторак — не Иван, а, может быть, Евгений или вообще Гермоген.

15:36

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

Более того, должен открыть вам, читателям, страшную тайну. Я, оригинальный Иван Полторак, тоже не существую. Я персонаж, от начала и до конца выдуманный автором. Но несмотря на это, читая мои рассуждения, вы смогли многое узнать о работе реальной платёжной системы. Удивительный парадокс.

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

© Habrahabr.ru