-
Notifications
You must be signed in to change notification settings - Fork 0
Backend
Мова програмування - Python, фреймворк - Django, БД - SQLite 3.
Модель Product
- id: Унікальний ідентифікатор товару.
- name: Назва товару (наприклад, "Процесор Intel Core i5-11400").
- description: Опис товару (текстове поле для подробиць про товар).
- price: Ціна товару (з числовим типом даних для зберігання ціни, наприклад, 999.99).
Модель Category
- id: Унікальний ідентифікатор категорії.
- name: Назва категорії (наприклад, "Процесори", "Відеокарти", "Материнські плати" і т. д.).
Модель ProductCategory
- product: Зовнішній ключ, пов'язаний з Product, вказує на конкретний товар.
- category: Зовнішній ключ, пов'язаний з Category, вказує на категорію, до якої відноситься товар.
Модель Customer
- id: Унікальний ідентифікатор клієнта.
- username: Ім'я користувача клієнта (може бути використане для авторизації).
- email: Електронна пошта клієнта (унікальна, використовується для зв'язку і авторизації).
- password: Пароль клієнта (рекомендується зберігати у захешованому форматі).
Модель Order
- id: Унікальний ідентифікатор замовлення.
- customer: Зовнішній ключ, пов'язаний з Customer, вказує на клієнта, який зробив замовлення.
- order_date: Дата і час створення замовлення.
Модель OrderItem
- id: Унікальний ідентифікатор елемента замовлення.
- order: Зовнішній ключ, пов'язаний з Order, вказує на замовлення, до якого належить цей елемент.
- product: Зовнішній ключ, пов'язаний з Product, вказує на товар, який був доданий до замовлення.
- quantity: Кількість одиниць товару, які були замовлені.
Модель Address
- id: Унікальний ідентифікатор адреси доставки.
- customer: Зовнішній ключ, пов'язаний з Customer, вказує на клієнта, для якого ця адреса призначена.
- street: Вулиця доставки.
- city: Місто доставки.
- postal_code: Поштовий індекс.
Модель Payment
- id: Унікальний ідентифікатор оплати.
- order: Зовнішній ключ, пов'язаний з Order, вказує на замовлення, за яке проведено оплату.
- payment_date: Дата і час оплати.
- amount: Сума оплати.
Модель Review
- id: Унікальний ідентифікатор відгуку.
- product: Зовнішній ключ, пов'язаний з Product, вказує на товар, до якого написаний відгук.
- customer: Зовнішній ключ, пов'язаний з Customer, вказує на клієнта, який написав відгук.
- rating: Рейтинг товару, наприклад, від 1 до 5.
- comment: Текстовий коментар клієнта.
Переказ коштів за товар замовлений в інтернет магазині;
Клієнта, після замовлення товарів, перенаправляють на сторінку або показують способи оплати за товари, що є в корзині.
В нашому інтернет магазині буде оплата через картку за допомогою платіжної системи Stripe (https://stripe.com/docs) Задача бекенд розробника - інтегрувати дану систему в нашу. Для перевірки працездатності stripe надає тестовий режим (https://stripe.com/docs/test-mode). Він надає можливість симулювати використання Stripe без переводу реальних коштів.
У файлі налаштувань треба вказати ключі для використання тестового і потім реального режимів.
Згідно документації https://stripe.com/docs/development/quickstart?lang=python інтеграція має проводитися
- встановити бібліотеку stripe:
pip3 install --upgrade stripe
Приклад Реалізації:
import json
import os
import stripe
def create_payment():
try:
data = json.loads(request.data)
# Create a PaymentIntent with the order amount and currency
intent = stripe.PaymentIntent.create(
amount=calculate_order_amount(data['items']),
currency='usd',
# In the latest version of the API, specifying the `automatic_payment_methods` parameter is optional because Stripe enables its functionality by default.
automatic_payment_methods={
'enabled': True,
},
)
return jsonify({
'clientSecret': intent['client_secret']
})
except Exception as e:
return jsonify(error=str(e)), 403
Після вдалої транзакції в особистому кабінеті Stripe з'явиться відповідний запис про неї.
Ми використаємо бібліотеку ʼdrf-yasgʼ
згідно керівництва https://drf-yasg.readthedocs.io/en/stable/readme.html#usage
Для встановлення необхідно
pip install -U drf-yasg
додати бібліотеку в settings.py
INSTALLED_APPS = [
...
'django.contrib.staticfiles', # required for serving swagger ui's css/js files
'drf_yasg',
...
]
оновити urls.py
path('swagger/', views.schema_view.with_ui('swagger', cache_timeout=0), name='swagger'),
views.py
schema_view = get_schema_view(
openapi.Info(
title="API description",
default_version="v1",
description="test Description",
contact=openapi.Contact(email="[email protected]")
),
public=True,
generator_class=OpenAPISchemaGenerator,
permission_classes=(permissions.AllowAny,), )
Після цього ми бачитимемо тут http://127.0.0.1:8000/swagger/ все доступне АПІ і зможемо звідти робити HTTP запити