在测试模式下使用Stripe时,如何创建高级用户来测试我的应用程序的高级功能?

时间:2014-09-25 02:40:57

标签: ruby-on-rails heroku stripe-payments

我正在开发一款应用程序,允许会员升级到高级会员资格(使用Stripe付款后)以访问其他功能。我只在生产中使用Stripe在测试模式,因此我正在寻找一种在Heroku控制台中创建高级用户的方法。它会是这样的吗?:

user = User.find_by(name:’existing user name’)
user.update_attribute(‘premium’).save

我的schema.rb文件中有t.boolean "premium"

我是编程新手,所以如果您需要任何其他文件信息,请告诉我。谢谢!

编辑更新:这是我的收费控制器代码:

class ChargesController < ApplicationController

  def new
    @stripe_btn_data = {
      key: "#{ Rails.configuration.stripe[:publishable_key] }",
      description: 'Premium Membership',
      amount: 1_299

    }
   end


   def create

   @amount = params[:amount]


   customer = Stripe::Customer.create(
     email: current_user.email,
     card: params[:stripeToken]
   )

   charge = Stripe::Charge.create(
     customer: customer.id, 
     amount: @amount,
     description: 'Premium Membership',
     currency: 'usd'
   )

   current_user.update_attribute(:premium, true)

   redirect_to wikis_path, flash: { notice: "Congratulations, #{current_user.email}, on becoming a premium member!"}


 rescue Stripe::CardError => e
   flash[:error] = e.message
   redirect_to new_charge_path
 end
end

1 个答案:

答案 0 :(得分:2)

我假设您在控制器中调用了一个创建新条纹费用的方法,如下所示:

@user.update_with_payment

在用户模型中的该方法中,您应该调用Stripe API来根据用户的条带令牌向用户收费。您可以做的是为该方法设置条件,以便在收费成功时更新用户以使其premium属性为true。如果收费不成功,您将重新呈现付款表单并显示任何适用的错误。

if @user.update_with_payment
  @user.update_attribute(:premium, true)
  # You can than redirect wherever you want
  redirect_to @user
else
  render :new
end

以这种方式设置控制器将使Stripe测试模式下的用户能够在其对象上接收premium属性,因为测试模式将像实时模式一样运行此方法。在为Stripe设置方法和逻辑时,将所有逻辑放入Rails应用程序中,测试模式将按预期实时模式的方式工作。不要在控制台中更新用户对象。