Django integration with ATOL online
Project description
Application for integrating Django and https://online.atol.ru/
Important limitations:
Python 3.5+
Support Django 1.11+
PostgreSQL ≥ 9.4 (JSONB field) (PostgreSQL ≥ 11 for Django 4.0)
only 1 purchase is supported in receipt (1 product)
only v3 protocol version is supported
Quick start
Add atol to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [ ... 'atol', ]
Add atol settings like this:
RECEIPTS_ATOL_LOGIN = 'login' RECEIPTS_ATOL_PASSWORD = 'secret' RECEIPTS_ATOL_GROUP_CODE = 'ATOL-ProdTest-1' RECEIPTS_ATOL_TAX_NAME = 'vat18' RECEIPTS_ATOL_TAX_SYSTEM = 'osn' RECEIPTS_ATOL_INN = '112233445573' RECEIPTS_ATOL_PAYMENT_METHOD = 'full_payment' RECEIPTS_ATOL_PAYMENT_OBJECT = 'service' RECEIPTS_ATOL_CALLBACK_URL = None RECEIPTS_ATOL_PAYMENT_ADDRESS = 'www.<your_company>.ru' RECEIPTS_ATOL_COMPANY_EMAIL = '<your_company>@gmail.com' RECEIPTS_OFD_URL_TEMPLATE = u'https://lk.platformaofd.ru/web/noauth/cheque?fn={fn}&fp={fp}'
Add celery-beat tasks to CELERYBEAT_SCHEDULE settings like this:
CELERYBEAT_SCHEDULE = { ... 'atol_retry_created_receipts': { 'task': 'atol_retry_created_receipts', 'schedule': crontab(minute=25) }, 'atol_retry_initiated_receipts': { 'task': 'atol_retry_initiated_receipts', 'schedule': crontab(minute=35) } }
Include the atol URLconf in your project urls.py like this:
from atol.views import ReceiptView url(r'^r/(?P<short_uuid>[\w]+)/$', ReceiptView.as_view(), name='receipt')
Run python manage.py migrate atol to create the receipt model.
Add receipt field to your payment model:
from atol.models import Receipt receipt = models.OneToOneField(Receipt, verbose_name=_('Чек'), blank=True, null=True, on_delete=models.SET_NULL)
Add the mechanics of calling a receipt creation after a successful payment. For example, this can be done through a signal that will be called upon successful payment:
# <your_app>/signals.py payment_accepted = Signal(providing_args=['payment']) # <your_app>/providers/googleplay.py def process_payment(payment) ... payment_accepted.send(sender='google-play', payment=payment) # <your_app>/receivers.py @receiver(payment_accepted) @transaction.atomic def init_payment_receipt(sender, payment, **kwargs): ... receipt = Receipt.objects.create( user_email=payment.user.email, purchase_price=payment.amount ) payment.receipt = receipt payment.save(update_fields=['receipt']) transaction.on_commit( lambda: atol_create_receipt.apply_async(args=(receipt.id,), fallback_sync=True) )
Run tests
pytest
Changelog
1.4.1 (2022-09-13)
Fix JSONField module for django>=3.1
1.4.0 (2022-08-17)
Add Django 4.0 support
Add Python ≥ 3.7 and Django ≥ 3.0 CI tests
Upgrade CI Linux dist to Ubuntu 18.04 (Bionic) for Python 3.10 tests
Upgrade CI Postgres version to 11 for Django 4.x tests
1.3.4 (2021-10-05)
Fix bug with payment_method parameter
1.3.3 (2021-06-28)
Add task for sell_refund request
1.3.2 (2020-08-17)
Upgrade shortuuid 0.5.0 -> 1.0.1
1.3.1 (2018-12-19)
Sell method: do not insert empty email or phone
1.3.0 (2018-12-19)
Support Atol protocol v4 (FFD 1.05)
1.2.2 (2018-10-08)
Change maximum retry counts for task atol_receive_receipt_report. Now its awaiting report for 29 hours.
Changed atol_retry_created_receipts and atol_retry_initiated_receipts tasks retry period. Now it will retry receipts from day before yesterday
1.2.1 (2018-05-22)
AtolAPI.base_url specifying in settings
1.2.0 (2017-12-14)
Support retried not processed receipt
1.1.0 (2017-12-13)
Django 2.0 support
1.0.0 (2017-12-01)
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-atol-1.4.1.tar.gz
.
File metadata
- Download URL: django-atol-1.4.1.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 370f22a58c23dc95092b240035b891d3367b77f650f5ec2682845b29bdf7d2cc |
|
MD5 | e59d4283df070a17dbd73d04ac33d880 |
|
BLAKE2b-256 | abaa7fc22d727be3f27ef61576c68db55d3630f6a17adde2e19a3d68ef518d14 |
File details
Details for the file django_atol-1.4.1-py2.py3-none-any.whl
.
File metadata
- Download URL: django_atol-1.4.1-py2.py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d69d4adc24c055fff49cde967690fc30b657fada09641b8bbde0e5ef76ecb2de |
|
MD5 | 1b26c9b2779907e0f3d1f307843e9c00 |
|
BLAKE2b-256 | 750346a11f3bbe0680306f300500b75f511b5294a2e8c8f577277debdf648703 |