class CobroDigital::Client
Attributes
boletas[RW]
client_to_use[RW]
http_method[RW]
id_comercio[RW]
micrositios[RW]
pagadores[RW]
request_xml[RW]
requests[RW]
sid[RW]
transacciones[RW]
Public Class Methods
new(attrs={})
click to toggle source
# File lib/cobro_digital.rb, line 31 def initialize(attrs={}) @id_comercio = attrs[:id_comercio] @sid = attrs[:sid] @client_to_use = attrs[:con_client].present? ? attrs[:con_client] : CobroDigital::SOAP # @with_handshake = attrs[:handshake].present? ? attrs[:handshake] : true @pagadores = [] @boletas = [] @transacciones = [] @micrositios = [] @request_xml = nil end
Public Instance Methods
call(request)
click to toggle source
# File lib/cobro_digital.rb, line 80 def call(request) send("#{client_to_use}_client", comercio.merge(request)) end
comercio()
click to toggle source
# File lib/cobro_digital.rb, line 84 def comercio { 'idComercio' => @id_comercio, 'sid' => @sid, 'handshake' => Digest::MD5.hexdigest(Time.now.to_f.to_s) } end
https_client(params)
click to toggle source
# File lib/cobro_digital.rb, line 58 def https_client(params) case http_method when CobroDigital::Https::POST uri = URI(CobroDigital::URI) req = "Net::HTTP::#{http_method}".constantize.new(uri) req.set_form_data(params) when CobroDigital::Https::GET uri = URI([CobroDigital::URI, URI.encode_www_form(data)].join('?')) req = "Net::HTTP::#{http_method}".constantize.new(uri) end Net::HTTP.start( uri.hostname, uri.port, use_ssl: uri.scheme == CobroDigital::HTTPS, open_timeout: CobroDigital::TIMEOUT, read_timeout: CobroDigital::TIMEOUT ) do |http| http.request(req) end end
soap_client(params)
click to toggle source
# File lib/cobro_digital.rb, line 43 def soap_client(params) client = Savon.client( wsdl: CobroDigital::WSDL, log_level: :debug, pretty_print_xml: true, open_timeout: CobroDigital::TIMEOUT, read_timeout: CobroDigital::TIMEOUT ) operation = client.operation(:webservice_cobrodigital) request = operation.build(message: { 'parametros_de_entrada' => params.to_json }) @request_xml = request.pretty client.call(:webservice_cobrodigital, message: { 'parametros_de_entrada' => params.to_json }) end