如果我的货币不是“美元”,我无法通过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
中指定货币?
答案 0 :(得分:3)
我在我的一个项目中使用这个宝石,其中包括' EUR'货币。
我的配置如下:
# config/application.rb
config.after_initialize do
ActiveMerchant::Billing::PaypalExpressGateway.default_currency = 'EUR'
end
就是这样。无需配置任何其他内容。
答案 1 :(得分:1)
是的,指定的货币在整个流程的所有调用中都必须相同。看起来这必须使用Express Checkout .. ??您只需要确保SetExpressCheckout请求和DoExpressCheckoutPayment请求使用相同的货币代码。