payment gateway - tienda - Stripe: cómo gestionar la suscripción con un plan gratuito y no se requiere tarjeta de crédito en el momento del registro.
stripe tutorial (1)
Empezamos a implementar Stripe on Redsmin (uno de nuestro proyecto) y creo que nos hemos perdido algo. Así es como funciona:
Para usar nuestro producto, el usuario debe seleccionar un plan (gratis, s, m, xl, xxl ...) luego ingrese su nombre de usuario / contraseña y luego es bueno ir por una prueba gratuita de 30 días. Cuando el usuario envía el formulario, nuestro servidor llama a Stripe create_customer con el plan especificado y sin tarjeta de crédito (porque queremos ofrecer 30 días gratis sin necesidad de tarjeta de crédito) y actualizamos el modelo de usuario de nuestro lado con el
customer_id
y elsubscription_id
devueltos .Configuramos un webhook para recibir eventos de banda, por lo que después de 30 días nuestro webhook debería recibir un evento
customer.subscription.updated
con unobject.status == active
. ¿Estoy en lo cierto?Sin embargo, dado que no especificamos una tarjeta asociada para el usuario en el momento de la
object.status == unpaid
, debemos recibir rápidamente después de otro eventocustomer.subscription.updated
conobject.status == unpaid
¿object.status == unpaid
? Luego, de nuestro lado, desactivamos la cuenta de usuario y la forzamos para ir a la página de selección de nuestro plan.A partir de ese momento, el usuario puede seleccionar el plan gratuito o uno de nuestro plan premium:
#Scenario 1 Si el usuario selecciona el plan gratuito, simplemente reactivamos su cuenta de nuestro lado y no hacemos nada más porque configuramos el plan gratuito en franja a un costo de 0 $. ¿Implementamos el proceso correcto con nuestro plan gratuito? ¿Hay mejores formas?
#Scenario 2 Si el usuario selecciona un plan premium, lo redirigiremos a un formulario de tarjeta de crédito, que luego será enviado a Stripe, y actualizamos la cuenta de cliente de stripe con el token de tarjeta temporal. ¿Qué deberíamos hacer ahora? :
- ¿Deberíamos esperar a que Stripe nos envíe un evento? Si es así, ¿qué evento?
customer.subscription.updated
?charge.succeeded
? ¿Cuál será el valor deobject.status
entonces? - ¿Deberíamos reactivar directamente la cuenta de usuario de nuestro lado y esperar una confirmación de la banda? Si es así, ¿cuál sería el nombre del evento y los datos que deberíamos esperar?
- ¿Deberíamos esperar a que Stripe nos envíe un evento? Si es así, ¿qué evento?
En la parte 2 donde haces esto:
Configuramos un webhook para recibir eventos de banda, por lo que después de 30 días nuestro webhook debería recibir un evento customer.subscription.updated con object.status == active ¿Estoy en lo cierto?
También podría considerar implementar el webhook customer.subscription.trial_will_end
, este webhook se enviará tres días antes de que finalice la prueba de los clientes y le permitirá enviar al cliente una notificación para actualizar su información de pago.
De esta forma, si el usuario decide ir y actualizar su información de pago, Stripe podrá realizar el pago en cuanto finalice la prueba de los clientes y podrán continuar utilizando su servicio sin interrupción.
#Scenario 1 Si el usuario selecciona el plan gratuito, simplemente reactivamos su cuenta de nuestro lado y no hacemos nada más porque configuramos el plan gratuito en franja a un costo de 0 $. ¿Implementamos el proceso correcto con nuestro plan gratuito? ¿hay mejores formas?
Hasta donde yo sé, esta es la mejor manera de implementar planes gratuitos usando Stripe; probablemente solo me aseguraría de que a los clientes no se les enviaran facturas a menos que fuera necesario. Dudo que los usuarios esperarían recibir una factura por cada período de facturación si usaban un plan gratuito.
#Scenario 2 Si el usuario selecciona un plan premium, lo redirigiremos a un formulario de tarjeta de crédito, que luego se enviará a Stripe y actualizaremos la cuenta de cliente de stripe con el token de tarjeta temporal. ¿Qué debemos hacer ahora ?:
- ¿Deberíamos esperar a que Stripe nos envíe un evento, de ser así, qué evento? customer.subscription.updated? cargo.succeeded? ¿Cuál será el valor de object.status entonces?
- ¿Deberíamos reactivar directamente la cuenta de usuario de nuestro lado y esperar una confirmación de la banda? Si es así, ¿cuál sería el nombre del evento y los datos que deberíamos esperar?
Una vez que el usuario haya seleccionado un plan y actualizado su información de pago, activaría su cuenta de inmediato, siempre que la respuesta a la actualización de suscripción de Stripe haya sido exitosa.
Siempre que haya configurado sus preferencias de suscripción desde su panel Stripe, podrá permitir que Stripe maneje lo que hará si falla el pago. Solo asegúrese de implementar el webhook customer.subscription.updated
ya que este será el webhook que Stripe le enviará si marca una suscripción como no pagada o cancelada, lo que le permite actualizar sus propios registros en consecuencia.