skip to Main Content

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

I should just initialize an instance of active_merchant using this

gateway = ActiveMerchant::Billing::Base.gateway( gateway_name ).new(
:username => :some_credential 
:password => :some_other_credential
)

But I don’t know :username or :password in advance, however they are in the fixtures file https://github.com/activemerchant/active_merchant/blob/master/test/fixtures.yml here. So how to do this properly?

For an example, in the fixtures.yml file we can see this..

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

Accordingly we can initialize with this..

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

I need to be able to initialize the gateway instance without hard-coding the username:, password: and merchant_account: parameters in the above example.

Thanks in advance!

3

Answers


  1. Chosen as BEST ANSWER

    I think i can answer my own question. One should pass every different initialization with its own hash..

    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
    

    Note that I could pass different options without the need to hardcode any keys, which is what i desired.


  2. You should take a look at environment variables. They let you define variables in a safe palce and refer to them when needed.

    Somewhere you would define PASSWORD=mysecretpassword and then in the Rails code you refer to it as ENV["PASSWORD"]

    There are many ways of doing this. Take a look here:

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

    Login or Signup to reply.
  3. The username, password, and merchant_account are instance variables so you need to change them with 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)
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search