Rails Stripe checkout与自定义金额

时间:2017-12-31 14:30:43

标签: ruby-on-rails stripe-payments

我使用Stripe进行简单的Rails结帐。 根据选中的选项/按钮点击,用户将收取不同的金额,更改说明和列表ID,例如

http://localhost:3000/charges/new?amount=123&desc=Option+A&id=45

当我发送给ChargesController时,我从参数中获取金额,描述和ID:

def create
  customer = Stripe::Customer.create(
    :email => params[:stripeEmail],
    :source  => params[:stripeToken]
  )

  charge = Stripe::Charge.create(
    :customer    => customer.id,
    :amount      => @amount,
    :description => @description,
    :currency    => 'eur'
  )

  redirect_to thankyou_path

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

显然这不安全,因为用户可以更改网址中的金额。

创建动作如下所示:

pip install

我应该如何更改代码以使其更安全?

1 个答案:

答案 0 :(得分:0)

基于专家评论支付流程功能必须建模。

payment模型上,我不知道实际使用什么模型进行付款,顺便说一句,

#=> model.rb

def process_payment
    customer = Stripe::Customer.create email: email, card: token
    Stripe::Charge.create customer: customer.id, amount: 1000, description: 'Premium', currency: 'usd' #=> 1000 means 10 USD
end

控制器

@payment = Payment.new({ email: params[:stripeEmail],
                        token: params[:stripeToken]
                    })

begin
   @payment.process_payment
   @payment.save
   redirect_to thankyou_path
rescue Exception => e
  flash[:error] = e.message
  @payment.destroy
  redirect_to new_charge_path
end

我认为当您尝试实施此公式时会产生问题,这就是为什么要做出最佳常识并创建安全付款的原因。我需要说这对您的使用不准确,因为我不知道您的项目结构这只是一个安全付款的公式。

由于

希望能提供帮助