插件: discourse-subscriptions 版本: 最新(已确认更新至最新) Discourse 版本: 3.5.4
Bug 摘要: 在某些极端情况下,该插件会创建 PaymentIntent 但未附加有效的支付方式,导致订阅对最终用户静默失败。
复现步骤:
-
客户在其 Stripe 客户档案中保存了一张已过期的卡片
-
客户尝试订阅或更新其支付方式
-
插件创建了 PaymentIntent,但未能将新卡详情传递给 Stripe
-
交易失败,报错
resource_missing或payment_intent_incompatible_payment_method
Stripe 错误日志:
resource_missing: 该客户未附加任何支付来源或默认支付方式。
payment_intent_incompatible_payment_method: 预期存在类型为 card 的支付方式,但该 PaymentIntent 未包含任何支付方式,且未提供。
Stripe 确认内容:
-
Stripe 账户状态良好,对方端无任何问题
-
PaymentIntents 是在未附加支付方式的情况下创建的
-
在某些情况下,该插件传递的是
card_对象,而非pm_支付方式对象——在 Stripe 当前 API 中,这两者不可互换
其他上下文:
-
在一个拥有约 18,000 名活跃成员的社区中,该问题每月大约发生 2 次
-
该插件为内置插件,无法在主机层面进行修改(已与 Communiteq 确认)
-
正常结账流程运行正确;问题仅发生在客户档案中存在过时/过期卡片并尝试进行新支付时
-
临时解决方案是手动发送托管的 Stripe 发票,但这不会触发自动为用户分配 Discourse 组的 webhook,从而需要额外的手动步骤
请求: 修复当客户现有卡片过期或无效时的支付方式交接逻辑,确保新卡输入能生成正确的 pm_ 支付方式对象,并在提交前正确附加到 PaymentIntent。