我使用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
我应该如何更改代码以使其更安全?
答案 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
我认为当您尝试实施此公式时会产生问题,这就是为什么要做出最佳常识并创建安全付款的原因。我需要说这对您的使用不准确,因为我不知道您的项目结构这只是一个安全付款的公式。
由于
希望能提供帮助