Mudança para Assinaturas Discourse de Assinaturas WordPress

Continuando a discussão de Discourse Subscriptions

À 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:

  1. Criar assinaturas no Stripe
  2. Vincular a assinatura do Stripe ao usuário no Discourse
  3. 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.

Mais informações da Stripe sobre migrações.

(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

Esta parte é descrita aqui.


Estou travado tentando descobrir se o item #2 pode ser feito e adoraria saber se alguém já fez essa mudança.

A tarefa rake subscriptions:import pode ser expandida ou outra tarefa adicionada para também importar e vincular as assinaturas dos usuários?

4 curtidas

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 :smiley: 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:

DiscourseSubscriptions::Customer.create(
    user_id: <user id>,
    customer_id: <stripe customer id>
    product_id: <stripe product id>
  )
4 curtidas

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.

2 curtidas

Vou adicionar a extensão da tarefa rake à minha lista, mas, como mencionei, ainda tenho uma fila de tarefas bastante longa para concluir!

Sim, seria. O Ruby pode ler um arquivo CSV e iterar sobre seu conteúdo, então isso seria perfeitamente viável.

2 curtidas

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.

2 curtidas

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).

4 curtidas

Muito obrigado, Jay :hugs:

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.

3 curtidas

À primeira vista, parece que o Stripe tem um endereço de e-mail, então a pegadinha será que eles terão um endereço de e-mail diferente no Discourse…

4 curtidas

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.

3 curtidas

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.

1 curtida

O meu ainda está no modo "a fazer". Outros projetos parecem interferir e ter prioridade. O @pfaffman provavelmente tem alguma orientação.

2 curtidas