你好,
我正在测试此插件以便将来在我的实例中使用,但遇到一个问题。
我的 Stripe 账户是新创建的且尚未验证,这意味着它使用的是测试数据,我可以在 Stripe 仪表板 > 开发人员(Developers)中清除这些数据。问题在于,在 Stripe 中清除数据并不会同时删除论坛实例中的相同数据。这可能导致用户的“账单 > 支付”页面崩溃。
复现步骤
- 创建一个订阅计划。
- 将用户订阅该计划。Stripe 会为其分配一个
customer_id,例如cus_abcd1234567890。 - 在 Stripe 仪表板中清除数据。
- 再次尝试打开用户的账单页面时,在加载
/s/user/payment时会发生崩溃,浏览器控制台中显示以下响应文本:
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
在检查我实例的数据库后,我发现之前多次清除操作留下的数据残留在以下表中:
discourse_subscriptions_customers:导致用户账单页面崩溃。discourse_subscriptions_productsdiscourse_subscriptions_subscriptions
后两个表似乎不会触发崩溃,但它们仍然包含过期的数据。
手动删除 discourse_subscriptions_customers 表中的问题行可以解决用户页面的崩溃问题。但通过 SQL 查询手动操作既复杂又危险,尤其对于经验不足的用户而言。
此外,值得注意的是,如果从 Stripe 仪表板手动删除用户信息,则不会出现此问题。Stripe 仍会保留该用户的归档信息,并将其标记为“永久删除”。
建议的解决方案
如果可能,请提供一种方式,让 Stripe 在测试数据被清除时通知 Discourse,以便 Discourse 自动删除相关表中的数据。
或者,
在插件选项中添加一个“清除测试数据”的按钮,并配上醒目的红色警告标签,确保管理员清楚自己在做什么。