Fallimenti silenziosi delle sottoscrizioni nel plugin Subscriptions

Plugin: discourse-subscriptions Version: Ultimo (aggiornato) Versione di Discourse: 3.5.4

Riepilogo del Bug: In alcuni casi limite, il plugin crea un PaymentIntent senza allegare un metodo di pagamento valido, causando il fallimento silenzioso dell’abbonamento per l’utente finale.

Passaggi per Riprodurre:

  1. Il cliente ha una carta scaduta salvata nel proprio profilo cliente Stripe

  2. Il cliente tenta di abbonarsi o aggiornare il proprio metodo di pagamento

  3. Il plugin crea un PaymentIntent ma non riesce a trasmettere i dettagli della nuova carta a Stripe

  4. La transazione fallisce con l’errore resource_missing o payment_intent_incompatible_payment_method

Log degli Errori di Stripe:

resource_missing: Questo cliente non ha fonti di pagamento allegate o un metodo di pagamento predefinito.

payment_intent_incompatible_payment_method: Era previsto un metodo di pagamento di tipo card, ma questo PaymentIntent non ha un metodo di pagamento e non ne è stato fornito alcuno.

Conferma di Stripe:

  • L’account Stripe è in regola, non ci sono problemi dal loro lato

  • I PaymentIntent sono stati creati senza un metodo di pagamento allegato

  • Il plugin passa in alcuni casi un oggetto card_ invece di un oggetto Metodo di Pagamento pm_ — questi non sono intercambiabili nell’API attuale di Stripe

Contesto Aggiuntivo:

  • Questo si verifica circa 2 volte al mese in una community con circa 18.000 membri attivi

  • Il plugin è integrato e non può essere modificato a livello di host (confermato da Communiteq)

  • Il checkout normale funziona correttamente; il fallimento si verifica specificamente quando un cliente ha una carta obsoleta/scaduta salvata e tenta un nuovo pagamento

  • La soluzione alternativa è inviare manualmente una fattura ospitata da Stripe, ma ciò non attiva il webhook che assegna automaticamente il gruppo Discourse all’utente, creando un secondo passaggio manuale

Richiesta: Una correzione per il passaggio del metodo di pagamento quando la carta esistente di un cliente è scaduta o non valida, garantendo che l’inserimento della nuova carta generi un corretto oggetto Metodo di Pagamento pm_ che venga correttamente allegato al PaymentIntent prima dell’invio.

1 Mi Piace

Grazie per la segnalazione dell’errore, Todd!

L’ho spostata qui in Contribute > Bug, dove spero riceva l’attenzione che merita.

2 Mi Piace