Skip to content

Платёж через нашу форму

Большинству мерчантов невыгодно проходить сертификацию PCI DSS ради того, чтобы собирать карты самостоятельно. Для них есть второй способ: мерчант создаёт платёж без карточных данных, получает ссылку на нашу платёжную страницу и отправляет туда плательщика. Карту принимаем мы.

Чем отличается от базового флоу

Отличия сосредоточены в начале. Всё, что происходит после того, как карта оказалась у нас, совпадает с платежом server-to-server начиная с выбора гейта: антифрод, каскад, поход в банк, 3DS, переспрос статуса, финализация, колбек.

Server-to-serverЧерез нашу форму
Кто собирает картуМерчантМы
Что создаётся первым запросомПлатёж с картойПлатёж без карты
Что получает мерчант в ответСсылку на 3DSСсылку на нашу форму
Куда уходит картаИз системы мерчанта в PCI-шлюзИз браузера плательщика в PCI-шлюз
Нужна ли мерчанту сертификацияДаНет

Как это выглядит целиком

Шаг за шагом

1. Мерчант создаёт платёж

Публичное описание запроса — Create payment form. Запрос идёт на обычный публичный шлюз, а не на PCI-домен: карточных данных в нём нет. Мерчант передаёт сумму, валюту, идентификатор своего заказа и данные плательщика, которые у него есть.

2. Ядро создаёт транзакцию и ссылку на форму

Транзакция заводится в статусе «новая» и сразу помечается как оплачиваемая через форму. Гейт на этом шаге ещё не выбран: неизвестно, какой картой заплатят, а от этого зависит маршрут. Ядро возвращает мерчанту адрес нашей страницы, привязанный к конкретной транзакции.

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

3. Плательщик открывает форму

Страница запрашивает у нас параметры транзакции и решает, что показать. Форма многоликая: кроме ввода карты она умеет показывать оплату криптовалютой, мобильными кошельками, аргентинскими переводами — набор зависит от того, как настроен счёт мерчанта. Дальше рассматриваем карточный вариант.

4. Плательщик вводит карту

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

PCI-шлюз меняет карту на токены точно так же, как в базовом флоу, и передаёт платёж в ядро.

5. Дальше — как обычно

Ядро дописывает в транзакцию данные карты и браузера плательщика, отдаёт платёж антифроду, выбирает гейт и отправляет операцию в банк. С этого момента путь полностью совпадает с базовым флоу, включая 3DS, переспрос статуса и уведомление мерчанта.

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

Что это меняет для разработчика

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

Отказ возможен до того, как плательщик что-то сделал. Если каскад не найдёт гейт уже на этапе показа формы, плательщик увидит ошибку вместо полей ввода.

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

Где ломается чаще всего

СимптомОбычная причина
Мерчант получил ссылку, плательщик видит ошибкуНе нашлось подходящего гейта или сработал лимит
Форма открылась, но карта не принимаетсяПроблема на стороне PCI-шлюза или токенизации
Транзакция закрылась отказом без действий плательщикаСработал таймаут формы
Плательщик оплатил, но вернулся не тудаНеверный адрес возврата в настройках мерчанта

Куда дальше

Внутренняя база знаний. Нашли неточность — поправьте страницу или заведите вопрос в разделе «Открытые вопросы».