Тестирование оплаты: чек-лист, в котором нет «оплатить и посмотреть»
Оплата — единственный сценарий, где дефект стоит денег напрямую, и единственный, который большинство команд проверяет одним способом: оплатить и убедиться, что прошло. Всё интересное происходит на отказах, таймаутах и повторах — там, где пользователь нажимает кнопку второй раз.
Успешные сценарии
- Оплата каждым подключённым способом: карта, банковское приложение, кошелёк, QR, рассрочка — отдельно, а не «один раз картой».
- Оплата с сохранённой картой и с новой; сохранение карты по согласию пользователя и без.
- Минимальная и максимальная сумма, сумма с копейками, сумма со скидкой и промокодом.
- Разные валюты, если продукт мультивалютный: конвертация, округление, отображение в чеке.
- Статус заказа после оплаты, письмо и пуш с подтверждением, запись в истории — всё в течение ожидаемого времени.
Отказы и граничные случаи
Именно здесь живут дефекты, которые превращаются в двойные списания, зависшие заказы и споры с пользователями. Для каждого способа оплаты проходим один и тот же набор: отказ, отмена, таймаут, повтор.
- Отказ шлюза: недостаточно средств, карта заблокирована, лимит — пользователь видит понятное сообщение и может попробовать снова.
- Отмена пользователем на экране шлюза: заказ не зависает в «ожидании», можно вернуться и выбрать другой способ.
- Таймаут шлюза: что видит пользователь, что происходит с заказом, не создаётся ли дубликат при возврате в приложение.
- Повторное нажатие «Оплатить»: защита от двойного заказа и двойного списания.
- Разрыв сети в момент оплаты: статус заказа после восстановления, сверка с данными шлюза.
- Оплата после истечения резерва товара или срока действия промокода: корректный отказ, а не оплата по старым условиям.
- Частичный отказ при нескольких позициях или при сплит-оплате.
Вебхуки, возвраты и сверка
- Вебхук об успешной оплате: приходит, обрабатывается один раз, повторная доставка не создаёт второй заказ.
- Вебхук приходит раньше, чем пользователь вернулся в приложение, или позже — оба порядка.
- Полный и частичный возврат: статус заказа, сумма, срок, уведомление пользователю.
- Возврат после частичной отгрузки или использования части бонуса.
- Сверка: суммы в продукте, в кабинете шлюза и в бухгалтерии совпадают за период, включая отменённые и возвращённые.
Как проверять без потери денег
- Тестовый режим шлюза с тестовыми картами и сценариями отказов — для большинства проверок.
- Минимальные реальные суммы по согласованному протоколу — для сценариев, которые тестовый режим не воспроизводит: конкретные банки, кошельки, рассрочка.
- Эмуляция таймаутов и разрывов сети на стороне клиента — через прокси вроде Charles или ограничение сети на устройстве.
- Логи шлюза и продукта по каждому сценарию — для сверки того, что увидел пользователь, с тем, что произошло на самом деле.
Отдельно для стран региона
В Казахстане, Узбекистане, Беларуси и других странах СНГ оплата идёт через локальные системы — Kaspi, Click и Payme, ЕРИП, Элкарт, m10 — у каждой свой тестовый режим, свои таймауты и своё поведение при отказе. Набор сценариев тот же, но прогонять его нужно на каждой системе отдельно и на устройствах с SIM-картами страны: часть кошельков и банковских приложений доступна только с местных номеров.
Частые вопросы
Достаточно ли тестового режима шлюза?
Как проверить двойное списание?
Нужно ли тестировать оплату после каждого релиза?
Что делать с найденными расхождениями при сверке?
Расскажите о задаче
Ответим в течение одного рабочего дня, оценку пришлём за 1–2 дня. Бесплатно.