CASE / OPENEDINTEGRATION-PAYMENTS
← все кейсыИнтеграция · Платежигод · 2025длительность · 3 месяца

Платёжный шлюз + антифрод

Подключение эквайринга, рекуррент, сплитование и антифрод-правила с честной реконсиляцией под сверку до копейки.

ПОТОК ТРАНЗАКЦИЙ · LIVE
idempotent
Approved
1 284
Review
37
Declined
61
tx_9f2a₽4 990•••• 4417approved12
tx_9f2b₽1 290•••• 0312approved8
tx_9f2c₽12 400•••• 8890review58
tx_9f2d₽990•••• 2261declined91
tx_9f2e₽3 450•••• 7034approved17
Конверсия оплаты+6.3pp
Антифрод-правила−71% CB
Velocity > 4 / 10м6review
BIN в стоп-листе3decline
Гео ≠ карта2review
Сумма > лимит1decline
Реконсиляция✓ сверено до копейки
01 / CONTEXTКонтекст

Контекст

Клиент под NDA: сервис с подпиской и разовыми покупками. Платежи были прикручены к одному провайдеру «как получилось» — без идемпотентности, с дублями списаний при ретраях и ручной сверкой в Excel раз в неделю.

Чарджбэков становилось всё больше, а часть отказов на оплате была не фродом, а ложными срабатываниями. Нужен был платёжный слой, которому можно доверять цифры, и антифрод, который режет мошенников, а не выручку.

02 / BRIEFЗадача

Задача

  1. 01Подключить эквайринг (YooKassa / CloudPayments) за единым интерфейсом
  2. 02Рекуррентные платежи и управление подписками из коробки
  3. 03Сплитование выручки между несколькими получателями
  4. 04Антифрод-правила: лимиты, скоринг, ручная очередь на ревью
  5. 05Ежедневная реконсиляция со сверкой до копейки и алертами
03 / SOLUTIONРешение

Решение

/ step 01

Единый платёжный слой

Один внутренний API над двумя провайдерами. Любая операция инициируется с idempotency-key, так что повтор запроса при таймауте не создаёт второе списание.

/ step 02

Вебхуки как источник истины

Статус платежа меняем только по подписанному вебхуку провайдера, а не по ответу на запрос. Вебхуки складываются в очередь, обрабатываются ровно один раз и переигрываются при сбое.

/ step 03

Антифрод-правила и скоринг

Правила на лимиты, гео, скорость и BIN считают риск-скор. Высокий риск — отказ, средний — в ручную очередь, низкий — пропуск. Правила меняются без релиза.

/ step 04

Рекуррент и сплитование

Подписки тарифицируются по расписанию с retry-логикой и dunning при неудачном списании. Сплит делит платёж между получателями по правилам в момент захвата средств.

/ step 05

Реконсиляция до копейки

Каждое утро сверяем наши транзакции с реестрами провайдеров. Любое расхождение по сумме или статусу подсвечивается и улетает алертом, а не теряется до конца месяца.

04 / STACKАрхитектура

Архитектура

YooKassa APICloudPaymentsIdempotency-KeyWebhooksPostgreSQLRedisReconciliation engine

Платёжный сервис — отдельный домен с собственной БД и журналом операций (append-only ledger). Каждая транзакция проходит конечный автомат состояний; переход разрешён только при валидном вебхуке с проверенной подписью.

Идемпотентность держится на ключах в Redis и уникальных индексах в Postgres — двойная защита от дублей при ретраях и гонках. Реконсиляция и антифрод вынесены в фоновые воркеры, чтобы оплата не зависела от их нагрузки.

05 / RESULTSРезультаты

Результаты

+0.0pp
конверсия оплаты
−71%
фрод-чарджбэков
из коробки
рекуррентные платежи
до копейки
ежедневная реконсиляция
06 / HONESTЧто не получилось с первого раза

Что не получилось с первого раза

  • Первую версию антифрода настроили слишком жёстко: лимит по скорости платежей рубил легитимных пользователей, которые быстро докупали — конверсия просела на ровном месте. Разнесли правила на «отказ» и «ручную очередь», добавили whitelist для проверенных карт, и фрод поехал вниз без потери живых оплат.
  • Сначала меняли статус платежа и по ответу на запрос, и по вебхуку — при сетевом таймауте провайдера это давало рассинхрон: у нас «оплачено», у него «в обработке». Сделали вебхук единственным источником истины, а ответ на запрос — только подсказкой для UI. Расхождения в реконсиляции почти исчезли.
07 / VOICEСлово клиента
Раньше каждое утро начиналось со сверки в Excel и вопроса «а где деньги». Теперь цифрам можно верить, а отказы перестали бить по своим же клиентам.
PG
Under NDA
Head of Payments · NDA
08 / TEAMКоманда

Команда

DK
Tech lead
AL
Backend / Payments
RM
Anti-fraud
TG
QA
09 / ROADMAPЧто дальше

Что дальше

  • ML-скоринг фрода поверх правил
  • Подключение третьего эквайера для отказоустойчивости
  • Автоматический cascade-роутинг между провайдерами
  • Self-service дашборд правил для риск-команды
10 / RELATEDСвязанные кейсы