/brave-new-billing

Тестовое задание для backend-стажёра в юнит Billing, Avito

MIT LicenseMIT

Тестовое задание для backend-стажёра в юнит Billing

Давай напишем собственную платёжную систему, которая будет уметь отображать форму оплаты банковской картой и сохранять информацию о выполненных платежах.

  1. Пусть это будет сервис с JSON API.
  2. У него должен быть метод /register, принимающий сумму и назначение платежа и возвращающий URL страницы с идентификатором платёжной сессии, например, http://somehost/payments/card/form?sessionId=4e273d86-864c-429d-879a-34579708dd69.
  3. По URL должна открываться форма оплаты с суммой и назначением платежа.
  4. При отправке формы номер карты должен проверяться по алгоритму Луна. Валидные номера должны имитировать успешную оплату, невалидные — возвращать ошибку.

Мы ждём от тебя ссылку на github с реализацией на PHP (можно использовать любой фреймворк).

Что можно сделать дополнительно:

  • Подготовить OpenAPI-спецификацию.
  • Покрыть реализацию тестами.
  • Ограничить время жизни платёжной сессии 30 минутами.
  • Опубликовать решение как Docker-образ.
  • Добавить API-метод, который возвращает список всех платежей за переданный период.
  • После успешной оплаты асинхронно отправлять HTTP-уведомление на URL магазина. URL для таких уведомений передаваётся магазином в запросе /register.