从此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:
参数进行硬编码的情况下初始化网关实例。
提前致谢!
答案 0 :(得分:1)
你应该看看环境变量。它们允许您在安全的位置定义变量,并在需要时引用它们。
您可以在某处定义PASSWORD=mysecretpassword
,然后在Rails代码中将其称为ENV["PASSWORD"]
有很多方法可以做到这一点。看看这里:
答案 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
请注意,我可以通过不同的选项而无需对任何键进行硬编码,这就是我想要的。