Ruby:如何使用凭据初始化活动商家网关实例?

时间:2018-01-12 06:28:35

标签: ruby-on-rails activemerchant

从此http://www.rubydoc.info/github/Shopify/active_merchant/ActiveMerchant%2FBilling%2FBase.gateway

我应该使用这个

初始化一个active_merchant实例
gateway = ActiveMerchant::Billing::Base.gateway( gateway_name ).new(
:username => :some_credential 
:password => :some_other_credential
)

但我事先并不知道:username:password,但是他们在这里的灯具文件https://github.com/activemerchant/active_merchant/blob/master/test/fixtures.yml中。那么如何正确地做到这一点?

例如,在fixtures.yml文件中我们可以看到这个..

adyen: username: '' password: '' merchant_account: ''

因此我们可以用这个初始化..

gateway = ActiveMerchant::Billing::Base.gateway( 'adien' ).new(
username:         => :some_credential 
password:         => :some_other_credential
merchant_account: => some_more_credential
)

我需要能够在不对上面示例中的username:password:merchant_account:参数进行硬编码的情况下初始化网关实例。

提前致谢!

3 个答案:

答案 0 :(得分:1)

你应该看看环境变量。它们允许您在安全的位置定义变量,并在需要时引用它们。

您可以在某处定义PASSWORD=mysecretpassword,然后在Rails代码中将其称为ENV["PASSWORD"]

有很多方法可以做到这一点。看看这里:

http://railsapps.github.io/rails-environment-variables.html

答案 1 :(得分:0)

用户名,密码和merchant_account是实例变量,因此您需要使用instance_variable_set更改它们

gateway.instance_variable_set(:@username, :some_username)
gateway.instance_variable_set(:@password, :some_password)
gateway.instance_variable_set(:@merchant_account, :some_merchant_account)

答案 2 :(得分:0)

我想我可以回答我自己的问题。一个人应该使用自己的哈希值传递每种不同的初始化方法。

require 'active_merchant'

    settings = {name: 'braintree_blue', merchant_id: 'x', public_key: 'y', private_key: 'z'}
    another_settings = {name: 'trust_commerce', login: 'TestMerchant', password: 'password'}

Gateway = ActiveMerchant::Billing::Base::gateway(settings[:name]).new(settings)
Another_Gateway = ActiveMerchant::Billing::Base::gateway(another_settings[:name]).new(another_settings)

puts Gateway.options
puts Another_Gateway.options

请注意,我可以通过不同的选项而无需对任何键进行硬编码,这就是我想要的。