PayPal Servidor, Procesar la orden Python/Django 29

ya con nuestro token que en otras palabras es el token de acceso de PayPal segun lo implementado antes es algo así como el JSON WEB TOKEN de Django Rest Framework o similares en vez de estar pasándole el usuario contraseña le pasamos esto y se feliz ya con este token ya pudiéramos capturar o aprobar la orden como lo quieras llamar así que para esto vamos a crear aquí otro método que va a ser llamado como capture order o el nombre que tú quieras y por aquí le pasamos al self y el orden ID:

mystore\elements\views.py

class PayPalPayment:
   ***
   def capture_order(self, order_id):
       access_token = self.get_access_token()
       if not access_token:
           return {"error": "Could not get access token"}

       url = f"{self.base_url}/v2/checkout/orders/{order_id}/capture"
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}",
       }
       data = {
           "application_context": {
               "return_url": "<URL-RETURN>",
               "cancel_url": "<URL-CANCEL>",
           }
       }

       response = requests.post(url, json=data, headers=headers)

       return response.json()

Desde la vista, consumimos el método anterior, creando una instancia de la clase y en una vista, mostramos los datos relevantes que extraemos de la respuesta de Paypal:

mystore\elements\views.py

def capture_payment(request, order_id):

   paypal = PayPalPayment()
   res = paypal.capture_order(order_id)

   if res:
       return render(request,'elements/capture_payment.html', {'res': res, 
                                                               'id': res['id'], 
                                                               'status': res['status'], 
                                                               'price': res['purchase_units'][0]['payments']['captures'][0]['amount']['value']})    

   return render(request,'elements/error.html')

Acepto recibir anuncios de interes sobre este Blog.

Vamos a aprobar la orden de PayPal y cobrar los ingresos.

- Andrés Cruz

In english

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y Libro desarrollo web con Django 5 y Python 3 + integración con Vue 3, Bootstrap y Alpine.js.