Skip to main content

A simple, clean and less dependant client to handle payments through Redsys.

Project description

PyPI version

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: Returns True if the response code is between 0 and 99 (both included).
  • response.is_canceled: Returns True if the response code is 400.
  • response.is_refunded: Returns True if the response code is 900.
  • response.is_authorized: Returns True 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


Download files

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

Source Distribution

python_redsys-1.2.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

python_redsys-1.2.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

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

Hashes for python_redsys-1.2.0.tar.gz
Algorithm Hash digest
SHA256 3347d2803004f9b0541961e22e55a4c294d3bd693f9064699d67a30a3ed14e21
MD5 62cd797dea4ff7143f217e3ff4fd778a
BLAKE2b-256 f1eaa9ef0cd444b7700aebb87042e22d1d9cd9823ca1950000505fef0b0b4ae1

See more details on using hashes here.

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

Hashes for python_redsys-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fce3efe43628508889faec9661a29be76b5d20822829ab02197dfeacc6a412c2
MD5 4a5a5fb4ab765177be9e68a981120cf3
BLAKE2b-256 c9e0604190e83bda79806cb16cba1890a669cd3ee015616db2f9ce1ad4baac80

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