A simple library to manage Satispay payments
Project description
satispaython
A simple library to manage Satispay payments following the Web-button flow.
Requirements
- python 3.8
cryptography
>= 3.1requests
>= 2.24
Installation
pip
You can install this package with pip: pip install satispaython
.
clone
This repo comes with Pipfiles, so if you use pipenv
just clone this repo and do pipenv install
to create the virtual environment.
Usage
Key generation
Firs of all you nedd an RSA private key. You may generate the key by yourself or you may use the provided utility functions:
from satispaython.utils import key_management
rsa_key = key_management.generate_key()
key_management.write_key(rsa_key, 'path/to/file.pem')
In order to load the key from a PEM encoded file you may use the utility function:
rsa_key = key_management.load_key('path/to/file.pem')
:information_source: The function
write_key
stores the key in the PEM format. If you generate the key with any other method and you would like to use theload_key
function, please make sure the key is stored within a file in the PEM format.
:information_source: Satispaython key management is based on
cryptography
so all the functions which require an RSA key parameter expect an object of the classRSAPrivateKey
. If you don't use theload_key
function then make sure your key is an instance ofRSAPrivateKey
.
You may protect your key with a password simply adding the password
parameter:
rsa_key = key_management.generate_key()
key_management.write_key(rsa_key, 'path/to/file.pem', password='mypassword')
rsa_key = key_management.load_key('path/to/file.pem', password='mypassword')
Satispay API
In order to use the Satispay API import the following module:
from satispaython import satisapy
Then you can:
- Obtain a key-id using a token
satispay.obtain_key_id(rsa_key, token)
:information_source: The token is the activation code that can be generated from the Satispay Dashboard (or provided manually for Sandbox account).
:warning: Tokens are disposable, then the KeyId must be saved right after its creation.
- Make an authentication test
satispay.test_authentication(key_id, rsa_key)
:information_source: Authentication tests work only on Sandbox endpoints.
- Create a payment
satispay.create_payment(key_id, rsa_key, amount_unit, currency, callback_url, expiration_date=None, external_code=None, metadata=None, idempotency_key=None)
You may use the utility function format_datetime
to get a correctly formatted expiration_date
to supply to the request:
from datetime import datetime, timezone, timedelta
from satispaython.utils.time import format_datetime
expiration_date = datetime.now(timezone.utc) + timedelta(hours=1)
expiration_date = format_datetime(expiration_date)
- Get payment details
satispay.get_payment_details(key_id, rsa_key, payment_id)
Satispaython web requests are based on requests
so those functions return an instance of Response. On success, Satispay APIs respond with a JSON encoded body, so you can simply check for the response.status_code
and eventually get the content with response.json()
.
If you need to use the Sandbox endpoints, simply set the staging
parameter to True
:
satispay.obtain_key_id(rsa_key, token, staging=True)
satispay.create_payment(key_id, rsa_key, amount_unit, currency, callback_url, expiration_date=None, external_code=None, metadata=None, idempotency_key=None, staging=True)
satispay.get_payment_details(key_id, rsa_key, payment_id, staging=True)
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
Hashes for satispaython-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8fe33570f503dc66c95c234df1e3a5d33345697a2096812266cfc32df9d50d0 |
|
MD5 | e98c42ee9fcfe5653368e1bb2bcab7ed |
|
BLAKE2b-256 | 4fae5047bd0a79b3497d29c8d8c97e7464cdd8794acea7f51009a1d425d5bb2e |