В проекте представлено использование в Django StripeAPI для оплаты товаров.
NOTE: Данные карт для тестирования платёжной системы и промокоды:
| Номер карты | Статус |
|---|---|
| 4242 4242 4242 4242 | Success |
| 4000 0000 0000 9995 | Decline |
| 4000 0025 0000 3155 | Authentication |
| Промокод | Действует | Скидка |
|---|---|---|
| STRIPE25 | Один раз | 25% |
| RANKS15 | В течении 3 месяцев | 15% |
| STRIPE15 | В течении 3 месяцев | 15% |
| APP15 | В течении 3 месяцев | 15% |
| RANKS | Всегда | 10% |
Через SSH:
git clone git@github.com:kurrbanov/stripe_task.git
Через HTTPS:
git clone https://github.com/kurrbanov/stripe_task.git
Note: Если у вас нет Stripe аккаунта, то зарегистрируйте его и укажите приватный и публичный ключ в .env
cp .env.example .env
docker-compose up -d --build
Подождите, пока поднимутся контейнеры, накатятся миграции и откройте в браузере http://localhost:8000
В файле server/fill_db.py находится скрипт, который автоматически заполняет приложение тестовыми данными. Он запускается через server/Dockerfile после миграций. Можно изменить в нём значения и заполнить с его помощью БД.
P.S. superuser создаётся там же. Его имя, пароль и email находятся в server/.env
1: GET /
Возвращает HTML-страницу со всеми Item, а также кнопку перехода в корзину с товарами.
2: GET /item/&id
Возвращает HTML-страницу с информацией о конкретном Item. В случае, если Item не существует, возвращает 404 Not Found.
3: GET /buy/&id
Создаёт сессию с платёжом и перенаправляет на неё. В случае, если Item не существует, возвращает 404 Not Found.
4: POST /add_to_order
Создаёт Order по сгенерированному uuid. uuid сохраняется в сессии, является идентификатором Order, удаляется через 24 часа.
5: GET /bucket
Возвращает список Item, которые связаны с Order.
6: POST /bucket
Принимает значение country = 'RU' | 'DE' | 'US' устанавливающий юрисдикцию, для последующего определения налоговой ставки.
7: GET /buy-bucket
Создаёт купоны(Discount), промокоды(PromoCode) и налоговые ставки(Tax) из базы данных в Stripe Dashboard. После чего создаёт сессию оплаты для Order, в котором учитываются промокоды и налоговая ставка.
8: GET /success
Возвращает HTML-страницу, уведомляющую об успешной оплате.
9: GET /cancel
Возвращает HTML-страницу, уведомляющую об проблемах с оплатой.
10: POST /clear
Очищает корзину.
Все error-логи будут хранится в server/logs/error.log. После запуска проекта в Докере, автоматически создтастся папка logs и файл error.log.