Flujo de trabajo de pedido de API REST de PayPal: Pago -> Venta -> Webhook?

Estoy tratando de integrar la API REST de PayPal en mi aplicación web Symfony 2, pero me resulta difícil entender cómo se ve exactamente el flujo de trabajo completo:

losDocumentos de PayPal describa los siguientes pasos para aceptar un pago. Uno puede usar elZona de juegos de PayPal para simular estos pasos:

Obtén un token de accesoCrear a Payment objeto consultando la APIRedireccionar al usuario aapproval url recibido en elPayment respuestaDespués de que el usuario aprobó el pago en la página de PayPal, se lo redirige a mi página, utilizando el enlace de éxito definido enPayment objeto. Use la información recibida paraejecutar el pago.El pago se completa con el estadoapproved

De los documentos: Una vezpago está completo, se conoce comorebaja. Luego puede buscar la venta y reembolsarla.

Hasta aquí todo bien. PERO: ¿Dónde se usan / disparan los Webhooks en este flujo de trabajo? He definido un webhook comodín (que acepta todos los eventos posibles) en el Panel de desarrollo de PayPal.

Mi observación es que mi sistema recibe el evento Webhook1-2 minutos (!) después el usuario fue redirigido de nuevo al enlace de éxito ydespués de que se ejecutó el pago (Paso 4).

Además de este largo retraso entre la ejecución del pago y la recepción del Webhook, este flujo de trabajo significa que solo recibo el WebhookDESPUÉS manejo del enlace de éxito.Esto significa que manejar el enlace de éxito es absolutamente necesario para completar el pago. ¿Es esto correcto?

¿Necesito usar Webhooks?

Ya preguntéesta pregunta unos días antes y la respuesta de nifr es bastante razonable: no se puede confiar en que el usuario siga ninguna URL de redireccionamiento, sino que solo debe confiar en los eventos de Webhook.

Sin embargo, esto choca con las observaciones que describí anteriormente, ya que nunca recibiré el Webhook sin manejar la URL de redireccionamiento ...

Entonces, manejando elPAYMENT.SALE.COMPLETED El evento webhook no tiene mucho sentido, ya que esto ya debería hacerse al manejar la URL de redireccionamiento.¿Correcto?

Sin embargo, para manejar actualizaciones sobre pagos pendientes, manejar reembolsos o pagos revertidos, etc. solo es posible escuchando esos eventos.

Entonces la respuesta es: solo use Webhooks para obtener actualizaciones sobre los pagos realizados antes. ¿Correcto?

Entonces, las preguntas principales son:

El proceso de 5 pasos para aceptar pagos no dice nada sobre el uso de Webhooks. Esto no parece tener mucho sentido, porque sin Webhooks uno perdería eventos de actualización, etc.Entonces, ¿es realmente posible implementar el flujo de trabajo de pago completo sin Webhooks?En caso afirmativo,¿Cómo se manejan las actualizaciones (reembolsos, pendientes, etc.) en este caso?Si no,¿Cuál es la estrategia / el tiempo correcto para cumplir con el pedido, ya que lleva bastante tiempo recibir y manejar completamente el webhook?

Respuestas a la pregunta(1)

Su respuesta a la pregunta