Como permitir que o cliente altere as informações do seu cartão de crédito

Um problema com o qual tenho lutado é como permitir que o cliente altere as informações do seu cartão de crédito. Na última vez que isso aconteceu, acabei cancelando a assinatura deles e pedi que fizessem uma nova. Finalmente, descobri como gerar um link para uma página do Stripe que permitirá que eles vejam o histórico de faturas, adicionem um método de pagamento e atualizem suas informações de faturamento (endereço de e-mail).

Gostaria de enviar um PR para o plugin de assinaturas para adicionar este link, mas não tenho as poucas horas que isso levaria neste momento, então aqui está como fazer manualmente em Rails:

user = User.find_by_username('=USERNAME=');
sub=DiscourseSubscriptions::Customer.where(user_id: user.id).first;

Stripe.api_key = SiteSetting.discourse_subscriptions_secret_key
session=Stripe::BillingPortal::Session.create({
  customer: sub.customer_id,
  return_url: '=SITE_URL=/my/billing/subscriptions',
});
puts session.url

Aqui está a documentação:

e Stripe Login | Sign in to the Stripe Dashboard permitirá que você gere um link que eles podem visitar e colar um endereço de e-mail.

9 curtidas

Não percebi que essa funcionalidade estava faltando no Discourse Subscriptions, mas este é um recurso indispensável.

2 curtidas

Sim, eu também não percebi isso. Isso parece urgente.

1 curtida

Incrível! Onde este código deve ser adicionado?

1 curtida

Olá, você pode detalhar o código que você forneceu e como usá-lo?

Também preciso que meus usuários possam acessar este portal do Stripe porque legalmente preciso fornecer a eles uma fatura que não é enviada quando uma assinatura é criada via API:

A solução alternativa que encontrei foi usar o Custom Hamburger Menu Links Theme Component e adicionar um link para o portal do Stripe. Funciona, mas não é ideal para os usuários que precisam acessá-lo por meio de um link por e-mail.

1 curtida

Você precisaria colocá-lo em um plugin que gerasse o link e o adicionasse ao serializador e, em seguida, colocasse esse link em algum lugar na UX. Não é algo para o qual eu tenha tido tempo. Isso funcionaria a partir do console do Rails, mas isso não lhe adianta muito.

Parece que o código ainda funciona.

A coisa fácil a fazer seria fazer um fork do plugin e adicionar o código. A coisa mais difícil, mas muito melhor, seria adicionar o código e os testes de forma que ele fosse aceito como um PR. Se você tiver um orçamento, pode postar em Marketplace ou entrar em contato comigo diretamente. Um meio-termo seria criar um plugin que, digamos, adicionasse o link ao serializador para que você pudesse então colocá-lo em algum lugar na UX, como no menu hambúrguer, como você está fazendo agora.

2 curtidas

Obrigado pela sua resposta e explicação. Infelizmente, não tenho experiência com desenvolvimento de plugins e só consigo fazer algumas modificações leves em html/css, talvez alguns comandos no console do rails, se necessário.

Acho que vou ficar com a minha solução alternativa por enquanto. Também adicionarei o link para o Stripe Portal sempre que possível, quando o usuário assinar (Admin > Personalizar > Texto).

2 curtidas

Esse link tem tempo limitado, então acho que a maneira de fazer isso seria adicionar uma rota que faça um redirecionamento. Isso evitaria a complicação de saber quando obter um novo link e de fazer várias chamadas desnecessárias para obter um link que nunca será clicado.

Ainda é um plugin, mas acho que seria um PR muito mais simples.

1 curtida

Ah, acho que não estamos falando do mesmo link… Você provavelmente está falando do link gerado a partir do código que você forneceu. Eu estou falando do link do portal do cliente sem código que posso ativar no painel do Stripe. Acredito que este seja válido enquanto o portal estiver ativado.

Sim. Se bem me lembro, meu código apenas os impede de inserir seu endereço de e-mail e obter o link para si mesmos por e-mail (e saber qual endereço de e-mail eles usaram). Se isso for bom o suficiente, então você está pronto.

Notavelmente, isso parece ser suportado agora diretamente no plugin:


3 curtidas

De fato! E isso é uma grande ajuda (e é uma grande parte do motivo pelo qual não fiz nada sobre o link mágico). No entanto, isso não resolve o problema de obter acesso ao seu histórico de pagamentos e links para faturas.

3 curtidas