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 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:
- 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.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.