Plugin: discourse-subscriptions Versión: Última (confirmada como actualizada) Versión de Discourse: 3.5.4
Resumen del error: En ciertos casos extremos, el plugin crea un PaymentIntent sin adjuntar un método de pago válido, lo que provoca que la suscripción falle de manera silenciosa para el usuario final.
Pasos para reproducir:
-
El cliente tiene una tarjeta expirada guardada en su perfil de cliente de Stripe.
-
El cliente intenta suscribirse o actualizar su método de pago.
-
El plugin crea un PaymentIntent, pero no logra pasar los detalles de la nueva tarjeta a Stripe.
-
La transacción falla con el error
resource_missingopayment_intent_incompatible_payment_method.
Registros de error de Stripe:
resource_missing: Este cliente no tiene una fuente de pago adjunta ni un método
de pago predeterminado.
payment_intent_incompatible_payment_method: Se esperaba que estuviera presente
un método de pago de tipo tarjeta, pero este PaymentIntent no tiene un método
de pago y no se proporcionó ninguno.
Lo que confirmó Stripe:
-
La cuenta de Stripe está en buen estado; no hay problemas de su parte.
-
Los PaymentIntents se crearon sin un método de pago adjunto.
-
El plugin está pasando un objeto
card_en algunos casos en lugar de un objeto de Método de Pagopm_; estos no son intercambiables en la API actual de Stripe.
Contexto adicional:
-
Esto ocurre aproximadamente 2 veces al mes en una comunidad con ~18.000 miembros activos.
-
El plugin es nativo y no se puede modificar a nivel de host (confirmado con Communiteq).
-
El proceso de pago normal funciona correctamente; el fallo ocurre específicamente cuando un cliente tiene una tarjeta obsoleta/expirada registrada e intenta realizar un nuevo pago.
-
La solución alternativa es enviar manualmente una factura alojada de Stripe, pero esto no activa el webhook que asigna automáticamente el grupo de Discourse del usuario, lo que crea un segundo paso manual.
Solicitud: Una corrección para la transferencia del método de pago cuando la tarjeta existente de un cliente está expirada o es inválida, asegurando que la nueva entrada de tarjeta genere un objeto de Método de Pago pm_ adecuado que se adjunte correctamente al PaymentIntent antes de su envío.