Enviar ordenID generada por PayPal en el Cliente mediante JS al servidor de Django - 25

Una vez, generada el Orden ID y aprobada la orden por el cliente, el siguiente paso consiste en enviar la orden al servidor para su posterior aprobación.

Quedamos en que ya armamos la orden con el valor correspondiente con el precio que tiene que pagar el usuario y ya también estamos detectando cuando la misma fue aprobada es decir cuando fue aceptada:

mystore\elements\templates\partials\paypal.html

***
<script>
   paypal.Buttons(
       {
          ***
           onApprove: function(data, actions){
               console.log(data);
           }
       }
   ).render('#buttonPayPal');
</script>

Por el cliente aquí también puedes implementar otras como te indicaba por ejemplo on cancel ya eso depende de ti que sería cuando el usuario cierra el diálogo y  no realiza la compra para que hagas algo si quieres hacerlo pero yo no lo voy a hacer para ir un poco como quien dice directo al objetivo entonces qué vamos a implementar simplemente al menos de momento lo único que quiero hacer aquí sería abrir el de views y vamos a implementar un nuevo método para recibir la orden:

mystore\elements\views.py

def capture_payment(request, order_id):
   print(order_id)

   return ''

mystore\elements\urls.py

path('capture-payment/<str:order_id>', views.capture_payment, name='capture_payment'),

Pudieras colocarle PayPal lo que tú quieras al menos de momento no quiero como quien dice ser muy redundante porque por ejemplo si implementas alguna con strike por dar otra posible implementación entonces para que sea un poco más directo el mensaje ya que otra vez no vas a emplear este método para todas las pasarelas de pago que puedas implementar también sería bueno ya crearse una nueva aplicación pero  al menos de momento no quiero preocuparme por tantas cosas esto no sé dónde salió pero voy a querer imprimir algo claro aquí no puedo retornar como haría en otro framework tengo que retornar sí o sí algo de request un objeto si no esto me da un error.

Mediante javascript ya que sería justamente en on approve es decir cuando se aprueba enviamos allá para que haga la petición otra forma sería hacerlo mediante acos of fch pero como no viene tanto el caso no es algo así tampoco tan necesario y no estamos ganando mucho porque no voy a estar aquí haciendo la recarga de manera manual mediante javascript prefiero hacer una redirección completa windows location punto a ver si me acuerdo href aquí tenemos la ruta:

onApprove: function(data, actions){
    console.log(data);
    window.location.href = '/store/capture-payment/' + data.orderID;
}

 y pudiéramos mandarla a otro lado por ejemplo google.com que no es acá pero para probar colocamos acá y fíjate que redirecciona automáticamente a la página y qué es lo que queremos hacer Entonces dame chequear aquí una cosita para acá voy a ir a Store 1uiero ver esta ruta Okay es relativa vamos a ver qué tal queda aquí vamos a colocar Bueno ya tenemos aquí la función voy a probarla aquí rapidito en el PayPal voy a colocarlo aquí en el Script ahorita lo colocamos aquí dentro pero es para ir implementando y era por cierto Bueno ahorita no recuerdo eso nos faltó sacar el data.to orden ID creo que era entonces aquí colocamos la URL elements punto dos puntos order Perdón ya era capture payment capt Ah claro pero aquí no tenemos el ID Entonces no lo podemos generar de esta forma Porque no tenemos otra vez el ID tuviéramos que emplazar o algo entonces vamos a hacer aquí un hard code sería elementos cómo le colocamos aquí Store Okay esto no va entonces Store capture aquí tampoco le coloque nada capture payment si no no va a chocar con la de arriba esto no va y aquí le concatenando creo que era Esto justamente el Data orden ID si no de igual manera ahorita lo imprimimos acá Esto es lo que debería de ser de igual manera venimos acá rapidito debería dar un error porque no encuentra Data per a menos que vaya hasta allá perfecto ahí lo hizo Entonces nos traemos esto y lo colocamos acá y espero que sea orden ID para no hacer esto dos veces paso atrás Aquí está perfecto vamos a hacer la prueba rapidito A ver si llega hasta allá y aquí lo tenemos bueno casi perfecto pero no la encontró claro aquí la ruta le coloqué de tipo entero y eso no es un entero voy a colocarle est ya nos tardamos un poco más de la cuenta y aquí Perfecto aquí esto es seguramente porque no devuelve un objeto de request aquí es la respuesta pero otra vez ya vamos a eso pero podemos ver que se está llegando aquí vemos así que vamos a dejarlo hasta acá y en la siguiente clase continuamos con la implementación

Acepto recibir anuncios de interes sobre este Blog.

Vamos a pasar la ordenID de PayPal al servidor en Django.

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

) )