Todavía usamos checkout.js para implementar el pago rápido de Paypal. Los pasos que hay son:
Ahora queremos migrar al SDK de JavaScript. Según esto: https://developer.paypal.com/docs/checkout/standard/upgrade-integration/ los pasos ahora son:
Por razones legales, necesitamos que Paypal redirija al usuario de regreso a la tienda donde puede hacer clic en "comprar ahora", como se hace con checkout.js. ¿Cómo podemos implementar estos 6 pasos con el SDK de JavaScript de Paypal en lugar de 4? No pude encontrar ningún ejemplo que lo hiciera.
Ejecutar es terminología v1/pagos y checkout.js; con el SDK de JS actual y v2/checkout/orders se llama "capturar" en su lugar.
El usuario que hace clic en "Pagar ahora" no captura inmediatamente el pago al final de PayPal, sino que llama a la función onApprove que proporciona para realizar la captura. Esa función puede mostrar primero cualquier mensaje que necesite mostrar, incluida la actualización del DOM de la página con la información de confirmación final o, si es necesario, usar JS para redirigir a una nueva página de confirmación.
Cuando se da la confirmación de pago final, lo que debe hacer es capturar el pago, utilizando actions.order.capture (del lado del cliente) o una llamada a la API del lado del servidor.
[Siempre se recomienda una integración del lado del servidor y, en ese caso, la función createOrder también debería estar llamando a una ruta del servidor... vea la demostración del código ]
Finalmente, es necesario un cambio de verborrea para mostrar el texto del botón correcto cuando va a haber un paso de confirmación. De forma predeterminada, con el SDK de JS, el botón final dentro del flujo de aprobación de PayPal dice "Pagar ahora". Si va a recibir un mensaje de confirmación y una acción de usuario requerida antes de capturar, ese botón debe cambiar para decir "Continuar" para indicar que necesita un paso adicional. Para cambiarlo, incluya el parámetro de cadena de consulta &commit=false en la línea SDK. Además de la cadena de consulta, cualquier llamada a la API del lado del servidor para crear un pedido debe establecer "user_action": "CONTINUE" en el objeto application_context . (tenga en cuenta que este objeto pertenece a la jerarquía superior del JSON de solicitud de creación de pedido, no dentro de una unidad de compra)