De hecho, estoy tratando de crear una aplicación que use Papal API v2.
Creo con éxito el pedido y obtengo dinero en sandbox. Utilizo el método onApprove de JS Paypal para llamar a order.capture para obtener el pedido y crear la suscripción en mis sistemas. Pero si hay algún problema en mi código del lado del servidor, ¿cómo puedo bloquear el pedido en la API de PayPal para dejar de recibir dinero del usuario si algo sale mal?
paypal.Buttons({ locale: 'it_IT', style: { shape: 'pill', color: 'blue', layout: 'vertical', label: 'buynow', fundingicons: 'true', }, createOrder: function (data, actions) { return actions.order.create(my_PlanOrderDef); }, onApprove: function (data, actions) { console.log(data) console.log(actions) return actions.order.capture().then(function (details) { if (!CloseProcess(details)) { console.log("FAIL! HERE SOMETHING GOING BAD ON MY LOGIC, AND I NEED TO CANCEL THE ORDER PAYMENT"); return false; } }); }, onError: function (err) { console.log(err); } }).render('#btnPaypalContainer');El método CloseProcess simplemente llama a mi lógica del servidor para crear una suscripción en mi sistema. Probablemente extraño algo en la lógica de paypal v2, así que disculpe, ¿alguna idea para realizar esta tarea?
Gracias
Cuando se crea un pedido, es válido durante 72 horas.
Cuando se aprueba un pedido, es válido durante 3 horas.
No existe ningún método para cancelar un pedido.
Si no desea utilizar una orden, descarte su id y no la capture.
Para cambiar a una integración del lado del servidor para la creación y captura de pedidos, siga la guía Configurar pagos estándar y realice 2 rutas en su servidor, una para 'Crear pedido' y otra para 'Capturar pedido', documentadas aquí . Ambas rutas deben devolver solo datos JSON (sin HTML ni texto). Dentro de la segunda ruta, cuando la API de captura es exitosa, debe almacenar los detalles de pago resultantes en su base de datos (particularmente purchase_units[0].payments.captures[0].id , que es el ID de transacción de PayPal) y realizar cualquier lógica comercial necesaria (como el envío de correos electrónicos de confirmación o la reserva de productos) inmediatamente antes de reenviar su JSON de devolución a la persona que llama en la interfaz.
Empareje esas 2 rutas con el flujo de aprobación de la interfaz: https://developer.paypal.com/demo/checkout/#/pattern/server