pfaffman
(Jay Pfaffman)
1
所以我创建了一个名为“CreateServer”的产品,将来可以让用户购买 Discourse 安装服务。购买后,用户会被添加到 CreateServer 用户组中。当用户创建服务器后,他们会被从该组中移除。这部分没问题。
但如果用户想要购买第二台服务器,由于他们已经购买过该产品,系统会阻止再次购买。有没有办法允许用户多次购买同一产品?或者,我的解决方案是让插件修改他们已购买订阅的记录,然后他们就可以再次购买。目前,插件在用户完成安装后已经将他们从 CreateServer 组中移除了……
类似这样的代码:
product = DiscourseSubscriptions::Customer.find_by(user_id: 2, product_id: create_server_id)
product.product_id = 'install fulfilled'
product.save
这样用户就可以再次购买。你觉得这会破坏其他功能吗?
3 个赞
justin
(Justin DiRose)
2
如果您使用的是单次支付,更改产品 ID 通常不会导致任何问题,除了无法查看支付历史记录。
不过,我很乐意考虑增加让用户多次购买单次购买产品的功能。
5 个赞
pfaffman
(Jay Pfaffman)
4
这有多难呢?对此我有些意外。如果某人能够,比如说,为之前过期的订阅重新购买新的订阅,这难道不行吗?
3 个赞
支持重复的一次性购买就太好了……这将在一定程度上减少对目前尚不存在的 Subscriptions: Pay What You Want Support 功能的需求。或者,是否有机会将这两个功能合并?
2 个赞
Jay,如果第一个订阅已取消,而客户后来再次回来购买相同的产品,情况是否也是如此?例如,月度订阅在一个周期后取消,客户在一年后再次回来。
1 个赞
justin
(Justin DiRose)
7
不会——一旦订阅被取消并由订阅系统处理完成,用户之后仍可返回并重新购买。但如果他们仍有有效的订阅(即使 recurring billing 可能已被取消),则无法进行购买。
3 个赞
justin
(Justin DiRose)
9
一次性购买在 Stripe 中是一个完全不同的机制,所以我需要仔细查看一下。我确实有个想法,但我的大部分插件工作都要等到新年之后才能继续。
5 个赞
pfaffman
(Jay Pfaffman)
10
啊!这就解释得通了。我还没来得及仔细查看,因为我的插件还有无数其他我同样不太理解的组件在运作。
我可不想让这句话不属实!

5 个赞
pfaffman
(Jay Pfaffman)
11
嘿,Justin。我又在研究这个问题了。实际上,很少有客户购买多次安装,所以我决定暂时不考虑多次购买的情况。但随后我意识到,如果用户只能购买一次服务器安装,那么测试购买流程就会变得很困难……
看来 serialize_product 决定了产品是否为订阅制,进而决定了用户是否可以购买该产品。
我想这里需要做的,是确保当用户购买的是单次产品时,subscribed 字段不会被设置为 true。不过目前我还不太清楚具体该如何实现,因为看起来获取这些信息至少需要一次表关联查询(或者可能需要另一次请求?)。
我目前的临时方案是修改模板,让支付链接/按钮始终显示(类似 {{#if product.subscribed_JP_disabled}} 的逻辑),这样我就可以进行多次购买了,仅供参考。
6 个赞
justin
(Justin DiRose)
12
太棒了——这已列入我的计划,但我还有一些需求更高的功能会优先推出,主要是优惠券。
5 个赞