Plugin: discourse-subscriptions Versão: Última (confirmada como atualizada) Versão do Discourse: 3.5.4
Resumo do Bug: Em certos casos extremos, o plugin cria um PaymentIntent sem anexar um método de pagamento válido, fazendo com que a assinatura falhe silenciosamente para o usuário final.
Passos para Reproduzir:
-
O cliente possui um cartão expirado salvo em seu perfil de cliente no Stripe
-
O cliente tenta assinar ou atualizar seu método de pagamento
-
O plugin cria um PaymentIntent, mas falha ao passar os detalhes do novo cartão para o Stripe
-
A transação falha com o erro
resource_missingoupayment_intent_incompatible_payment_method
Logs de Erro do Stripe:
resource_missing: Este cliente não possui fonte de pagamento anexada ou método de pagamento padrão.
payment_intent_incompatible_payment_method: Esperava-se que um método de pagamento do tipo cartão estivesse presente, mas este PaymentIntent não possui um método de pagamento e nenhum foi fornecido.
O que o Stripe Confirmou:
-
A conta do Stripe está em dia, sem problemas do lado deles
-
Os PaymentIntents foram criados sem um método de pagamento anexado
-
O plugin está passando um objeto
card_em alguns casos, em vez de um objeto de Método de Pagamentopm_— estes não são intercambiáveis na API atual do Stripe
Contexto Adicional:
-
Isso ocorre aproximadamente 2 vezes por mês em uma comunidade com ~18.000 membros ativos
-
O plugin é integrado e não pode ser modificado no nível do host (confirmado com a Communiteq)
-
O checkout normal funciona corretamente; a falha ocorre especificamente quando um cliente tem um cartão desatualizado/expirado cadastrado e tenta um novo pagamento
-
A solução alternativa é enviar manualmente uma fatura hospedada do Stripe, mas isso não aciona o webhook que atribui automaticamente o grupo do Discourse ao usuário, criando uma segunda etapa manual
Solicitação: Uma correção para a transferência do método de pagamento quando o cartão existente do cliente está expirado ou inválido, garantindo que a entrada do novo cartão gere um objeto de Método de Pagamento pm_ adequado, que seja corretamente anexado ao PaymentIntent antes do envio.