プラグイン: discourse-subscriptions バージョン: 最新(最新版であることを確認済み) Discourse バージョン: 3.5.4
バグの概要: 特定の極端なケースにおいて、プラグインが有効な決済手段を紐付けずに PaymentIntent を作成し、結果としてサブスクリプションがエンドユーザーに通知されずに失敗します。
再現手順:
-
顧客が Stripe の顧客プロフィールに有効期限切れのカードを保存している
-
顧客がサブスクリプションの契約または決済手段の更新を試みる
-
プラグインが PaymentIntent を作成するが、新しいカードの詳細を Stripe に渡すのに失敗する
-
取引が
resource_missingまたはpayment_intent_incompatible_payment_methodエラーで失敗する
Stripe エラーログ:
resource_missing: この顧客には紐付けられた決済ソースまたはデフォルトの決済手段がありません。
payment_intent_incompatible_payment_method: card タイプの決済手段が存在することが期待されましたが、この PaymentIntent には決済手段が紐付けられておらず、また何も提供されていません。
Stripe による確認事項:
-
Stripe アカウントに問題はなく、Stripe 側には不具合はない
-
PaymentIntent が決済手段を紐付けずに作成されていた
-
プラグインが場合によっては
pm_Payment Method オブジェクトではなくcard_オブジェクトを渡している — これらは Stripe の現在の API において互換性がない
追加のコンテキスト:
-
これは約 18,000 人のアクティブなメンバーがいるコミュニティで、月に約 2 回発生する
-
このプラグインはビルトイン機能であり、ホストレベルで変更できない(Communiteq にて確認済み)
-
通常のチェックアウトは正常に動作する。失敗するのは、顧客に古い/有効期限切れのカードが登録されており、新しい決済を試みた場合に限られる
-
回避策として、ホストされた Stripe 請求書を手動で送信する方法があるが、これではユーザーの Discourse グループを自動的に割り当てるウェッブフックがトリガーされず、2 番目の手動ステップが必要になる
要望: 顧客の既存カードが有効期限切れまたは無効な場合の決済手段の引き渡しを修正し、新しいカードの入力によって適切な pm_ Payment Method オブジェクトが生成され、送信前に正しく PaymentIntent に紐付けられるようにしてください。