Блин, довольно часто делаю покупки, где нужно резервирование средств. Много интернет магазинов, где "замораживают" сумму покупки во время оформления заказа, а списывают уже во время отправления заказа, тк чего-то может не быть в наличии. И я за всё время ни разу не сталкивалась с ситуацией, где бы у меня заморозили сумму, оплата прошла отдельной дополнительной к заморозке транзакцией, и потом заморозку отморозили. Бред какой-то. Иностранные магазины вообще бы не смогли так сделать, тк там я плачу в валютной карте, я перевожу туда средства ровно на ту покупку, которую хочу совершить. И никогда проблем с этим не было.
Что будет, если вместо команды «переводи» дать команду «найди резервирование такое-то, и, не снимая его, преврати в пересылку по такому-то счету»? Во-первых, это дольше — не в человеческом понимании, а в компьютерном. Когда обрабатываешь одновременно миллиарды транзакций, то задержка даже в одну микросекунду может обойтись дорого.
Представь, автор, это так и должно работать. Куче людей нахер не нужна кредитка, многие люди не оплачивают всё с зарплатных карт, перекидывают себе какую-то сумму на другую/виртуальную и с неё платят. Логично, что в таком случае может не оказаться второй такой же суммы на карте для заморозки.
А, во-вторых — а что, если эта команда оказалась неуспешной? Y оказался больше X — и денег не хватило? Очевидно, перевод не произойдёт. А что же с резервацией? Ведь её-то, хочешь не хочешь, придётся отменить — до списания денег? Блин…
Шшшо ссюка? Если денег потребовалось больше, чем было заморожено, то операция не проходит из-за отсутствия средств. Замороженная сумма становится доступна для пользования, приходит отчёт, что средств недостаточно и оплата не прошла. Чем это отличается от того, что часть денег будет заморожена, а остатка не хватит на крупную покупку? Зачем вообще нужна заморозка в таком случае?