Échecs silencieux d'abonnement dans le plugin Subscriptions

Plugin : discourse-subscriptions Version : Dernière (confirmée à jour) Version de Discourse : 3.5.4

Résumé du bug : Dans certains cas particuliers, le plugin crée un PaymentIntent sans attacher de moyen de paiement valide, ce qui entraîne un échec silencieux de l’abonnement pour l’utilisateur final.

Étapes pour reproduire le problème :

  1. Le client possède une carte expirée enregistrée dans son profil Stripe.

  2. Le client tente de souscrire à un abonnement ou de mettre à jour son moyen de paiement.

  3. Le plugin crée un PaymentIntent mais ne transmet pas les nouvelles informations de carte à Stripe.

  4. La transaction échoue avec l’erreur resource_missing ou payment_intent_incompatible_payment_method.

Journaux d’erreur Stripe :

resource_missing : Ce client n'a aucune source de paiement attachée ni moyen de paiement par défaut.

payment_intent_incompatible_payment_method : Un moyen de paiement de type carte était attendu, mais ce PaymentIntent n'a aucun moyen de paiement attaché et aucun n'a été fourni.

Ce que Stripe a confirmé :

  • Le compte Stripe est en règle, aucun problème côté Stripe.

  • Des PaymentIntents ont été créés sans moyen de paiement attaché.

  • Le plugin transmet parfois un objet card_ au lieu d’un objet de moyen de paiement pm_ — ces deux types ne sont pas interchangeables dans l’API actuelle de Stripe.

Contexte supplémentaire :

  • Ce problème se produit environ deux fois par mois sur une communauté d’environ 18 000 membres actifs.

  • Le plugin est intégré et ne peut pas être modifié au niveau de l’hébergeur (confirmé avec Communiteq).

  • Le processus de paiement normal fonctionne correctement ; l’échec se produit uniquement lorsqu’un client possède une carte obsolète/expirée enregistrée et tente un nouveau paiement.

  • La solution de contournement consiste à envoyer manuellement une facture hébergée Stripe, mais cela ne déclenche pas le webhook qui assigne automatiquement le groupe Discourse de l’utilisateur, ce qui nécessite une deuxième étape manuelle.

Demande : Corriger la transmission du moyen de paiement lorsqu’une carte existante du client est expirée ou invalide, afin que la saisie d’une nouvelle carte génère correctement un objet de moyen de paiement pm_ qui sera attaché au PaymentIntent avant la soumission.

1 « J'aime »

Merci pour le rapport de bug, Todd !

Je l’ai déplacé ici dans Contribute > Bug, où il devrait, espérons-le, recevoir l’attention qu’il mérite.

2 « J'aime »