加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails Payola:为现有订阅添加优惠券

发布时间:2020-12-17 02:24:16 所属栏目:百科 来源:网络整理
导读:我们正在开发使用Payola处理付款的SaaS产品,我们想添加推介促销.将优惠券添加到裁判是很简单(带有优惠券代码的表格上的隐藏字段),但似乎没有任何明显的方式将优惠券应用于现有订阅. 我已经检查了Payola来源,并且似乎没有任何方法可以将优惠券代码应用于现有
我们正在开发使用Payola处理付款的SaaS产品,我们想添加推介促销.将优惠券添加到裁判是很简单(带有优惠券代码的表格上的隐藏字段),但似乎没有任何明显的方式将优惠券应用于现有订阅.

我已经检查了Payola来源,并且似乎没有任何方法可以将优惠券代码应用于现有订阅,仅用于新订阅.

我们可以获取Stripe :: Customer对象并使用此答案:How to Apply a Coupon to a Stripe Customer来应用优惠券吗?这会让Payola陷入困境吗?

解决方法

由于Payola将订阅详细信息存储在自己的 table中,因此仅仅更新Stripe上的订阅是不够的.现在,如果我们看看 subscription_controller.rb:28,我们会看到Payola本身在应用新优惠券时所做的事情(您可以在更改计划时使用Payola应用新优惠券,这可以从 before_filter间接看到,也可以在change_plan方法上调用find_plan_coupon_and_quantity.find_plan_coupon_and_quantity方法导致调用@coupon = cookies [:cc] || params [:cc] || params [:coupon_code] || params [:coupon]).它的作用是调用Payola :: ChangeSubscriptionPlan.call(@subscription,@ plan),它再次在 change_subscription_plan.rb:3中声明,并在同一文件上调用另一个方法retrieve_subscription_for_customer.此方法是关键,因为它从Stripe检索实际订阅并返回它.这是参考方法

def self.retrieve_subscription_for_customer(subscription,secret_key)
  customer = Stripe::Customer.retrieve(subscription.stripe_customer_id,secret_key)
  customer.subscriptions.retrieve(subscription.stripe_id)
end

获取订阅后,它会根据新的计划详细信息进行更新,并存储在Payola自己的数据库数据结构中.

经过这个漫长而耗费精力的调查后,我们可以看到它应该适合手动更新Stripe,然后如上所述在Payola订阅上应用相同类型的更新.所以回答你关于弄乱Payola的原始问题:是的,它会弄乱Payola,但你可以通过复制Payola本身使用的代码来手动修复它以保持同步.

希望这有助于您实现所需的功能,并至少指导您正确的方向.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读