django-satispaython
A simple django app to manage Satispay payments following the Web-button flow.
Requirements
Installation
You can install this package with pip: pip install django-satispaython
.
Usage
Key generation and key-id
In order to use django-satispaython you need to generate a RSA private key and then get a key-id.
Django-satispaython is based on satispaython so you can import it, create a key and obtain a key-id.
Configuration
Once you created a RSA key and got a key-id add django-satispaython to your INSTALLED_APPS:
INSTALLED_APPS = (
'django_satispaython.apps.DjangoSatispaythonConfig',
)
Then add the followings to you django settings:
SATISPAYTHON_PRIVATE_KEY_PATH = '/path/to/my/key.pem'
SATISPAYTHON_KEY_ID_PATH = '/path/to/my/key-id.txt'
SATISPAYTHON_STAGING = True
SATISPAYTHON_PRIVATE_KEY_PATH
: the path of your PEM file containing the RSA private key used to get your key-id.SATISPAYTHON_KEY_ID_PATH
: the path of the file containing the key-id coupled with the private-key.SATISPAYTHON_STAGING
: if True
django-satispaython will use the Sandbox endpoints.
Satispay API
In order to use the Satispay API import django-satispaython.api:
from django_satispaython import api as satispay
Then you can:
Create a payment
satispay.create_payment(amount_unit, currency, callback_url, expiration_date=None, external_code=None, metadata=None, idempotency_key=None)
You may use satispaython utility function format_datetime
to get a correctly formatted expiration_date
to supply to the request.
Get payment details
satisapy.get_payment_details(payment_id)
Templatetags
In order to render the Satispay button just load the tag and use it in the template:
{% load django_satispaython %}
...
{% satispay_button payment_id=<your_payment_id> %}
Note that the button will automatically point at the endpoint (production or sandbox) specified in the project settings
.
Database and Admin
Django-satispaython comes with a SatispayPayment model which contains every info associated to a payment and is automatically showed in the admin page.
:information_source: All the Satispay API functions return an instance of the SatispayPayment model without actually storing it by default.
If you want to store a newly created payment in the database or update an already existing one with the informations provided by the response, set the update
parameter to True
.
satispay.create_payment(amount_unit, currency, callback_url, expiration_date=None, external_code=None, metadata=None, idempotency_key=None, update=True)
satisapy.get_payment_details(payment_id, update=True)
In this case an output similar to django's update_or_create
will be returned.
TODOS
- Signals
- ImproperlyConfiguredException