Saltar a contenido

django-payments-chile

django-payments-chile es una extensión para django-payments, una biblioteca que proporciona una interfaz universal para procesar pagos en aplicaciones Django. Este proyecto añade soporte específico para varios proveedores de pagos chilenos como Flow, Khipu, Webpay, y otros.

⚠️ ⚠️ Este proyecto está en desarrollo activo, usar con precaución. ⚠️ ⚠️

PyPI - Status Downloads Codacy Badge Codacy Badge pre-commit.ci status Tests & Coverage PyPI PyPI - Python Version PyPI - Implementation PyPI - License

Proveedores de pago soportados

Proveedor Estado Descripcion
Flow ✅ Plataforma chilena para pagos en línea que admite múltiples métodos de pago.
Khipu ✅ Permite pagos mediante transferencia electrónica en tiempo real.
Klap ❌ Solución de pagos electrónicos enfocados en comercios.
Kushki ❌ Proveedor de pagos electrónicos que facilita la integración con diversas plataformas.
Payku ❌ Plataforma de pagos enfocada en pequeñas y medianas empresas.
Webpay ✅ El sistema de pago en línea más utilizado en Chile, operado por Transbank.

Inicio rápido

Instalación

La biblioteca django-payments-chile está disponible en PyPi. Puedes instalarla fácilmente con tu gestor de paquetes favorito, como pip, poetry, o pipenv.

pip install django-payments-chile

Configuración

En tu archivo settings.py, configura los proveedores de pago que vas a utilizar:

PAYMENT_VARIANTS = {
    'flow': ('payments_chile.flow.FlowProvider', {
        'api_key': 'tu_api_key_flow',
        'secret': 'tu_secret_flow',
    }),
    'webpay': ('payments_chile.webpay.WebpayProvider', {
        'commerce_code': 'tu_commerce_code_webpay',
        'api_key': 'tu_api_key_webpay',
    }),
    # Otros proveedores como khipu, klap, etc.
}

Creación de un nuevo pago

Con django-payments ya configurado, puedes crear un nuevo pago utilizando los métodos nativos de la librería:

from payments import get_payment_model

Payment = get_payment_model()

payment = Payment.objects.create(
    variant='flow',  # o 'webpay', 'khipu', debe coincidir con el indice en PAYMENT_VARIANTS
    description="Pago por Orden #123",
    total=10000,
    currency='CLP',
    billing_first_name='Juan',
    billing_last_name='Pérez',
    billing_email='juan.perez@example.com',
)

# Redirige al usuario al proveedor de pagos
redirect_url = payment.get_process_url()
return redirect(redirect_url)

Para más detalles sobre el flujo de pago y las respuestas de los proveedores, consulta la sección configuración.