重新调整电荷变化激活

时间:2017-01-19 06:40:29

标签: api shopify

我已经构建了一个应用程序来实现经常性的费用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

1 个答案:

答案 0 :(得分:0)

只需删除测试或试用状态的有效费用,然后发出新的费用。简单。当商家选择接受应向他们提供的新费用时,它将取代旧的费用。