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.