Одна платёжка - это точка отказа

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

Три блока архитектуры

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

Самая частая ошибка - доверять только редиректу

Частая уязвимость самодельных интеграций - запускать выдачу товара сразу, как только браузер пользователя вернулся на страницу успеха после оплаты. Проблема в том, что на эту страницу можно перейти напрямую, минуя саму оплату - вручную набрав адрес или откатив платёж после получения товара. Надёжная схема требует подтверждения именно со стороны платёжной системы (серверный вебхук), а переход пользователя на страницу успеха - это просто пользовательский опыт, не источник истины.

Одна платёжка или несколько

Таблица прокручивается вбок на телефоне →

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

Чек-лист перед подключением

Сохраните себе
  1. Приводите уведомления всех платёжек к единому внутреннему событию, не завязывайтесь на формат конкретной системы напрямую.
  2. Запускайте выдачу товара только по серверному подтверждению от платёжки, не по редиректу пользователя.
  3. Логируйте каждую выдачу с привязкой к конкретному платежу - пригодится при споре или возврате.
  4. Проверьте обработку повторного уведомления от платёжки - оно не должно выдавать товар дважды.
  5. Протестируйте сценарий сбоя одной платёжки - заказы должны продолжать проходить через оставшиеся.
С какого оборота имеет смысл подключать вторую платёжную систему?
Как только простой платёжной системы становится ощутимой потерей денег - для небольшого магазина одной системы часто достаточно на старте.
Можно ли выдавать товар сразу после редиректа на страницу успеха оплаты?
Не рекомендуется - на такую страницу можно попасть без реальной оплаты. Выдача должна запускаться по серверному подтверждению.
Как избежать двойной выдачи товара при повторном уведомлении от платёжки?
Проверять по идентификатору платежа, была ли уже выдача для него, прежде чем выполнять её повторно.
← Все статьи блога