ed92991872
Agent-Logs-Url: https://github.com/dsaub/proyecto-final/sessions/49df17c8-213a-4e23-adfe-465a0104f6a3 Co-authored-by: dsaub <54474838+dsaub@users.noreply.github.com>
1.9 KiB
1.9 KiB
create_paypal_payment
Archivo: tienda/views.py
URL: /tienda/paypal/crear/
Tipo: Vista privada (requiere autenticación)
Método HTTP: Solo POST
Decorador: @login_required
Descripción
Crea un pago en PayPal y devuelve la URL de aprobación al frontend para redirigir al usuario. Sigue un flujo similar a create_checkout_session pero usando la SDK de PayPal REST.
El proceso es:
- Obtiene y valida la dirección de envío seleccionada.
- Verifica el carrito y el stock.
- Crea una reserva de stock atómica.
- Configura PayPal SDK con las credenciales del entorno.
- Construye la lista de items con precios IVA incluido.
- Crea el pago en PayPal y guarda el
payment_iden la sesión. - Devuelve la URL de aprobación de PayPal.
Firma
def create_paypal_payment(request: HttpRequest):
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
request |
HttpRequest |
Petición HTTP de Django. |
Cuerpo de la petición (JSON o form-data)
| Campo | Descripción |
|---|---|
shipping_address_id |
ID de la dirección de envío seleccionada. |
Respuesta exitosa
{ "redirect": "https://www.paypal.com/checkoutnow?token=..." }
Respuestas de error
| Código | Descripción |
|---|---|
| 400 | Carrito vacío, stock insuficiente, sin dirección, error de PayPal. |
| 405 | Método no permitido. |
| 500 | SDK de PayPal no instalado u otro error interno. |
Note
Requiere que
paypalrestsdkesté instalado y las variablesPAYPAL_MODE,PAYPAL_CLIENT_IDyPAYPAL_CLIENT_SECRETestén configuradas ensettings.py.