如何在activemerchant gem中允许不同于美元货币?

时间:2014-03-20 19:13:18

标签: paypal ruby-on-rails-4 paypal-sandbox activemerchant

如果我的货币不是“美元”,我无法通过purchase activemerchant 以下是来自response.message的错误短信: The transaction currency specified must be the same as previously specified.

以下是购买设置:

response = EXPRESS_GATEWAY.setup_purchase(product.price,       
      :currency          => product.currency.upcase, # it's 'EUR'
      :items             => [{name: product.name, quantity: 1, amount: product.price, description: product.description}],
      :ip                => request.remote_ip,
      :return_url        => paypal_checkout_url,
      :cancel_return_url => paypal_checkout_url
)

这是购买本身:

def purchase
  response = EXPRESS_GATEWAY.purchase(product.price, express_purchase_options)
end

def express_purchase_options
{
  :ip => ip_address,
  :token => express_token,
  :payer_id => express_payer_id
}
end

也许我应该在express_purchase_options中指定货币?

2 个答案:

答案 0 :(得分:3)

我在我的一个项目中使用这个宝石,其中包括' EUR'货币。

我的配置如下:

# config/application.rb
config.after_initialize do
  ActiveMerchant::Billing::PaypalExpressGateway.default_currency = 'EUR'
end

就是这样。无需配置任何其他内容。

答案 1 :(得分:1)

是的,指定的货币在整个流程的所有调用中都必须相同。看起来这必须使用Express Checkout .. ??您只需要确保SetExpressCheckout请求和DoExpressCheckoutPayment请求使用相同的货币代码。