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
- 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:
- Haz un fork del repositorio.
- Crea una nueva rama (git checkout -b feature/nueva-funcionalidad).
- Realiza tus cambios y haz commit (git commit -m 'Añadir nueva funcionalidad').
- Haz push a la rama (git push origin feature/nueva-funcionalidad).
- 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ef802c48d63a0c30f3179d44a94270dc562f50e0b3125461652c3911cfc1e37 |
|
MD5 | 94c843399f7618d4a623aeaf8f8dbbd1 |
|
BLAKE2b-256 | 98fe4f4fe571ab0765999e3e68d2557e82e154b816018fabd8b1e0bb545468c2 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 720746b0ccf2dd7e0bfb14a51134b9606b9c3516e7f905cc86b952d80577e92c |
|
MD5 | d03367195c110c5bc72110581da39666 |
|
BLAKE2b-256 | c08cfd30a2abf6fab0e041a5410b59d221f3818595493c5185f66e53322b0929 |