A medida que el complemento Suscripciones de Discourse madura, quiero comenzar a planificar la migración de mis membresías existentes desde Suscripciones de WooCommerce a Suscripciones de Discourse. El proceso a continuación debería aplicarse a otros complementos de membresía/suscripción de WordPress, no solo a WooCommerce.
Hay tres elementos de esta transición que deben abordarse:
Crear suscripciones en Stripe
Vincular la suscripción de Stripe al usuario en Discourse
Invertir el SSO para que Discourse sea el proveedor de SSO y WordPress el cliente
(1) Crear suscripciones en Stripe
Parece que, por el momento, crear suscripciones en Stripe para usuarios existentes es un proceso manual. Mis miembros ya están en Stripe, por lo que el flujo de trabajo sería algo así:
Exportar todos los suscriptores y datos desde Suscripciones de WooCommerce.
Crear una suscripción en Stripe para un usuario desde el panel de control de clientes de Stripe y programar el primer pago para que coincida con la fecha de vencimiento de la suscripción existente de WooCommerce.
Cancelar la suscripción del usuario en WooCommerce.
Desactivar Suscripciones de WooCommerce cuando se haya terminado con todos los usuarios.
(2) Vincular la suscripción de Stripe al usuario en Discourse
Una vez que el usuario esté configurado con una suscripción en Stripe, ¿cómo podemos agregar a este usuario existente a un plan de suscripción en Discourse? Esto es necesario para dar al usuario la capacidad de cancelar la suscripción y eliminar al usuario del grupo si el pago de Stripe falla.
(3) Invertir el SSO para usar Discourse como proveedor y WP como cliente
Sí, esto no es algo que el plugin pueda resolver directamente; sin embargo, si tienes conocimientos de programación, podrías usar la API de Stripe para automatizar parte del proceso. Si no, el método manual podría ser la única opción.
Solo para asegurarme de entender tu problema: ¿has creado las suscripciones en Stripe y ahora quieres retroalimentar el acceso en Discourse? ¿Es eso correcto?
Creo que debería haber una manera de hacer esto mediante la tarea rake, pero lamentablemente no podré abordarlo pronto. Sin embargo, sería una excelente oportunidad para una contribución Tendrías que crear un registro DiscourseSubscriptions::Customer con toda la información adecuada y luego agregar el usuario al grupo.
Incluso podrías ejecutar esto manualmente desde la consola:
DiscourseSubscriptions::Customer.create(
user_id: <id del usuario>,
customer_id: <id de cliente de Stripe>,
product_id: <id de producto de Stripe>
)
Sí. Esto ocurrirá una vez completados los pasos del punto (1), cuando se asigne una nueva suscripción al cliente en Stripe.
El cliente ya existe en Stripe (en mi caso) porque WooCommerce Subscriptions crea un cliente en Stripe al realizar una compra de membresía, por lo que los datos relevantes ya están presentes, incluida la información de la tarjeta de crédito.
¿Se podría alimentar esto con un archivo CSV en lugar de hacerlo uno por uno?
Creo que esto será un gran obstáculo para cualquier comunidad establecida basada en membresías; por lo tanto, solo lo adoptarán las comunidades nuevas.
Perfecto, gracias, Justin. Lo entiendo y espero con interés los futuros desarrollos. Planeo hacerlo como un proyecto de invierno, ya que de todos modos requeriría muchos pasos manuales.
¡Felicidades, Justin! ¡Este es un logro enorme! Empecé a probarlo ayer y no puedo esperar a empezar a usarlo. También comenzaré a buscar formas de ayudar en la migración de personas desde cosas como WooCommerce. En este momento no está claro si podría ser una tarea de rake “simple” (¡ja!) o si será más como una migración de foros en la que cada trabajo es único (espero que sea lo segundo).
El truco consistirá en obtener la información del cliente desde Stripe y colocarla en la tabla Customer del plugin, para luego hacer la correspondencia. A partir de ahí, básicamente solo se trata de agregar la membresía al grupo. Pero probablemente tengas razón en que cada caso será único.
A primera vista parece que Stripe tiene una dirección de correo electrónico, así que el truco será que tendrán una dirección de correo electrónico diferente en Discourse…
Además de la dirección de correo electrónico, Stripe y WooCommerce Subscriptions también comparten el ID del cliente: cus_ABCdefxyz, el ID de la tarjeta: src_1234ABxyzasdf y el ID de la transacción: ch_0123ABCDefgh.
Si no recuerdo mal, PMPro también comparte los mismos datos.
En mi opinión, la mejor opción es exportar una tabla desde ambas aplicaciones, verificar que coincidan en una hoja de cálculo y luego utilizar ese archivo CSV como fuente.
Tengo curiosidad por saber si esto funcionó. Estoy buscando ayudar a un cliente a migrar desde MemberPress y parece que necesitaré hacer algo similar. Me encantaría aprender de cualquiera que haya intentado algo parecido.