Leyla кладёт в корзину книгу за 25 AZN, жмёт «Оплатить», вводит данные карты — и через секунду видит «Оплата прошла». За эту секунду запрос побывал у шести участников, а настоящие деньги ещё не двинулись с места. Разберём путь платежа, почему номер карты нельзя пропускать через свой сервер, чем «заморозка» суммы отличается от списания, зачем нужны 3-D Secure и PCI DSS и как не списать деньги дважды. Код для Stripe начнём писать в следующем уроке — сначала нужна карта местности.

Почему нельзя просто сделать форму для карты

Наивная идея: «Поле для номера карты, отправка на свой сервер — и как-нибудь спишу деньги». На деле «как-нибудь» — это договор с банком, который принимает карты от магазинов (эквайринг), подключение к Visa и Mastercard, защита от мошенников, 3-D Secure и стандарт PCI DSS, потому что номера карт идут через ваш сервер. Для небольшой команды это месяцы работы и большой риск.

Поэтому магазины подключают платёжного провайдера: вы вызываете его API, он общается с банками, а карту клиент вводит на его защищённой странице. Это как арендовать место в готовом торговом центре: терминал, охрана и бухгалтерия уже есть. Stripe — один из самых известных провайдеров, но принципы у всех одинаковы.

Кто участвует в платеже

В платеже картой не два участника, а шесть:

УчастникКто этоЧем занят
Покупатель (держатель карты)Leylaвводит карту, подтверждает платёж
Магазин (мерчант)вы и ваш серверсоздаёт платёж, отдаёт товар
Платёжный провайдер (шлюз)Stripeпринимает запрос магазина, общается с банками
Банк-эквайербанк магазинапринимает платежи и переводит деньги магазину
Платёжная системаVisa, Mastercardсеть между банками: сообщения и расчёты
Банк-эмитентбанк, выпустивший карту Leylaпроверяет баланс и риск, одобряет или отклоняет
Путь платежа: покупатель, магазин, провайдер, эквайер, платёжная система, эмитент и ответ обратно
Путь платежа: покупатель, магазин, провайдер, эквайер, платёжная система, эмитент и ответ обратно

Запрос на авторизацию идёт вправо до эмитента, ответ «одобрено» или «отклонено» возвращается влево — обычно за секунду. Главное: вы общаетесь только с провайдером, всё правее он делает за вас. «Шлюз», «процессинг» и «PSP» — близкие роли: сегодня один провайдер обычно выполняет все три. Комиссию за платёж делят между участниками, её размер зависит от страны, карты и тарифа.

Авторизация и списание: как в отеле

При заселении в отель на карте «замораживают» сумму, а списывают её при выезде. С картами онлайн так же, у платежа два шага:

  1. Авторизация. Эмитент проверяет карту, баланс и риск (иногда просит 3-D Secure) и резервирует сумму: деньги ещё у клиента, но он ими не распоряжается.
  2. Capture (списание). Магазин подтверждает итоговую сумму, и резерв становится окончательным платежом.

Затем банки сверяют реестры (клиринг) и переводят деньги (расчёт, settlement): через платёжную систему к эквайеру и к вам. Это занимает дни, поэтому «оплата прошла» и «деньги на вашем счёте» — разные события.

Авторизация резервирует сумму, capture делает её окончательной, расчёт переводит деньги магазину; void и refund возвращают деньги клиенту
Авторизация резервирует сумму, capture делает её окончательной, расчёт переводит деньги магазину; void и refund возвращают деньги клиенту