在rails项目上实现Stripe。 Stripe占用'500'并默认将5.00发送到他们的API。如果我执行amount.to_i * 100我可以获得'500'以保持500,但是当金额= 5.67时仍然可以获得5.00。
如何更改控制器,视图或字段以正确使用?
控制器代码
@amount = params[:amount].to_i*100
查看代码
<input class="form-field two-decimals" name="amount" type="number" step="any" >
答案 0 :(得分:0)
你可以这样做:
@amount = sprintf("%.2f",(params[:amount])).delete '.'
答案 1 :(得分:0)
Stripe只取整数,要获得正确的整数,你可以将其乘以100。
(@amount * 100).to_i
=&gt; 44.53 * 100 = 4453.0.to_i
并转换为整数4453
def charge
begin
charged = Stripe::Charge.create(
:amount => (@amount * 100).to_i,
:currency => "usd",
:customer => @customer_id
)
rescue Stripe::InvalidRequestError, Stripe::AuthenticationError, Stripe::APIConnectionError, Stripe::StripeError => e
puts e.message
return false
end
charged
end