garpix-order


Namegarpix-order JSON
Version 1.0.0rc9 PyPI version JSON
download
home_pagehttps://github.com/garpixcms/garpix_order
SummaryNone
upload_time2024-08-08 08:41:34
maintainerNone
docs_urlNone
authorGarpix LTD
requires_pythonNone
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
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}},
   }

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/garpixcms/garpix_order",
    "name": "garpix-order",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Garpix LTD",
    "author_email": "info@garpix.com",
    "download_url": "https://files.pythonhosted.org/packages/6f/5e/fb09c7c3d2b9128867329fbbf9567a6d8cfc48926b942a80d458dd1cccf7/garpix_order-1.0.0rc9.tar.gz",
    "platform": null,
    "description": "\nGarpix Order\n============\n\n.. code-block:: python\n\n   from garpix_order.models import BaseOrder, BaseOrderItem, BasePayment\n\n\n   class Order(BaseOrder):\n       pass\n\n\n   class Service(BaseOrderItem):\n       def pay(self):\n           pass\n\n\n   class Invoice(BasePayment):\n       pass\n\n**BaseOrder** - \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u043a\u0430\u0437\u0430.\n\n``items`` - \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 OrderItem.\n\n``items_amount`` - \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043e\u043f\u043b\u0430\u0442\u044b.\n\n**BaseOrderItem** - \u0447\u0430\u0441\u0442\u0438 \u0437\u0430\u043a\u0430\u0437\u0430. \u0412 \u043e\u0434\u0438\u043d \u0437\u0430\u043a\u0430\u0437 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439.\n\n``pay`` - \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0443 \u0432\u0441\u0435\u0445 BaseOrderItem, \u043a\u043e\u0433\u0434\u0430 \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0430\u0437.\n\n``full_amount`` - \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0430 \u0437\u0430\u043a\u0430\u0437\u0430. \n\n**Invoice** - \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043e\u043f\u043b\u0430\u0442\u044b (\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f). \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 ``status`` \u0441 \u0442\u0438\u043f\u043e\u043c FSM.\n\n\u042d\u043a\u0432\u0430\u0439\u0440\u0438\u043d\u0433 \u0421\u0431\u0435\u0440\n--------------\n\n**BaseSberPayment** \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u0421\u0431\u0435\u0440\u0430. **\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e** \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u043e\u0434\u0435\u043b\u044c-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a,\n\u0437\u0430\u0442\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u0434\u043e \u043d\u0435\u0435 \u0432 settings.py, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n\n.. code-block:: python\n\n   SBER_PAYMENT_MODEL = 'path.to.your.app.models.SberPaymentModel'\n\n\u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0435\u0436\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438 callback\n\u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 garpix_order.services.sber.SberService.\n\n\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u043a \u044d\u043a\u0432\u0430\u0439\u0440\u0438\u043d\u0433\u0443 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 SberService)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 settings.py \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 python-json-logger:\n\n.. code-block:: commandline\n\n   pip install python-json-logger\n\n.. code-block:: python\n\n   from garpix_order.logging.filters import PaymentAuthDataFilter\n\n\n   LOGGING = {\n       \"version\": 1,\n       \"disable_existing_loggers\": False,\n       \"filters\": {\n           \"payment_auth_data_filter\": {\n               \"()\": PaymentAuthDataFilter,\n           }\n       },\n       \"formatters\": {\n           \"json\": {\n               \"format\": \"%(asctime)s %(levelname)s %(message)s %(module)s\",\n               \"datefmt\": \"%Y-%m-%dT%H:%M:%SZ\",\n               \"class\": \"pythonjsonlogger.jsonlogger.JsonFormatter\",\n           }\n       },\n       \"handlers\": {\n           \"stdout\": {\n               \"class\": \"logging.StreamHandler\",\n               \"stream\": \"ext://sys.stdout\",\n               \"formatter\": \"json\",\n               \"filters\": [\"payment_auth_data_filter\"],\n           }\n       },\n       \"loggers\": {\"garpix_order.services.sber\": {\"handlers\": [\"stdout\"], \"level\": \"INFO\", \"propagate\": False}},\n   }\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": null,
    "version": "1.0.0rc9",
    "project_urls": {
        "Homepage": "https://github.com/garpixcms/garpix_order"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c288a5f1840e3447384702de2fbde5155c7ba843feed7c1be89e1c53e0e95a52",
                "md5": "35e26c27f709600ac82b05682dbfdc4b",
                "sha256": "ff40a4186f0bac37041a77791a34090edc121cebe9c05b1b0f608980089ae8c2"
            },
            "downloads": -1,
            "filename": "garpix_order-1.0.0rc9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "35e26c27f709600ac82b05682dbfdc4b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 95417,
            "upload_time": "2024-08-08T08:41:30",
            "upload_time_iso_8601": "2024-08-08T08:41:30.931434Z",
            "url": "https://files.pythonhosted.org/packages/c2/88/a5f1840e3447384702de2fbde5155c7ba843feed7c1be89e1c53e0e95a52/garpix_order-1.0.0rc9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f5efb09c7c3d2b9128867329fbbf9567a6d8cfc48926b942a80d458dd1cccf7",
                "md5": "36ccde16d255329e8ed6c96d155409f2",
                "sha256": "d7f9ec08756df9e86b1cfb5fb39d1064a7473b49f25f3661a4233845b432015a"
            },
            "downloads": -1,
            "filename": "garpix_order-1.0.0rc9.tar.gz",
            "has_sig": false,
            "md5_digest": "36ccde16d255329e8ed6c96d155409f2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 56016,
            "upload_time": "2024-08-08T08:41:34",
            "upload_time_iso_8601": "2024-08-08T08:41:34.460518Z",
            "url": "https://files.pythonhosted.org/packages/6f/5e/fb09c7c3d2b9128867329fbbf9567a6d8cfc48926b942a80d458dd1cccf7/garpix_order-1.0.0rc9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-08 08:41:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "garpixcms",
    "github_project": "garpix_order",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "garpix-order"
}
        
Elapsed time: 0.25148s