À medida que o plugin Discourse Subscriptions amadurece, quero começar a planejar a migração das minhas assinaturas existentes do WooCommerce Subscriptions para o Discourse Subscriptions. O processo abaixo deve se aplicar a outros plugins de assinatura/membro do WordPress, não apenas ao WooCommerce.
Há três elementos dessa transição que precisam ser abordados:
Criar assinaturas no Stripe
Vincular a assinatura do Stripe ao usuário no Discourse
Reverter o SSO para que o Discourse se torne o provedor de SSO e o WordPress o cliente
(1) Criar assinaturas no Stripe
Parece que criar assinaturas no Stripe para usuários existentes é atualmente um processo manual. Meus membros já estão no Stripe, então o fluxo seria algo assim:
Exportar todos os assinantes e dados do WooCommerce Subscriptions
Criar uma assinatura no Stripe para um usuário a partir do painel do cliente no Stripe e agendar o primeiro pagamento para coincidir com a data de expiração da assinatura existente do WooCommerce.
Cancelar a assinatura do usuário no WooCommerce.
Desativar o WooCommerce Subscriptions quando todos os usuários forem processados.
(2) Vincular a assinatura do Stripe ao usuário no Discourse
Depois que o usuário for configurado com uma assinatura no Stripe, como podemos adicionar esse usuário existente a um plano de assinatura no Discourse? Isso é necessário para permitir que o usuário cancele a assinatura e remover o usuário do grupo caso o pagamento no Stripe falhe.
(3) Reverter o SSO para usar o Discourse como provedor e o WP como cliente
Fico muito feliz em ver que você está fazendo isso.
Sim, isso não é algo que o plugin conseguirá resolver, no entanto, você talvez possa usar a API do Stripe para automatizar parte disso, se tiver habilidades de programação. Caso contrário, o método manual pode ser o único caminho.
Só para confirmar o seu problema: você já criou as assinaturas no Stripe e quer preencher o acesso no Discourse posteriormente? É isso mesmo?
Acho que deve haver uma maneira de fazer isso por meio da tarefa rake, mas, infelizmente, não será algo que poderei resolver em breve. Seria pr-welcome, porém Você teria que criar um registro DiscourseSubscriptions::Customer com todas as informações apropriadas e, em seguida, adicionar o usuário ao grupo.
Você até pode executar isso manualmente no console:
Sim. Isso acontecerá após a conclusão das etapas de (1), quando o cliente no Stripe receber uma nova assinatura.
O cliente já existe no Stripe (no meu caso), pois o WooCommerce Subscriptions cria um cliente no Stripe com a compra de uma associação, então os dados relevantes já existem — incluindo as informações do cartão de crédito.
Seria possível fornecer um arquivo CSV em vez de fazer um por um?
Acho que isso será uma grande barreira para qualquer comunidade estabelecida baseada em associações; portanto, veremos apenas novas comunidades adotando essa solução.
Perfeito - obrigado, Justin. Entendo e aguardo com expectativa os desenvolvimentos futuros. Estou planejando isso como um projeto de inverno, pois de qualquer forma envolveria muitas etapas manuais.
Parabéns, Justin! Isso é uma conquista enorme! Comecei a brincar com ele ontem e mal posso esperar para começar a usá-lo. Também vou começar a explorar maneiras de ajudar na migração de pessoas vindas de plataformas como a WooCommerce. Ainda não está claro se será uma tarefa rake “simples” (haha!) ou se será mais parecida com uma migração de fórum, onde cada trabalho é único (espero que seja o último).
O desafio será obter as informações do cliente do Stripe e inseri-las na tabela Customer do plugin, fazendo a correspondência adequada. A partir daí, será basicamente adicionar a associação a grupos. Mas você provavelmente está certo ao dizer que cada caso será único.
Além do endereço de e-mail, o Stripe e o WooCommerce Subscriptions também compartilham o ID do cliente: cus_ABCdefxyz, o ID do cartão: src_1234ABxyzasdf e o ID da transação: ch_0123ABCDefgh.
Se não me engano, o PMPro também compartilha os mesmos dados.
Na minha opinião, a melhor abordagem é exportar uma tabela de ambos os aplicativos, confirmar que os dados coincidem em uma planilha e, em seguida, usar esse arquivo CSV como fonte.
Estou curioso para saber se isso funcionou. Estou pensando em ajudar um cliente a migrar do MemberPress e parece que precisarei fazer algo semelhante. Adoraria aprender com quem já tentou algo parecido.