Class: DineroMailIpn::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/dinero_mail_ipn.rb

Overview

Cliente para Dinero Mail API (v1 y v2)

Cliente para consumir los métodos de la API IPN v1 y v2.

Cliente para IPN v1

DineroMailIpn::Client.new(:email => '[email protected]', :account => '17128254', :pin => 'AYCN7IXDTM')

Cliente para IPN v2

DineroMailIpn::Client.new(:email => '[email protected]',
  :account => '17128254', :pin => 'AYCN7IXDTM', :password => 'ipnv2password')

Paises

Por default el Cliente se crea para una cuenta de Argentina. Para consultar la API de una cuenta en otro país:

DineroMailIpn::Client.new(:email => '[email protected]',
  :account => '17128254', :pin => 'AYCN7IXDTM', :pais => 'brasil')

Posibilidades

  • 'argentina'
  • 'chile'
  • 'brasil'
  • 'mexico'

See Also:

Constant Summary collapse

DEFAULT_COUNTRY =

País por default para consultas

'argentina'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Client

Returns a new instance of Client.

Parameters:

  • opts (Hash)

    opciones para crear la instancia

Options Hash (opts):

  • :email (String)

    Email de la cuenta de Dinero Mail

  • :account (String)

    Número de cuenta de Dinero Mail (sin /)

  • :pin (String)

    PIN de la cuenta de Dinero Mail

  • :password (String)

    Contraseña para consultas de IPN v2

  • :pais (String)

    Pais de la cuenta. Por default: 'argentina'



61
62
63
64
65
66
67
# File 'lib/dinero_mail_ipn.rb', line 61

def initialize(opts)
  @email = opts[:email]
  @account = opts[:account]
  @pin = opts[:pin]
  @password = opts[:password]
  @pais = opts[:pais] || DEFAULT_COUNTRY
end

Instance Attribute Details

#accountObject (readonly)

Returns the value of attribute account.



50
51
52
# File 'lib/dinero_mail_ipn.rb', line 50

def 
  @account
end

#emailObject (readonly)

Returns the value of attribute email.



50
51
52
# File 'lib/dinero_mail_ipn.rb', line 50

def email
  @email
end

#paisObject (readonly)

Returns the value of attribute pais.



50
51
52
# File 'lib/dinero_mail_ipn.rb', line 50

def pais
  @pais
end

#passwordObject (readonly)

Returns the value of attribute password.



50
51
52
# File 'lib/dinero_mail_ipn.rb', line 50

def password
  @password
end

#pinObject (readonly)

Returns the value of attribute pin.



50
51
52
# File 'lib/dinero_mail_ipn.rb', line 50

def pin
  @pin
end

Instance Method Details

#consulta_pago(start_date, end_date) ⇒ ConsultaPagoResponse

Parameters:

  • Comienzo (Date)

    del período

  • Fin (Date)

    del período

Returns:



74
75
76
77
78
79
# File 'lib/dinero_mail_ipn.rb', line 74

def consulta_pago(start_date, end_date)
  params = default_params.merge({:StartDate => format_date(start_date), :EndDate => format_date(end_date)})
  response = self.class.get("https://#{@pais}.dineromail.com/vender/ConsultaPago.asp", :query => params)
  ConsultaPagoResponse.new(
    response.parsed_response)
end

#consulta_transacciones(transacciones = []) ⇒ Reporter

Devuelve un objeto [Reporter] con un array de objetos tipo [Report].

Los objetos de tipo [Report] están asociados a los ID de transacciones.

Ejemplo:

client.consulta_transacciones([1,2])

Parameters:

  • Array (Array)

    de transacciones

Returns:

  • (Reporter)

    Con todos los [Report] correspondientes



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/dinero_mail_ipn.rb', line 100

def consulta_transacciones(transacciones = [])
  xml_builder = Nokogiri::XML::Builder.new do |xml|
    xml.REPORTE {
      xml.NROCTA @account
      xml.DETALLE {
        xml.CONSULTA {
          xml.CLAVE @password
          xml.TIPO 1
          xml.OPERACIONES {
            transacciones.each do |transaction_id|
              xml.ID transaction_id
            end
          }
        }
      }
    }
  end
  body = xml_builder.to_xml
  body.sub!("<?xml version=\"1.0\"?>", "")
  body.gsub!(/\s/, '')

  response = self.class.post("http://#{@pais}.dineromail.com/Vender/Consulta_IPN.asp", :body => "DATA=#{body}",
                            :headers => {"Content-type" => "application/x-www-form-urlencoded", "Content-length" => "#{body.length}" }).response.body
  DineroMailIpn::Reporter.new(response)
end

#format_date(a_date) ⇒ String

Devuelve un String con formato YYYYMMDD. (Por ej.: "20110201")

Parameters:

  • Una (Date)

    fecha

Returns:

  • (String)

    Fecha en formato Dinero Mail



85
86
87
# File 'lib/dinero_mail_ipn.rb', line 85

def format_date(a_date)
  a_date.strftime("%Y%m%d")
end