我正在开发Rails 4应用程序,用户可以通过应用程序订阅一次付款。
对于订阅,请使用带有条带的Active Merchant,现在用户现在支付50美元并成功完成付款。代码如下:
ActiveMerchant::Billing::Base.mode = :test
transaction = ActiveMerchant::Billing::StripeGateway.new(:login => Rails.application.secrets.stripe_secret_key)
paymentInfo = ActiveMerchant::Billing::CreditCard.new(
:number => purchage_params[:card_holder_number],
:month => purchage_params[:expiry_month],
:year => purchage_params[:expiry_year],
:verification_value => purchage_params[:cvv])
purchaseOptions = {:billing_address => {
:name => purchage_params[:card_holder_name],
:currency => @country.currency,
:address1 => session[:address],
:city => session[:city],
:state => @region.name,
:zip => session[:zip_postal]
}}
response = transaction.purchase((amount * 100).to_i, paymentInfo, purchaseOptions)
现在我的问题,我想根据用户国家明智地扣除付款。按照以下国家和付款方式。
USA = $50 USD
South Africa = 355 ZAR
India = 520 INR
Australia = $50 AUD
那么我如何才能明智地设定货币和支付国家。任何人都有想法吗?
由于
答案 0 :(得分:0)
我并不完全清楚你所寻求的是什么,但据我所知,你试图根据国家/地区按每个子类收取指定价格。根据我的阅读,您不应该让它确定原产国,因为美国货币的宝石收费,卡公司理论上应自动将其转换为该价格。
- 编辑 -
好吧,在我做了一些挖掘之后,看起来好像我有些不正确。如果您设法做了您尝试做的事情,您将收到此错误
response.message: The transaction currency specified must be the same as previously specified.
Active Merchant货币的默认货币为USD。当交易完成后,它将作为美元费用进行处理,当您添加购买时,您无法实际更改它。因此,您必须在将其设置为购买方法之前进行更改。由于您的订阅基于订阅,需要注册,因此您可以将用户设置为默认国家/地区,因为您必须收集其私人信息才能拥有帐单邮寄地址。这样,该选项是预定义的,您只需在将项目应用到购物车之前使用货币转换器。
答案 1 :(得分:0)
我得到了我的解决方案。请查看以下代码如何通过货币。
purchaseOptions = {:billing_address => {
:name => purchage_params[:card_holder_name],
:currency => @country.currency,
:address1 => session[:address],
:city => session[:city],
:state => @region.name,
:zip => session[:zip_postal]
},
:currency => "CAD"}
我们可以放置动态代码而不是"CAD".