Skip to main content

Django integration with ATOL online

Project description

Application for integrating Django and https://online.atol.ru/

https://img.shields.io/badge/python-3.5,%203.6,%203.7,%203.8,%203.9,%203.10-blue.svg https://travis-ci.org/MyBook/django-atol.svg?branch=master https://codecov.io/gh/MyBook/django-atol/branch/master/graph/badge.svg https://img.shields.io/badge/docs-v3-yellow.svg

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

  1. Add atol to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'atol',
    ]
  2. 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}'
  3. 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)
        }
    }
  4. 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')
  5. Run python manage.py migrate atol to create the receipt model.

  6. 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)
  7. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-atol-1.4.1.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

django_atol-1.4.1-py2.py3-none-any.whl (16.7 kB view details)

Uploaded Python 2 Python 3

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

Hashes for django-atol-1.4.1.tar.gz
Algorithm Hash digest
SHA256 370f22a58c23dc95092b240035b891d3367b77f650f5ec2682845b29bdf7d2cc
MD5 e59d4283df070a17dbd73d04ac33d880
BLAKE2b-256 abaa7fc22d727be3f27ef61576c68db55d3630f6a17adde2e19a3d68ef518d14

See more details on using hashes here.

File details

Details for the file django_atol-1.4.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_atol-1.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d69d4adc24c055fff49cde967690fc30b657fada09641b8bbde0e5ef76ecb2de
MD5 1b26c9b2779907e0f3d1f307843e9c00
BLAKE2b-256 750346a11f3bbe0680306f300500b75f511b5294a2e8c8f577277debdf648703

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page