Skip to main content

Client for Flow Payment Acquirer

Project description

Payflow

Payflow es una biblioteca de Python diseñada para facilitar la integración con la API de pagos de Flow. Permite realizar transacciones de manera sencilla, gestionando pagos, confirmaciones y respuestas de manera segura y eficiente.

Características

  • Realizar pagos a través de la API de Flow.
  • Gestionar confirmaciones de pago y respuestas de retorno.
  • Soporte para ambientes de pruebas y producción.

Requisitos Previos

Antes de instalar Payflow, asegúrate de tener los siguientes requisitos:

  • Python 3.7 o superior
  • pip (Administrador de paquetes de Python)
  • Clave API y Secreto API de Flow

Instalación

Puedes instalar Payflow directamente desde PyPI usando pip:

.. code-block:: bash

pip install payflow

O puedes instalarlo desde el código fuente:

.. code-block:: bash

git clone https://gitlab.com/dansanti/payflow.git
cd payflow
pip install .

Configuración

Para usar Payflow, necesitarás configurar tu clave API y secreto API. Puedes establecer estas credenciales como variables de entorno:

.. code-block:: bash

export FLOW_API_KEY='tu_api_key_aquí'
export FLOW_API_SECRET='tu_api_secret_aquí'

Alternativamente, puedes utilizar un archivo .env en la raíz de tu proyecto y agregar las credenciales allí:

.. code-block:: env

FLOW_API_KEY=tu_api_key_aquí
FLOW_API_SECRET=tu_api_secret_aquí

Uso

  1. Configurar el Cliente

Para comenzar, necesitas crear una instancia del cliente de Payflow con tus credenciales:

.. code-block:: python

    from payflow.client import Client
    import os
    from dotenv import load_dotenv

    # Cargar variables de entorno desde .env si existe
    load_dotenv()

    # Configura tu cliente de Payflow
    client = Client(
        api_key=os.getenv("FLOW_API_KEY"),
        api_secret=os.getenv("FLOW_API_SECRET"),
        base_url='https://sandbox.flow.cl/api',  # URL de pruebas
        verify_ssl=True
    )

2. Realizar un Pago
~~~~~~~~~~~~~~~~~~~

Para realizar un pago, necesitas configurar los detalles de la transacción y enviarla usando el cliente:

.. code-block:: python

    # Configura el pago
    payment = {
        'commerceOrder': 'SO1',
        'subject': 'Orden SO1',
        'email': 'dansanti@gmail.com', # Email Pagador
        'paymentMethod': "1",  # Código del método de pago
        'urlConfirmation': 'https://tu-sitio.com/payment/flow/notify',
        'urlReturn': 'https://tu-sitio.com/payment/flow/return',
        'currency': "CLP",
        'amount': "1000",  # Monto en la moneda especificada
    }

    # Realiza el pago
    response = client.payments.post(payment)

    # Procesa la respuesta
    if response.get('success'):
        print("Pago realizado con éxito:", response)
    else:
        print("Error al realizar el pago:", response.get('error'))

3. Confirmar un Pago
~~~~~~~~~~~~~~~~~~~~

Puedes verificar el estado de un pago utilizando la función get:

.. code-block:: python

    transaction_id = "ID_de_transacción"

    response = client.payments.get(transaction_id)

    if response.get('success'):
        print("Estado del pago:", response['status'])
    else:
        print("Error al obtener el estado del pago:", response.get('error'))

4. Manejar Notificaciones de Confirmación

Tu aplicación puede recibir notificaciones de pago a través de la URL de confirmación que configuraste (urlConfirmation). Aquí tienes un ejemplo de cómo manejarlo:

.. code-block:: python

from flask import Flask, request

app = Flask(__name__)

@app.route('/payment/flow/notify', methods=['POST'])
def notify():
    data = request.json
    client.verify_signature(data)  # Verificar que la notificación es legítima
    transaction_id = data.get('transaction_id')

    # Procesar la transacción
    if transaction_id:
        response = client.payments.get(transaction_id)
        print("Notificación recibida:", response)
        return "OK", 200
    else:
        return "Error: No se encontró ID de transacción", 400

if __name__ == "__main__":
    app.run(port=5000)

Notas

  • Asegúrate de reemplazar tu_api_key_aquí y tu_api_secret_aquí con las credenciales reales de tu cuenta de Flow.
  • Cambia base_url a 'https://www.flow.cl/api' para usar el ambiente de producción.

Pruebas

Para ejecutar las pruebas unitarias, asegúrate de tener configuradas las variables de entorno FLOW_API_KEY y FLOW_API_SECRET y luego ejecuta:

.. code-block:: bash

python3 -m unittest discover tests

Contribuir

¡Las contribuciones son bienvenidas! Si deseas contribuir a Payflow, sigue los pasos a continuación:

  1. Haz un fork del repositorio.
  2. Crea una nueva rama (git checkout -b feature/nueva-funcionalidad).
  3. Realiza tus cambios y haz commit (git commit -m 'Añadir nueva funcionalidad').
  4. Haz push a la rama (git push origin feature/nueva-funcionalidad).
  5. Crea un Pull Request en GitLab.

Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para obtener más detalles.

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

payflow-0.1.6.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

payflow-0.1.6-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file payflow-0.1.6.tar.gz.

File metadata

  • Download URL: payflow-0.1.6.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for payflow-0.1.6.tar.gz
Algorithm Hash digest
SHA256 dae69adbab521924c8b61eece45cb7a63355d09db3d60127941e88cdbc88b4b7
MD5 9871582159ec55ffa1a0400eb38767e9
BLAKE2b-256 835811dc64817a91a29593918c8cd912da6e93bf54c9fa16471614cf9237e36d

See more details on using hashes here.

File details

Details for the file payflow-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: payflow-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for payflow-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 23d1dfd53471eaee4b88fc2c9f8b8adfe33a0402646b3a30f3959a28277d615d
MD5 a78448e468fc631abded086d7dd7318f
BLAKE2b-256 59c4a5905b793079b6dbcd706f2d5ec208a62a58f7f2c36a67fa9fc8f14d5648

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page