Metadata-Version: 2.4
Name: entirius-django-checkout
Version: 9.1.0
Summary: Checkout engine for Django: carts, orders, payment intents (PayU, PayPal, Autopay, Przelewy24, Paynow, Stripe), shipping, discounts and sale offers
Project-URL: Repository, https://github.com/entirius/entirius-django-checkout
Author: Entirius
License-Expression: MPL-2.0
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: celery
Requires-Dist: django-admin-inline-paginator>=0.3.0
Requires-Dist: django-filter>=23.0
Requires-Dist: django>=5.0
Requires-Dist: djangorestframework-simplejwt>=5.3
Requires-Dist: djangorestframework>=3.14
Requires-Dist: drf-spectacular>=0.27
Requires-Dist: entirius-django-accounts>=5.0.0
Requires-Dist: entirius-django-pim>=3.0.0
Requires-Dist: entirius-django-pricemanager>=4.0.1
Requires-Dist: entirius-django-regional>=2.0.0
Requires-Dist: entirius-django-utils>=2.0.0
Requires-Dist: entirius-py-autopay-sdk>=2.0.0
Requires-Dist: entirius-py-bievents>=2.0.0
Requires-Dist: entirius-py-idx-normalizator>=2.0.0
Requires-Dist: entirius-py-paynow-sdk>=2.0.0
Requires-Dist: entirius-py-paypal-sdk>=2.0.0
Requires-Dist: entirius-py-payu-sdk>=2.0.0
Requires-Dist: entirius-py-process-logger>=2.0.0
Requires-Dist: entirius-py-przelewy24-sdk>=2.0.0
Requires-Dist: marshmallow
Requires-Dist: marshmallow-dataclass
Requires-Dist: pandas>=2.0
Requires-Dist: pydantic>=2.0
Requires-Dist: pytz
Requires-Dist: stripe>=11.6.0
Requires-Dist: tqdm
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: pricetuner
Requires-Dist: entirius-django-pricetuner>=2.0.0; extra == 'pricetuner'
Provides-Extra: qms
Requires-Dist: entirius-django-qms>=4.0.0; extra == 'qms'
Provides-Extra: returns
Requires-Dist: entirius-django-returns>=3.0.0; extra == 'returns'
Provides-Extra: test
Requires-Dist: dj-database-url; extra == 'test'
Requires-Dist: entirius-django-captcha>=2.0.0; extra == 'test'
Requires-Dist: psycopg[binary]; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-django; extra == 'test'
Provides-Extra: vat
Requires-Dist: entirius-django-vat-validator>=2.0.0; extra == 'vat'
Provides-Extra: vault
Requires-Dist: entirius-django-vault>=2.0.0; extra == 'vault'
Provides-Extra: voucher
Requires-Dist: entirius-django-checkout-voucher>=2.0.0; extra == 'voucher'
Description-Content-Type: text/markdown

# entirius-django-checkout

Checkout engine for Django.

`django_checkout` handles the full checkout flow of a multi-channel storefront: cart lifecycle,
order creation and splitting, payment intents with pluggable providers (PayU, PayPal, Autopay,
Przelewy24, Paynow, Stripe), shipping and payment method selection, discount codes and rules,
sale offers and per-supplier stock reservation. Two API generations coexist: v1 (function-based
views, marshmallow DTOs) and v2 (DRF + Pydantic, sub-resource PATCH pattern).

## Installation

```shell
pip install entirius-django-checkout
```

Add `django_checkout` to `INSTALLED_APPS`. The checkout attaches to `django_accounts`,
`django_pim`, `django_pricemanager` and `django_regional`; optional integrations are exposed
as extras:

```shell
pip install "entirius-django-checkout[qms,vault,vat,pricetuner]"
```

To use the `django_accounts` auth system, add its backend in the host service settings
(the list works FIFO — first entry is checked first):

```python
AUTHENTICATION_BACKENDS = [
    "django_accounts.backends.JWTAccessBackend",
    "django.contrib.auth.backends.ModelBackend",  # default django auth - important for /admin
]
```

## Development

```shell
uv sync --all-extras
make check test
```

Tests require PostgreSQL — point `DATABASE_URL` at any postgres 15+.
See [AGENTS.md](AGENTS.md) for architecture, settings and integration points.
