Assinaturas com tabela de preços - resposta de cliente não encontrado

Olá pessoal! Estou com um problema e tenho tentado resolvê-lo há alguns dias, sem sucesso, então espero que alguém aqui possa ajudar :slight_smile:

Discourse 3.4.0.beta1-dev
Subscriptions 2.8.1 - f0b4984
Instalação Docker em VM Linux

Instalei e ativei o plugin de assinaturas, e ele funciona na maioria das vezes ao usar a tabela de preços integrada (ocasionalmente um usuário não é adicionado aos grupos após uma assinatura, mas isso é um problema separado, eu acho).

No entanto, eu realmente preciso usar a tabela de preços e o checkout do Stripe pela UX familiar e pela confiança que eles trazem. Para isso, tenho tudo configurado para webhooks, com todos os segredos etc. configurados (atualmente usando o modo de teste, então usando chaves e segredos do modo de teste).

Consigo ir com sucesso para a página de assinatura, passar pelo fluxo de checkout da tabela de preços e finalizar a compra com os cartões de teste.

No entanto, isso resulta em nenhuma assinatura sendo criada no Discourse e nenhuma alteração nos grupos do usuário, e olhando os webhooks no painel do Stripe, vejo que eles estão recebendo uma resposta 422 com o corpo:

{
  "errors": [
    "customer not found"
  ]
}

Já tentei isso com alguns usuários diferentes, e o resultado é sempre o mesmo.

Tendo olhado no banco de dados, não estou vendo os clientes mencionados no webhook do Stripe na tabela discourse_subscriptions_customers, e nenhuma assinatura correspondente na tabela discourse_subscriptions_subscriptions também - o que eu acho que pode ser esperado, já que a chamada do webhook nunca está sendo processada?

Para constar, verifiquei que as chamadas de webhook do Stripe podem ter sucesso em geral - se eu tiver a configuração “usar tabela de preços do Stripe” desativada, e passar pelo checkout integrado para criar uma assinatura, então tudo está bem - e se eu cancelar a assinatura do Stripe, o webhook customer.subscription.deleted chega sem problemas.

Espero que eu tenha feito algo bobo aqui e que não esteja configurado corretamente, mas estou realmente lutando para descobrir o que preciso fazer para fazê-lo funcionar.

Obrigado antecipadamente!
Ross

1 curtida

Desculpe por você estar tendo problemas, mas obrigado por levantar essa questão. Esperamos que possamos descobrir o que está acontecendo. A primeira pergunta que tenho é: os produtos que você selecionou para a tabela de preços são aqueles que você criou dentro do Discourse ou foram criados dentro do Stripe?

Estou recebendo esse erro também no meu ambiente de produção que configurei, mas não localmente, então é meio difícil de depurar. Estou investigando!

Obrigado pela resposta :slight_smile:

Já tentei das duas formas, inicialmente configurei produtos no Stripe e depois encontrei discussões aqui sugerindo que eles precisavam ser criados dentro do Discourse, então mudei para fazer isso. No entanto, ainda vejo o mesmo problema.

Estou assumindo (e peço desculpas se estiver incorreto) que o link para os grupos é impulsionado pelos metadados do produto? Vejo isso aqui:

(O group_name varia dependendo do nível de preço, o que eu esperaria com base em como configurei as coisas no Discourse).

Obrigado por investigar isso, me avise se há algo mais que eu possa fazer para ajudar :slight_smile:

Criei uma correção para a resposta de cliente não encontrado com a tabela de preços. Se você atualizar seu plugin de assinaturas e tentar novamente, deverá funcionar agora.

2 curtidas

Desculpe pela demora em responder e obrigado novamente por analisar isso :slight_smile:

Acabei de atualizar tudo e fiz um teste rápido, e ainda estou vendo a mesma resposta (ou seja, cliente não encontrado) para os webhooks do Stripe.

Você acha que eu deveria criar uma tabela de preços / conjunto de produtos completamente nova e testar com isso, para descartar quaisquer problemas que possam ter sobrado de testes anteriores (eu usei um novo usuário para este teste, mas os produtos são os que estavam lá de antes).

Você pode confirmar novamente o que você tem para o hash do commit abaixo do número da versão na página /admin/plugins?

E isso é para uma assinatura ou uma compra única com a tabela de preços?

Eu adicionei uma nova configuração para o plugin de assinatura para depuração. Ela se chama discourse_subscriptions_enable_verbose_logging. Uma vez que ela esteja habilitada, você pode visitar /logs e tentar o processo de checkout novamente e ver se você vê alguma saída dela. Sinta-se à vontade para me enviar algumas capturas de tela em uma mensagem privada e posso ajudar a depurar as coisas para você.

Com certeza, sem problemas. O hash do commit que tenho é o mesmo da sua captura de tela, f1b9c96 :slight_smile:

Isso é para uma assinatura, com a tabela de preços.

Ok, ótimo, obrigado. Vou tentar ativar essa configuração e dar uma olhada nos logs :slight_smile:

Obrigado novamente pela sua ajuda :slight_smile:

2 curtidas