Разборы задач

Проектирование Payment System

Постановка задачи

📸 Что такое платежная система?

Платежные системы позволяют бизнесам, которые далее в этой статье мы будем называть продавцами, принимать платежи от клиентов, не создавая собственную инфраструктуру для обработки платежей. Клиент вводит платежные данные на сайте продавца, продавец отправляет эти данные в платежную систему, а платежная система обрабатывает платеж и возвращает результат продавцу.

Функциональные требования

Основные требования

  1. Продавцы могут инициировать запросы на оплату (списывать с клиента определенную сумму).
  2. Клиенты могут оплачивать товары кредитными или дебетовыми картами.
  3. Продавцы могут получать обновления статуса платежей, например "pending", "succeeded" или "failed".

За рамками задачи

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

Нефункциональные требования

Прежде чем формулировать нефункциональные требования на собеседовании, полезно уточнить масштаб системы, потому что он сильно влияет на архитектуру. В этой задаче мы будем рассматривать систему, которая обрабатывает около 10 000 транзакций в секунду (TPS) при пиковой нагрузке.

Перейдите на Premium, чтобы продолжить

Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium

Перейти на Premium