如何让Stripe接受rails上的整数和十进制值?

时间:2018-02-14 21:04:01

标签: ruby-on-rails decimal stripe-payments currency

在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" >

2 个答案:

答案 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