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 API_KEY y 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.5.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for payflow-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0ef802c48d63a0c30f3179d44a94270dc562f50e0b3125461652c3911cfc1e37
MD5 94c843399f7618d4a623aeaf8f8dbbd1
BLAKE2b-256 98fe4f4fe571ab0765999e3e68d2557e82e154b816018fabd8b1e0bb545468c2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for payflow-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 720746b0ccf2dd7e0bfb14a51134b9606b9c3516e7f905cc86b952d80577e92c
MD5 d03367195c110c5bc72110581da39666
BLAKE2b-256 c08cfd30a2abf6fab0e041a5410b59d221f3818595493c5185f66e53322b0929

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