| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Необходимо реализовать 2 эндпоинта:
http://127.0.0.1:8337/calculate-price
Пример JSON тела запроса:
{
"product": 1,
"taxNumber": "DE123456789",
"couponCode": "D15"
}
http://127.0.0.1:8337/purchase
Пример JSON тела запроса:
{
"product": 1,
"taxNumber": "IT12345678900",
"couponCode": "D15",
"paymentProcessor": "paypal"
}
При успешном выполнении запроса следует возвращать HTTP ответ с кодом 200.
При неверных входных данных или ошибках оплаты следует возвращать HTTP ответ с кодом 400 (или 422), содержащий JSON объект с описанием ошибок.
Продукты предполагается хранить в БД. В качестве примера можно использовать 3 продукта:
Купоны позволяют применить скидку к покупке и могут быть двух типов:
Предполагается, что купоны создаются продавцом и хранятся в системе. Например, при наличии купонов P10 (скидка 10%) и P100 (скидка 100%) покупатель не должен иметь возможности применить несуществующий купон P50.
Формат кода купона вы можете выбрать на своё усмотрение.
Налог рассчитывается исходя из страны налогового номера и прибавляется к цене продукта:
Например, цена Iphone для покупателя из Греции составит 124 евро (100 евро + налог 24%). Если у покупателя есть купон на 6% скидку, то цена будет 116.56 евро (100 евро - 6% скидка + налог 24%).
Форматы налоговых номеров для разных стран:
где X - любая цифра от 0 до 9, Y - любая буква. Длина налогового номера различается в зависимости от страны.
Для удобства выполнения и проверки задания предлагаем вам создать репозиторий, используя данный репозиторий, как шаблон (не форкайте его!).
Это даст доступ к базовому Docker-контейнеру с необходимыми для задания компонентами. Для установки выполните make init, что запустит Symfony-приложение на порту 8337, смонтировав текущую директорию в контейнер.
Имейте в виду: контейнер предназначен для Linux и Mac. Для Windows потребуется WSL. Работая с нами, вы будете использовать контейнеры с аналогичными требованиями.
При выполнении задания необходимо:
CRUD для сущностей предполагается уже реализованным, дополнительные проверки в сервисах не требуются.
По завершении отправьте ссылку на репозиторий.
Учитывайте возможность добавления новых платежных процессоров.
Если какая-то часть задания кажется сложной, выберите простейшее решение и комментируйте альтернативные подходы, которые рассматривали.
| Back | FazBrowse Home | New Git URL |