我已经构建了一个应用程序来实现经常性的费用api,我有一些问题...
在文档( https://help.shopify.com/api/reference/recurringapplicationcharge)中声明:
每个商店每个应用程序可能只有一个经常性费用。 当为已经对该应用程序产生经常性费用的商店激活新的RecurringApplicationCharge时,现有的经常性费用将被取消并由新费用取代。然后激活新的经常性费用。 这意味着升级和降级用户的经常性费用或计划非常简单;只需改变他们的计划,让他们接受,Shopify将负责其余的工作。
所以我有一些用户,我有“测试”经常性费用和一些“试用”......我怎么能“强迫”他们接受新计划(更改计划名称或价格) ...
让我感到困惑的是,您应该检查任何有效的重新计费,例如github上的应用示例( https://github.com/Shopify/example-ruby-app/blob/master/02%20Charging%20For%20Your%20App/app.rb):
def create_recurring_application_charge # checks to see if there is already an RecurringApplicationCharge created and activated unless ShopifyAPI::RecurringApplicationCharge.current recurring_application_charge = ShopifyAPI::RecurringApplicationCharge.new( name: "Gift Basket Plan", price: 9.99, return_url: "https:\/\/#{APP_URL}\/activatecharge", test: true, trial_days: 7, capped_amount: 100, terms: "$0.99 for every order created") # if the new RecurringApplicationCharge saves,redirect the user to the confirmation URL, # so they can accept or decline the charge if recurring_application_charge.save @tokens[:confirmation_url] = recurring_application_charge.confirmation_url redirect recurring_application_charge.confirmation_url end end end
负责检查有效付款的方法是( https://github.com/Shopify/shopify_api/blob/master/lib/shopify_api/resources/recurring_application_charge.rb):
module ShopifyAPI class RecurringApplicationCharge < Base undef_method :test class << self def current (all || []).find { |c| c.status == 'active' } end [:pending, :cancelled, :accepted, :declined].each do |status| define_method(status) { (all || []).select { |c| c.status == status.to_s } } end end def usage_charges UsageCharge.find(:all, params: { recurring_application_charge_id: id }) end def cancel load_attributes_from_response(self.destroy) end def activate load_attributes_from_response(post(:activate)) end def customize(customize_recurring_app_charge_params = {}) load_attributes_from_response(put(:customize, recurring_application_charge: customize_recurring_app_charge_params )) end end end
免责声明:我从来没有使用红宝石编码,我的应用程序也不是用红宝石编写的,但这是我能找到的唯一例子,其他只是官方测试应用程序的副本。
因此,就此而言,这种方法只是在发出另一个重新计费费用之前检查API是否有一个有效的重新计费费用。
所以如果我改变计划“名称”或“价格”,就不会发生任何事情,因为现有的“主动”经常性费用(检查是在创建新的重新计划之前完成的。)
所以我不明白......我怎么能做到这一点呢?
当前的测试用户会发生什么情况(他们还有一个有效的“重新测试”费用),试用期后,试用期满后怎么样?Shopify会删除“主动试用”重新计划吗?
感谢您的所有答案!
我也在shopify论坛上发布了这个帖子:https://ecommerce.shopify.com/c/shopify-apis-and-technology/t/reccuring-charge-change-activation-402080
答案 0 :(得分:0)
只需删除测试或试用状态的有效费用,然后发出新的费用。简单。当商家选择接受应向他们提供的新费用时,它将取代旧的费用。