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

时间:2016-04-08 11:58:09

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

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

那么我如何才能明智地设定货币和支付国家。任何人都有想法吗?

由于

2 个答案:

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