Git Product home page Git Product logo

python-redsys's Introduction

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.

python-redsys's People

Contributors

systemallica avatar ddiazpinto avatar erral avatar limonrojo-nm avatar jdelarubia avatar pacotole avatar adhmn4 avatar n3storm avatar polrodoreda avatar ronaldsaenz88 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.