Bonjour,
J’essaie actuellement ce plugin pour une utilisation future sur mon instance et j’ai rencontré un problème.
Mon compte Stripe est nouveau et non vérifié, ce qui signifie qu’il utilise des données de test que je peux effacer dans le tableau de bord Stripe > Développeurs.
Le problème est que l’effacement des données sur Stripe ne supprime pas les mêmes données sur l’instance du forum. Cela peut entraîner un plantage de la page Facturation > Paiement d’un utilisateur.
Étapes pour reproduire le problème
- Créez un plan d’abonnement.
- Abonnez un utilisateur à ce plan. Stripe lui attribuera un
customer_idtel quecus_abcd1234567890. - Effacez les données depuis le tableau de bord Stripe.
- Réessayez d’ouvrir la page de facturation de l’utilisateur : cela provoquera un plantage lors du chargement de
/s/user/payment, avec le message suivant dans la console du navigateur :
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
Après avoir exploré la base de données de mon instance, j’ai trouvé des données résiduelles issues de plusieurs effacements dans les tables suivantes :
discourse_subscriptions_customers: provoque un plantage de la page de facturation de l’utilisateur.discourse_subscriptions_productsdiscourse_subscriptions_subscriptions
Les deux dernières tables ne semblent pas provoquer de plantage. Cependant, elles contiennent toujours des données expirées.
La suppression manuelle de la ou des lignes problématiques dans discourse_subscriptions_customers corrige le plantage. Mais devoir le faire via une requête SQL est compliqué et dangereux, surtout pour les utilisateurs inexpérimentés.
Il est également à noter que ce problème ne se produit pas lorsque l’on supprime manuellement les informations de l’utilisateur depuis le tableau de bord Stripe. Stripe conserve toujours les informations archivées et les marque comme « définitivement supprimées ».
Solutions proposées
Si possible, permettre à Stripe d’informer Discourse que les données de test ont été effacées, afin que Discourse supprime automatiquement les données correspondantes dans ces tables.
Ou,
Dans les options du plugin, ajouter un bouton « Effacer les données de test » avec un gros avertissement rouge pour s’assurer que l’administrateur sait ce qu’il fait.