2016-07-29 74 views
0

所以我有一个Rails应用程序,我在销售订阅来访问内容。对于新泽西州的用户,我必须向他们收取7%的销售税。其他地方都是0.因此,当他们在Devise注册一个帐户时,我会记录他们的状态。安全地将订阅的tax_percent提交给Rails中的Stripe API

然后在我的SubscriptionsController.rb,我检查,看看他们住在新泽西州:

data = if current_user.home_state == "NJ" 
    subscription_params.merge(tax_percent: 7) 
    else 
    subscription_params 
    end 
    @subscription = ::Subscription.new(data) 

当订阅被创建,订阅表得到正确更新。我还假设,当用户进行购买时,这个tax_percent也会触及Stripe的API,但事实并非如此。

所以我尝试添加这订购创建形式:

<%= f.hidden_field :tax_percent %> 

,它并击中条纹的API,但命中为征税百分比:“”,这是空的。

所以我总是可以这样进行逻辑检查:

<% if current_user.home_state == "NJ" %> 
    <%= hidden_field :tax_percent, :value => '7' %> 
<% end %> 

但后来我的价值暴露给客户端,可控制的。

什么是最好的'轨'方式提交这个值到Stripe的API?

+0

好吧,所以你还是坚持住了。你能显示你拥有的Stripe API调用代码吗?您不需要在表单中填写字段,只需通过相应的方法将值传递给Stripe API即可。没有什么与表格有关,我昨天解释了它。你从表单发送的数据是多余的,因为你正在捕获用户的选择。您所做的决定基于您在表格中的价值。所以它是预定义的。 –

+0

下面是它添加隐藏字段显示的内容:由Koudoku :: SubscriptionsController处理#以HTML格式创建# 参数:{“utf8”=>“✓”,“authenticity_token”=>“token_here”,“subscription”=> {“ “=”“,”card_type“=>”未定义“},”owner_id“=>” 80“} – JohnOHFS

+0

没有必要。 :)显示您必须创建订阅的条纹代码。 –

回答

0

根据您提供的代码示例来判断发生的事情有点困难,但最终您希望在创建订阅时设置单个用户的税率[1]。

如果您要进行一次性付款,则还需要将该信息存储在客户记录的其他位置。我可能会建议您使用客户记录的metadata-参数[2]。您可以通过创建更新客户[3] API请求来进行设置。然后,当你收取费用时[4],你需要将它乘以你存储的任何税收系数。

另一种(可能更好的)方法是为一次性购买创建待定发票项目[5](不含税)。然后创建一个发票[6],tax_percent-参数被填充。最后,付清发票[7]。这将使跟踪项目的购物记录保持单独的税率。

希望有帮助!