Metadata-Version: 2.1
Name: garpix-order
Version: 1.0.0rc9
Home-page: https://github.com/garpixcms/garpix_order
Author: Garpix LTD
Author-email: info@garpix.com
License: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3.8
Requires-Dist: Django (<5,>=3.1)
Requires-Dist: djangorestframework (>=3.8)
Requires-Dist: django-fsm (==3.0.0)


Garpix Order
============

.. code-block:: python

   from garpix_order.models import BaseOrder, BaseOrderItem, BasePayment


   class Order(BaseOrder):
       pass


   class Service(BaseOrderItem):
       def pay(self):
           pass


   class Invoice(BasePayment):
       pass

**BaseOrder** - основной класс заказа.

``items`` - метод для получения связанных OrderItem.

``items_amount`` - метод для получения суммы оплаты.

**BaseOrderItem** - части заказа. В один заказ можно положить несколько сущностей.

``pay`` - метод вызовет у всех BaseOrderItem, когда оплачивается заказ.

``full_amount`` - метод возвращает полную сумма заказа. 

**Invoice** - Основная модель для отслеживания статуса оплаты (транзакция). Содержит ``status`` с типом FSM.

Эквайринг Сбер
--------------

**BaseSberPayment** Абстрактная модель для платежей Сбера. **Для работы необходимо** создать свою модель-наследник,
затем указать путь до нее в settings.py, например:

.. code-block:: python

   SBER_PAYMENT_MODEL = 'path.to.your.app.models.SberPaymentModel'

Методы для создания платежа, получение его данных от провайдера и callback
находятся в garpix_order.services.sber.SberService.

Логирование ошибок при запросах к эквайрингу (на данный момент поддерживается только в SberService)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Пример добавления логирования в settings.py с использованием библиотеки python-json-logger:

.. code-block:: commandline

   pip install python-json-logger

.. code-block:: python

   from garpix_order.logging.filters import PaymentAuthDataFilter


   LOGGING = {
       "version": 1,
       "disable_existing_loggers": False,
       "filters": {
           "payment_auth_data_filter": {
               "()": PaymentAuthDataFilter,
           }
       },
       "formatters": {
           "json": {
               "format": "%(asctime)s %(levelname)s %(message)s %(module)s",
               "datefmt": "%Y-%m-%dT%H:%M:%SZ",
               "class": "pythonjsonlogger.jsonlogger.JsonFormatter",
           }
       },
       "handlers": {
           "stdout": {
               "class": "logging.StreamHandler",
               "stream": "ext://sys.stdout",
               "formatter": "json",
               "filters": ["payment_auth_data_filter"],
           }
       },
       "loggers": {"garpix_order.services.sber": {"handlers": ["stdout"], "level": "INFO", "propagate": False}},
   }
