我可以在Rails 4应用程序中使用带有条带的活动商家中传递不同的货币吗?

我正在开发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 

那么我如何明智地设置货币和支付国家。 有人有想法吗?

谢谢

我并不完全清楚你在寻求什么,但据我所知,你试图根据国家收取每个子的指定价格。 根据我的阅读,您不应该让它确定原产国,因为gem以美元收费,而卡公司理论上应自动将其转换为该价格。

– 编辑 –

好吧,在我做了一些挖掘后,看起来好像我有些不正确。 如果您设法执行您要执行的操作,您将收到此错误response.message: The transaction currency specified must be the same as previously specified.

Active Merchant货币的默认货币为USD。 当交易完成后,它将以美元收费的方式进行,当您添加购买时,您无法实际更改它。 因此,您必须在将其设置为购买方法之前进行更改。 由于您的订阅基于订阅,需要注册,因此您可以将用户设置为默认国家/地区,因为您必须收集其私人信息才能拥有帐单邮寄地址。 这样,该选项是预定义的,您只需在将项目应用到购物车之前使用货币转换器。

我得到了解决方案。 请查看以下代码如何通过货币。

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