A simple, clean and less dependant client to handle payments through Redsys.
Project description
Welcome to python-redsys!
A simple, clean and less dependant client to handle payments through the Redsys platform using one of the available methods: redirect connection or (secure method).
The purpose of this library is to provide a normalized interface between Redsys and other Python applications.
About RedirectClient
Although redirect connection depends on a webserver to resolve the communication step, the RedirectClient provided in this library does not assume any kind of procedure to resolve that step; it merely prepares the necessary parameters to make a request and handles the corresponding response parameters. That's what less dependant means.
Example using redirect connection
0. Install python-redsys
You can add python-redsys to your project with pip:
pip install python-redsys
Or with poetry:
poetry add python-redsys
1. Instantiate the redirect client
from decimal import Decimal as D, ROUND_HALF_UP
from redsys.constants import EUR, STANDARD_PAYMENT
from redsys.client import RedirectClient
secret_key = "123456789abcdef"
client = RedirectClient(secret_key)
2. Set up the request parameters
parameters = {
"merchant_code": "100000001",
"terminal": "1",
"transaction_type": STANDARD_PAYMENT,
"currency": EUR,
"order": "000000001",
"amount": D("10.56489").quantize(D(".01"), ROUND_HALF_UP),
"merchant_data": "test merchant data",
"merchant_name": "Example Commerce",
"titular": "Example Ltd.",
"product_description": "Products of Example Commerce",
"merchant_url": "https://example.com/redsys/response",
}
3. Prepare the request
This method returns a dict with the necessary post parameters that are needed during the communication step.
args = client.prepare_request(parameters)
4. Communication step
Redirect the user-agent to the corresponding Redsys' endpoint using the post parameters given in the previous step.
After the payment process is finished, Redsys will respond making a
request to the merchant_url
defined in step 2.
5. Create and check the response
Create the response object using the received parameters from Redsys.
The method create_response()
throws a ValueError
in case the
received signature is not equal to the calculated one using the
given merchant_parameters
. This normally means that the response is
not coming from Redsys or that it has been compromised.
signature = "YqFenHc2HpB273l8c995...."
merchant_parameters = "AndvIh66VZdkC5TG3nYL5j4XfCnFFbo3VkOu9TAeTs58fxddgc..."
response = client.create_response(signature, merchant_parameters)
if response.is_paid:
# Do the corresponding actions after a successful payment
else:
# Do the corresponding actions after a failed payment
raise Exception(response.code, response.message)
Methods for checking the response:
According to the Redsys documentation:
response.is_paid
: ReturnsTrue
if the response code is between 0 and 99 (both included).response.is_canceled
: ReturnsTrue
if the response code is 400.response.is_refunded
: ReturnsTrue
if the response code is 900.response.is_authorized
: ReturnsTrue
if the response is paid, refunded or canceled.
Also, you can directly access the code or the message defined in Redsys
documentation using response.code
or response.message
.
Contributions
Please, feel free to send any contribution that maintains the less dependant philosophy.
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 python_redsys-1.2.0.tar.gz
.
File metadata
- Download URL: python_redsys-1.2.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.7 tqdm/4.66.1 importlib-metadata/6.8.0 keyring/24.2.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3347d2803004f9b0541961e22e55a4c294d3bd693f9064699d67a30a3ed14e21 |
|
MD5 | 62cd797dea4ff7143f217e3ff4fd778a |
|
BLAKE2b-256 | f1eaa9ef0cd444b7700aebb87042e22d1d9cd9823ca1950000505fef0b0b4ae1 |
File details
Details for the file python_redsys-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: python_redsys-1.2.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.7 tqdm/4.66.1 importlib-metadata/6.8.0 keyring/24.2.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fce3efe43628508889faec9661a29be76b5d20822829ab02197dfeacc6a412c2 |
|
MD5 | 4a5a5fb4ab765177be9e68a981120cf3 |
|
BLAKE2b-256 | c9e0604190e83bda79806cb16cba1890a669cd3ee015616db2f9ce1ad4baac80 |