Leyla кладёт в корзину книгу за 25 AZN, жмёт «Оплатить», вводит данные карты — и через секунду видит «Оплата прошла». За эту секунду запрос побывал у шести участников, а настоящие деньги ещё не двинулись с места. Разберём путь платежа, почему номер карты нельзя пропускать через свой сервер, чем «заморозка» суммы отличается от списания, зачем нужны 3-D Secure и PCI DSS и как не списать деньги дважды. Код для Stripe начнём писать в следующем уроке — сначала нужна карта местности.
Почему нельзя просто сделать форму для карты
Наивная идея: «Поле для номера карты, отправка на свой сервер — и как-нибудь спишу деньги». На деле «как-нибудь» — это договор с банком, который принимает карты от магазинов (эквайринг), подключение к Visa и Mastercard, защита от мошенников, 3-D Secure и стандарт PCI DSS, потому что номера карт идут через ваш сервер. Для небольшой команды это месяцы работы и большой риск.
Поэтому магазины подключают платёжного провайдера: вы вызываете его API, он общается с банками, а карту клиент вводит на его защищённой странице. Это как арендовать место в готовом торговом центре: терминал, охрана и бухгалтерия уже есть. Stripe — один из самых известных провайдеров, но принципы у всех одинаковы.
Кто участвует в платеже
В платеже картой не два участника, а шесть:
| Участник | Кто это | Чем занят |
|---|---|---|
| Покупатель (держатель карты) | Leyla | вводит карту, подтверждает платёж |
| Магазин (мерчант) | вы и ваш сервер | создаёт платёж, отдаёт товар |
| Платёжный провайдер (шлюз) | Stripe | принимает запрос магазина, общается с банками |
| Банк-эквайер | банк магазина | принимает платежи и переводит деньги магазину |
| Платёжная система | Visa, Mastercard | сеть между банками: сообщения и расчёты |
| Банк-эмитент | банк, выпустивший карту Leyla | проверяет баланс и риск, одобряет или отклоняет |
Запрос на авторизацию идёт вправо до эмитента, ответ «одобрено» или «отклонено» возвращается влево — обычно за секунду. Главное: вы общаетесь только с провайдером, всё правее он делает за вас. «Шлюз», «процессинг» и «PSP» — близкие роли: сегодня один провайдер обычно выполняет все три. Комиссию за платёж делят между участниками, её размер зависит от страны, карты и тарифа.
Авторизация и списание: как в отеле
При заселении в отель на карте «замораживают» сумму, а списывают её при выезде. С картами онлайн так же, у платежа два шага:
- Авторизация. Эмитент проверяет карту, баланс и риск (иногда просит 3-D Secure) и резервирует сумму: деньги ещё у клиента, но он ими не распоряжается.
- Capture (списание). Магазин подтверждает итоговую сумму, и резерв становится окончательным платежом.
Затем банки сверяют реестры (клиринг) и переводят деньги (расчёт, settlement): через платёжную систему к эквайеру и к вам. Это занимает дни, поэтому «оплата прошла» и «деньги на вашем счёте» — разные события.