Был ли опыт работы с оплатами
Что проверяют
Работали ли вы с деньгами руками или только слышали о них, и понимаете ли, чем платёжный код отличается от обычного CRUD. Следом обычно спрашивают про повторы и вебхуки: что будет, если провайдер пришлёт уведомление дважды или ответ потеряется по таймауту.
Как отвечать
Отвечайте про свой проект и со своими цифрами: какой провайдер, какой объём, что именно делали вы. Каркас такой:
- контекст: что продавали и через кого, например ЮKassa, CloudPayments, эквайринг банка, СБП или Stripe на зарубежном проекте;
- ваша часть: создание платежа, обработка вебхуков, возвраты, рекуррентные списания, сверка с реестром провайдера;
- идемпотентность: ключ идемпотентности в запросе к провайдеру и уникальный индекс в базе, чтобы повтор не создал второй платёж;
- вебхуки: проверка подписи, повторная доставка, статусная машина заказа, в которой переход из
paidобратно вpendingневозможен; - деньги в коде: суммы в копейках как
int64или через decimal-библиотеку, но неfloat64; - надёжность:
contextс таймаутом на каждый вызовhttp.Client, ретраи с экспоненциальной задержкой только для идемпотентных запросов, outbox, чтобы событие об оплате не потерялось между базой и брокером.
Сильнее всего звучит одна настоящая история: вебхук пришёл раньше ответа на создание платежа или сверка нашла расхождение, и как вы это разбирали.
Если опыта не было, так и скажите, а потом покажите, что понимаете риски: «С платежами напрямую не работал, но с внешним API делал идемпотентные повторы и проверку подписей, здесь начал бы с этого». Это честнее и сильнее выдуманной интеграции.
Где спотыкаются
Рассказывают шаблонную историю с процентами вроде «конверсия выросла на 15%». Интервьюер спросит, как это считали, и выдуманная цифра развалит весь ответ.
Говорят «интегрировал API» и больше ничего. Без идемпотентности, ретраев и статусов заказа это звучит как пересказ документации провайдера.
Хвалятся тем, что «шифровали данные карт». Хранение номеров карт требует соответствия PCI DSS, поэтому нормальная схема другая: карту вводят на стороне провайдера, а у вас остаются токен и статус.