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