class Rubykassa::XmlInterface

Attributes

invoice_id[RW]
language[RW]
total[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/rubykassa/xml_interface.rb, line 11
def initialize &block
  instance_eval &block if block_given?
end

Public Instance Methods

base_url() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 31
def base_url
  "https://merchant.roboxchange.com/WebService/Service.asmx/"
end
get_currencies() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 15
def get_currencies
  request(base_url + transform_method_name(__method__), Hash["MerchantLogin", Rubykassa.login, "Language", @language])
end
get_payment_methods() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 19
def get_payment_methods
  request(base_url + transform_method_name(__method__), Hash["MerchantLogin", Rubykassa.login, "Language", @language])
end
get_rates() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 23
def get_rates
  request(base_url + transform_method_name(__method__), Hash["MerchantLogin", Rubykassa.login, "IncCurrLabel", "", "OutSum", @total.to_s, "Language", @language])
end
op_state() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 27
def op_state
  request(base_url + transform_method_name(__method__), Hash["MerchantLogin", Rubykassa.login, "InvoiceID", @invoice_id.to_s, "Signature", generate_signature])
end

Private Instance Methods

generate_signature() click to toggle source
# File lib/rubykassa/xml_interface.rb, line 37
def generate_signature
  Digest::MD5.hexdigest("#{Rubykassa.login}:#{@invoice_id}:#{Rubykassa.second_password}")
end
request(url, params) click to toggle source
# File lib/rubykassa/xml_interface.rb, line 45
def request url, params
  if Rubykassa.xml_http_method == :get
    converted_params = "?" + params.map {|key, value| "#{key}=#{value}" }.join("&")
    response = Net::HTTP.get_response(URI(url) + converted_params)
  else
    response = Net::HTTP.post_form(URI(url), params)
  end
  raise InvalidResponseError, "Invalid response from the service" unless response.code == "200"
  MultiXml.parse(response.body)
end
transform_method_name(meth) click to toggle source
# File lib/rubykassa/xml_interface.rb, line 41
def transform_method_name meth
  meth.to_s.split('_').map(&:capitalize).join(' ').gsub(/\s/, "")
end