gpt4 book ai didi

ruby-on-rails - Rails Payola : add a coupon to an existing subscription

转载 作者:行者123 更新时间:2023-12-04 03:45:04 27 4
gpt4 key购买 nike

我们正在开发使用 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 find_plan_coupon_and_quantity 也调用 change_plan 方法间接看出。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 本身使用的代码来手动修复它以保持同步 .

希望这可以帮助您实现所需的功能,并至少引导您走向正确的方向。

关于ruby-on-rails - Rails Payola : add a coupon to an existing subscription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com