class Avangate::SOAP

Public Class Methods

add_product(options={}) click to toggle source
# File lib/avangate.rb, line 22
def self.add_product(options={})
  @options = options
  require_session_id
  require_product_id
  response = client.call :add_product, message: add_product_params
  return response.body[:add_product_response][:add_product_return]
end
get_product_by_code(options={}) click to toggle source
# File lib/avangate.rb, line 38
def self.get_product_by_code(options={})
  @options = options
  require_session_id
  require_product_code
  response = client.call :get_product_by_code, message: get_product_by_code_params
  return response.body[:get_product_by_code_response][:get_product_by_code_return]
end
login() click to toggle source
# File lib/avangate.rb, line 13
def self.login
  begin
    response = client.call :login, message: login_params
    return response.body[:login_response][:login_return]
  rescue Savon::SOAPFault => e
    return false
  end
end
set_billing_details(options={}) click to toggle source
# File lib/avangate.rb, line 30
def self.set_billing_details(options={})
  @options = options
  require_session_id
  require_set_billing_details_params
  response = client.call :set_billing_details, message: set_billing_details_params
  return response.body[:set_billing_details_response][:set_billing_details_return]
end

Private Class Methods

add_product_params() click to toggle source
# File lib/avangate.rb, line 96
def self.add_product_params
  quantity = @options[:quantity] ? @options[:quantity] : 1
  {
    sessionID: @options[:session_id],
    ProductId: @options[:product_id],
    Quantity: quantity
  }
end
billing_details() click to toggle source
# File lib/avangate.rb, line 71
def self.billing_details
  billing_details = {}
  billing_details['Address'] = @options[:address]
  billing_details['City'] =  @options[:city]
  billing_details['Country'] =  @options[:country]
  billing_details['Email'] =  @options[:email]
  billing_details['FirstName'] =  @options[:first_name]
  billing_details['LastName'] =  @options[:last_name]
  billing_details['PostalCode'] =  @options[:postal_code]
  billing_details['State'] =  @options[:state]
  billing_details
end
client() click to toggle source
# File lib/avangate.rb, line 84
def self.client
  @client ||= Savon.client(wsdl: END_POINT)
end
data_for_hash() click to toggle source
# File lib/avangate.rb, line 131
def self.data_for_hash
  merchant_code.size.to_s + merchant_code + now.size.to_s + now.to_s
end
get_product_by_code_params() click to toggle source
# File lib/avangate.rb, line 112
def self.get_product_by_code_params
  {
    sessionID: @options[:session_id],
    ProductCode: @options[:product_code]
  }
end
hash() click to toggle source
# File lib/avangate.rb, line 135
def self.hash
  OpenSSL::HMAC.hexdigest  OpenSSL::Digest.new('md5'), secret_key, data_for_hash
end
login_params() click to toggle source
# File lib/avangate.rb, line 88
def self.login_params
  {
      MerchantCode: merchant_code,
      Date: now,
      hash: hash
  }
end
merchant_code() click to toggle source
# File lib/avangate.rb, line 119
def self.merchant_code
  Avangate::Base.merchant_code
end
now() click to toggle source
# File lib/avangate.rb, line 123
def self.now
  Time.now.utc.strftime "%Y-%m-%d %H:%M:%S"
end
require_product_code() click to toggle source
# File lib/avangate.rb, line 56
def self.require_product_code
  raise MissingProductCode, "missing param product_code" unless @options[:product_code]
end
require_product_id() click to toggle source
# File lib/avangate.rb, line 52
def self.require_product_id
  raise MissingProductId, "missing param product_id" unless @options[:product_id]
end
require_session_id() click to toggle source
# File lib/avangate.rb, line 48
def self.require_session_id
  raise MissingSessionId, "missing param session_id" unless @options[:session_id]
end
require_set_billing_details_params() click to toggle source
# File lib/avangate.rb, line 60
def self.require_set_billing_details_params
  raise MissingAddress, "missing param address" unless @options[:address]
  raise MissingCity, "missing param city" unless @options[:city]
  raise MissingCountry, "missing param country" unless @options[:country]
  raise MissingEmail, "missing param email" unless @options[:email]
  raise MissingFirstName, "missing param first_name" unless @options[:first_name]
  raise MissingLastName, "missing param last_name" unless @options[:last_name]
  raise MissingPostalCode, "missing param postal_code" unless @options[:postal_code]
  raise MissingState, "missing param state" unless @options[:state] or !STATE_REQUIRED_COUNTRIES.include? @options[:country]
end
secret_key() click to toggle source
# File lib/avangate.rb, line 127
def self.secret_key
  Avangate::Base.secret_key
end
set_billing_details_params() click to toggle source
# File lib/avangate.rb, line 105
def self.set_billing_details_params
  {
      sessionID: @options[:session_id],
      BillingDetails: billing_details
  }
end