Skip to main content

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.

Metadata

Release files for payflow 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for payflow 0.1.6
File Size Uploaded Provenance Actions
payflow-0.1.6.tar.gz 25.6 kB Without provenance Details for payflow-0.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for payflow 0.1.6
File Interpreter ABI Platform Actions
payflow-0.1.6-py3-none-any.whl Python 3 none any Details for payflow-0.1.6-py3-none-any.whl

Total release size: 50.1 kB

Release files / payflow-0.1.6.tar.gz

Download URL payflow-0.1.6.tar.gz
Size 25.6 kB
Tags Source
SHA-256 checksum
How to use checksums
dae69adbab521924c8b61eece45cb7a63355d09db3d60127941e88cdbc88b4b7
BLAKE2b-256 checksum
How to use checksums
835811dc64817a91a29593918c8cd912da6e93bf54c9fa16471614cf9237e36d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.1

Release files / payflow-0.1.6-py3-none-any.whl

Download URL payflow-0.1.6-py3-none-any.whl
Size 24.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23d1dfd53471eaee4b88fc2c9f8b8adfe33a0402646b3a30f3959a28277d615d
BLAKE2b-256 checksum
How to use checksums
59c4a5905b793079b6dbcd706f2d5ec208a62a58f7f2c36a67fa9fc8f14d5648
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.1

Security for payflow 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page