Skip to content

Commit

Permalink
Documentacion
Browse files Browse the repository at this point in the history
  • Loading branch information
mariofix committed Dec 14, 2024
1 parent 3e58f8e commit 41c3816
Show file tree
Hide file tree
Showing 13 changed files with 255 additions and 377 deletions.
24 changes: 0 additions & 24 deletions django_payments_chile/FlowProvider.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,27 +228,3 @@ def refund(self, payment, amount: Optional[int] = None) -> int:
payment.save()
payment.change_status(PaymentStatus.REFUNDED)
return to_refund

def capture(self):
"""
Captura el pago (no implementado).
Note:
Método no soportado por Flow.
Raises:
NotImplementedError: Método no implementado.
"""
raise NotImplementedError() # noqa

def release(self):
"""
Libera el pago (no implementado).
Note:
Método no soportado por Flow.
Raises:
NotImplementedError: Método no implementado.
"""
raise NotImplementedError() # noqa
4 changes: 2 additions & 2 deletions django_payments_chile/providers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from .FlowProvider import FlowProvider # noqa
from .KhipuProvider import KhipuProvider # noqa

# from .KhipuProvider import KhipuProvider # noqa
# from .PaykuProvider import PaykuProvider # noqa

__all__ = ["FlowProvider"] # noqa
__all__ = ["FlowProvider", "KhipuProvider"] # noqa
16 changes: 15 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,24 @@ y este proyecto se adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.
- Transbank WebPayPlus
- Transbank OnePay

## [2024.12.3b]

- Tests: Khipu
- Documentacion: Guias de Instalación

## [2024.12.2a]

- Tests: Flow
- Provider: Khipu

## [2024.12.1]

- Provider: Flow

## [2024.9.29]

- Cambios en Documentacion
- Nuevos providers para: **Flow, Khipu, Payku**
- Nuevos providers estructura base

## [2024.9.23]

Expand Down
1 change: 1 addition & 0 deletions docs/api-flowprovider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: django_payments_chile.FlowProvider
1 change: 1 addition & 0 deletions docs/api-khipuprovider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: django_payments_chile.KhipuProvider
53 changes: 2 additions & 51 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,60 +4,11 @@ Este documento proporciona una visión general de los diferentes proveedores de

Para obtener detalles sobre cada proveedor, consulte los siguientes enlaces:

- [FlowProvider](flow-provider.md)
- [KhipuProvider](khipu-provider.md)
- [FlowProvider](api-flowprovider.md)
- [KhipuProvider](api-khipuprovider.md)
- [KlapProvider](klap-provider.md)
- [KushkiProvider](kushki-provider.md)
- [OneclickProvider](oneclick-provider.md)
- [PagofacilProvider](pagofacil-provider.md)
- [PaykuProvider](payku-provider.md)
- [WebpayProvider](webpay-provider.md)

Cada enlace lo llevará a una documentación detallada sobre la implementación y uso de ese proveedor específico.

## FlowProvider

El FlowProvider es una implementación para integrar la pasarela de pagos Flow en django-payments-chile.

### Métodos principales

- `__init__(self, **kwargs)`: Inicializa el proveedor con las configuraciones necesarias.
- `get_form(self, payment, data=None)`: Retorna el formulario para iniciar el proceso de pago.
- `process_data(self, payment, request)`: Procesa los datos recibidos de Flow después de un pago.

#### Configuración

Para utilizar FlowProvider, añada la siguiente configuración a `PAYMENT_VARIANTS` en su archivo `settings.py`:

```python
PAYMENT_VARIANTS = {
"flow": ("django_payments_chile.FlowProvider", {
"api_key": "su_api_key",
"api_secret": "su_api_secret",
"api_endpoint": "sandbox", # Cambie a "live" para producción
"api_medio": 9, # 9 indica todos los medios de pago
})
}
```

#### Uso

Para crear un pago utilizando FlowProvider:

```python
from django_payments import get_payment_model

Payment = get_payment_model()
payment = Payment.objects.create(
variant='flow', # Debe coincidir con la clave en PAYMENT_VARIANTS
amount=1000,
currency='CLP',
description='Descripción del pago'
)
```

Consulte la [documentación de Flow](https://www.flow.cl/docs) para más detalles sobre la integración y opciones disponibles.

## API

::: django_payments_chile.FlowProvider
156 changes: 156 additions & 0 deletions docs/guia-django.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
# Guía para configurar Django con django-payments y django-payments-chile

Esta guía está diseñada para ayudarte a integrar **django-payments** y **django-payments-chile** en una aplicación Django ya funcional que no necesariamente tiene un modulo de pago.

---

## Instalación de dependencias

Dentro de tu proyecto Django, debes usar el administrador de paquetes que mas de guste, esta aplicacion se encuenta publicada en PyPi.

Con `pip`:

```bash
pip install django-payments django-payments-chile
```

Con `poetry`:

```bash
poetry add django-payments django-payments-chile
```

### Crear una aplicación para pagos

Luego utiliza el siguiente comando para crear la aplicación de pagos:

```bash
python manage.py startapp pagos
```

La aplicación `pagos` se utilizará para integrar y extender las funcionalidades de django-payments y django-payments-chile.

---

## Configuración de Django-Payments

### 1. Agregar aplicaciones al archivo `settings.py`

En el archivo de configuración principal de tu proyecto Django, agrega las aplicaciones necesarias:

```python
INSTALLED_APPS = [
...
"payments",
"pagos",
...
]
```

### 2. Configurar los parámetros necesarios

Agrega las configuraciones clave en tu archivo `settings.py`:

```python
PAYMENT_HOST = 'tu-tienda.cl' # Cambia esto por el dominio de tu aplicación
PAYMENT_USES_SSL = True # Es recomendable habilitar TLS para mayor seguridad
PAYMENT_MODEL = 'pagos.models.Payment' # Modelo extendido para pagos

PAYMENT_VARIANTS = {
"klap": (
"django_payments_chile.KlapProvider",
{
"api_key": "KLAP_KEY",
"api_secret": "secret",
}
)
}
```

### 3. Configurar URLs

Incluye las rutas de django-payments en el archivo de rutas principales de tu proyecto o en un archivo específico como `pagos/urls.py`:

```python
from django.urls import include, path

urlpatterns = [
...
path('payments/', include('payments.urls')),
...
]
```

---

## Crear un modelo extendido para Django-Payments

Django-Payments requiere un modelo que extienda la clase base `BasePayment`.

```python
from decimal import Decimal
from django.urls import reverse
from payments import PurchasedItem
from payments.models import BasePayment

class Payment(BasePayment):
def get_failure_url(self) -> str:
return reverse('payment_failure', kwargs={'pk': self.pk})

def get_success_url(self) -> str:
return reverse('payment_success', kwargs={'pk': self.pk})
```

Este modelo maneja las URLs para redirigir a los usuarios después de un pago exitoso o fallido utilizando rutas nombradas en lugar de construir URLs manualmente.

---

## Crear vistas para manejar éxito y fallos de pago

Es necesario crear vistas que gestionen las respuestas después de un pago exitoso o fallido. Estas vistas se pueden definir dentro de la aplicación `pagos`:

### Ejemplo de vistas

```python
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from pagos.models import Payment

def payment_success(request, pk):
pago = get_object_or_404(Payment, pk=pk)
return HttpResponse(f"El pago con ID {pago.pk} fue exitoso. Gracias por tu compra.")

def payment_failure(request, pk):
pago = get_object_or_404(Payment, pk=pk)
return HttpResponse(f"El pago con ID {pago.pk} no pudo completarse. Por favor, intenta nuevamente.")
```

### Configurar las rutas para las vistas

Agrega las rutas correspondientes en el archivo `pagos/urls.py`:

```python
from django.urls import path
from . import views

urlpatterns = [
path('success/<int:pk>/', views.payment_success, name='payment_success'),
path('failure/<int:pk>/', views.payment_failure, name='payment_failure'),
]
```

Finalmente, incluye estas rutas en las rutas principales del proyecto:

```python
from django.urls import include, path

urlpatterns = [
...
path('pagos/', include('pagos.urls')),
...
]
```

---

Con esta configuración, tu aplicación estará lista para manejar los flujos de éxito y fallo en los pagos, integrando **django-payments** y **django-payments-chile** de manera efectiva.
7 changes: 7 additions & 0 deletions docs/guia-introduccion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Guias de Uso

Acá encontraras algunos implementaciones para que puedas ayudarte.

- Tengo una aplicacion en Django y quisiera instalar django-payments y django-payments-chile para configurar Klap.
- Ya tengo una tienda en Django con django-payments y quisiera agregar django-payments-chile para agregar Flow a mis opciones de pago.
- Tengo una tienda en Shopify y quisiera saber de que se trata esto.
1 change: 1 addition & 0 deletions docs/guia-tienda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Guia Tienda
Loading

0 comments on commit 41c3816

Please sign in to comment.