Pregunta ¿Se genera el evento customer.subscription.updated cuando se renueva una suscripción?


Estoy confundido acerca de por qué la documentación de Stripe sugiere la customer.subscription.updated El evento no se dispara cuando creo que debería:

  • Una raya subscription objeto tiene las propiedades current_period_start y current_period_end que se actualizará siempre que el cliente pague con éxito las facturas de una suscripción ( https://stripe.com/docs/api#subscriptions )
  • La documentación para el customer.subscription.updated evento dice que ...

    Ocurre cada vez que cambia una suscripción. Los ejemplos incluirían cambiar de un plan a otro, o cambiar de estado de prueba a activo.

    ... lo que implicaría que el evento sería levantado si el current_period_start y current_period_end Los valores cambian, pero no afirma si lo hace o no lo hace en este caso.

    Sin embargo, esta página web de terceros indica que no se genera cuando se realiza una renovación exitosa ( https://www.masteringmodernpayments.com/stripe-webhook-event-cheatsheet#8 )

  • Pero elevar el evento tiene sentido ...

  • Y ciertamente si las aplicaciones solamente necesario para monitorear un solo tipo de evento (es decir, customer.subscription.updated) entonces simplificaría enormemente el código del programa sin necesidad de monitorear también invoice.payment_succeeded, invoice.created y charge.succeeded.
  • Sin embargo, la documentación para el Ciclo de Vida de la Suscripción ( https://stripe.com/docs/subscriptions/lifecycle ) no hace absolutamente ninguna mención de la customer.subscription.updated evento en absoluto.

Simplemente parece extraño que un evento tan apropiado no se plantee cuando debería ser. La documentación tampoco dice cuándo current_period_end y current_period_start Los valores se actualizan, lo que limita su utilidad.

Entonces en mi aplicación, después de recibir un invoice.payment_succeeded evento, ¿cómo puede mi código de programa determinar cuándo finalizará el período de suscripción del cliente?


5
2017-10-11 08:12


origen


Respuestas:


He verificado que customer.subscription.updated  se llama cuando finaliza el período de facturación.

Para hacer esto, intercepté todos los webhooks que se producen al final del período (FYI: utilicé una función AWS Lambda que recibe los eventos de una puerta de enlace de la API de AWS, luego los pone en una cola SQS :))

Estoy de acuerdo que la documentación de Stripe Para el customer.subscription.updated El evento podría ser más claro y podría cubrir este caso de uso diciendo ...

Se produce cada vez que una suscripción cambia. Ejemplos incluirían   cuando finaliza el período de facturación y comienza un nuevo período de facturación, cuando   cambiar de un plan a otro, o cambiar de estado de prueba a   activo.

(Para su información: ignoraría por completo el sitio web de las hojas de seguridad. Solo hacen referencia fugaz a customer.subscription.updated - En el paso 8, están describiendo (mal) el caso de uso de "Crear un cliente con un plan sin una prueba" que no crearía un customer.subscription.updated evento porque este evento solo ocurre cuando la suscripción se actualiza, no cuando se crea. Donde hacen referencia customer.subscription.updated está en el contexto del Paso 12 "El intento de carga de la factura falla")

En defensa de la documentación de Stripes sobre el ciclo de vida de una suscripción, dice "la siguiente imagen muestra el ciclo de vida de una suscripción". eventos mas importantes eso ocurre "y yo diría customer.subscription.updated no es un importante Evento en el contexto de la creación de facturas y pagos.

Algunos detalles sobre cómo Stripe maneja el final de un período:

  • En mi prueba, Stripe levantó la customer.subscription.updated evento aproximadamente 2 minutos después de la marca de tiempo en la propiedad current_period_end en la suscripción. El evento tiene dos objetos de datos asociados con él. El primero es la suscripción con los nuevos valores. El segundo es un previousAttributes objeto con los dos anteriores current_period_start y current_period_end valores.

  • Dos eventos fueron generados simultáneamente: customer.subscription.updated y invoice.created (Esta fue la factura del período que acababa de transcurrir).

  • Alrededor de una hora después de la creación de la factura, se generaron tres eventos simultáneamente: invoice.payment_succeeded, charge.succeeded y invoice.updated.

La forma en que trata la renovación de un período de facturación en comparación con el estado de pago de una factura depende realmente de usted y depende mucho de su tipo de aplicación. Esa es la belleza de la API Stripe (y es una cosa de belleza).

En mi caso, trato la renovación de un período de facturación por separado al estado de pago de una factura. A mi aplicación le preocupa cuándo se agota el período de facturación y actualiza el uso en función de esto, pero las fallas de pago generan alertas y se gestionan fuera de línea.

En resumen, usted poder utilizar customer.subscription.updated para saber cuándo ha cambiado el período de facturación.


7
2018-03-03 11:01



customer.subscription.updated se activa cuando current_period_start y current_period_end cambio. Estos representan el período de facturación.

Cuando invoice.payment_succeeded sucede, es allí donde debe actualizar la información de su lado (por ejemplo: Periodo de suscripción) https://stripe.com/docs/subscriptions/guide#step-3-sync-with-your-site

También más información aquí: https://support.stripe.com/questions/what-events-can-i-see-when-a-subscription-is-renewed


0
2017-10-14 22:08