我可以在 Rails 4 应用程序中通过带有条纹的活跃商人传递不同的货币吗?

Posted

技术标签:

【中文标题】我可以在 Rails 4 应用程序中通过带有条纹的活跃商人传递不同的货币吗?【英文标题】:Can i pass different currency in active-merchant with stripe in Rails 4 application? 【发布时间】:2016-07-29 16:20:26 【问题描述】:

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

那么,我该如何明智地设置货币和付款国家/地区。有人对此有想法吗?

谢谢

【问题讨论】:

【参考方案1】:

我并不完全清楚您在寻找什么,但据我了解,您正试图根据国家/地区对每个潜艇收取指定的价格。根据我的阅读,您不需要让它确定原产国,因为宝石以美元收费,理论上信用卡公司应该自动将其转换为该价格。

--编辑--

好的,在我做了一些挖掘之后,看起来我有点不正确。如果你设法做你想做的事,你会得到这个错误 response.message: The transaction currency specified must be the same as previously specified.

活跃商家货币的默认货币是美元。交易完成后,它将作为美元收费,您在添加购买时实际上无法更改它。因此,您必须在将其设置为购买方式之前对其进行更改。由于您基于需要注册的订阅,因此您可以将用户设置为默认国家/地区,因为无论如何您都必须收集他们的私人信息才能获得帐单地址。这样,选项是预定义的,您只需在将商品应用到购物车之前使用货币转换器即可。

【讨论】:

好的,谢谢@tommy 的回复。我可以更改活跃商家的默认货币吗?表示美国用户 USD,印度用户 INR。表示运行时。 取决于您选择使用的网关。这是 Stripe 的文档以及支持的货币。 rubydoc.info/github/Shopify/active_merchant/ActiveMerchant/…【参考方案2】:

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

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

【讨论】:

以上是关于我可以在 Rails 4 应用程序中通过带有条纹的活跃商人传递不同的货币吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 中通过 AJAX 加载更多用户电影

在 Rails 中通过 has_many 连接表

如何在 Rails 中通过 jQuery 调用 JSON 文件?

Rails 上的条纹 Webhook

在 Rails 中通过其 belongs_to 关系查询记录

在rails应用程序中通过ajax请求将参数传递给控制器