PayPal Servidor, Procesar la orden Python/Django 29

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

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')

- 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.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.

!Cursos desde!

10$

En Udemy

Quedan 3d 17:40!


Udemy

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
¡Hazte afiliado en Gumroad!