Files
proyecto-final/docs/views/create_paypal_payment.md
T

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:

  1. Obtiene y valida la dirección de envío seleccionada.
  2. Verifica el carrito y el stock.
  3. Crea una reserva de stock atómica.
  4. Configura PayPal SDK con las credenciales del entorno.
  5. Construye la lista de items con precios IVA incluido.
  6. Crea el pago en PayPal y guarda el payment_id en la sesión.
  7. 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 paypalrestsdk esté instalado y las variables PAYPAL_MODE, PAYPAL_CLIENT_ID y PAYPAL_CLIENT_SECRET estén configuradas en settings.py.