Class: DineroMailIpn::ConsultaPagoResponse

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

Overview

Respuesta a Consulta IPN v1

Clase que agrega información de valor para entender la respuesta de Dinero Mail IPN v1.

Para más información ver: https://github.com/etagwerker/dinero_mail_ipn/blob/master/resources/IPN_es.pdf

Ejemplos:

response = ConsultaPagoResponse.new({"Report"=>{"Email"=>"[email protected]", "Acount"=>"17128254",
  "Pin"=>nil, "StartDate"=>"20110603", "EndDate"=>"20110703", "XML"=>"1",
  "State"=>"1", "Pays"=>nil, "Collections"=>nil, "Tickets"=>nil, "Receptions"=>nil,
  "Retreats"=>nil, "Credits"=>nil, "Debits"=>nil}})
response.state
# 1
response.ok?
# true
response.state_description
# 'La consulta se realizó correctamente'

Nota

Por ahora las collections de la consulta solo se pueden consultar por un hash (response.dm_hash)

TODO

Agregar más métodos de 'negocio' que tengan métodos útiles.

Constant Summary collapse

STATE_DESCRIPTIONS =
{0 => 'Los parámetros no respetan el formato requerido', 1 => 'La consulta se realizó correctamente', 2 => 'Los valores son incorrectos para realizar la consulta'}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(_hash) ⇒ ConsultaPagoResponse

Crea una ConsultaPagoResponse usando un hash en base a la respuesta de Dinero Mail.

Por ejemplo:

ConsultaPagoResponse.new({"Report"=>{"Email"=>"[email protected]", "Acount"=>"17128254",
  "Pin"=>nil, "StartDate"=>"20110603", "EndDate"=>"20110703", "XML"=>"1",
  "State"=>"1", "Pays"=>nil, "Collections"=>nil, "Tickets"=>nil, "Receptions"=>nil,
  "Retreats"=>nil, "Credits"=>nil, "Debits"=>nil}})


45
46
47
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 45

def initialize(_hash)
  self.dm_hash = _hash
end

Instance Attribute Details

#dm_hashObject

Returns the value of attribute dm_hash.



33
34
35
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 33

def dm_hash
  @dm_hash
end

Instance Method Details

#error?Boolean

Devuelve true si la respuesta devolvió error

Returns:

  • (Boolean)


59
60
61
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 59

def error?
  !ok?
end

#ok?Boolean

Devuelve true si la respuesta no devolvió error

Returns:

  • (Boolean)


52
53
54
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 52

def ok?
  state == "1"
end

#paymentsArray

Devuelve un Array de objetos tipo Payment

Returns:

  • (Array)

    Objetos de tipo Payment



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 66

def payments
  return @payments if @payments

  @payments = []
  begin
    if dm_hash["Report"]["Pays"]
      pays = dm_hash["Report"]["Pays"]["Pay"]

      if pays
        case pays.class.name
        when "Hash"
          @payments << Payment.new(pays)
        when "Array"
          pays.each { |pay| @payments << Payment.new(pay) }
        end
      end
    end
  rescue Exception => e
    raise MalformedResponseError.new("Error procesando pagos: #{e.message}")
  end
  @payments
end

#stateObject

Devuelve el código de estado de la respuesta.

Posibilidades: "0", "1" o "2".

Raises:



94
95
96
97
98
99
100
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 94

def state
  begin
    self.dm_hash["Report"]["State"]
  rescue Exception => e
    raise MalformedResponseError.new("No se encontró /Report/State en el XML de respuesta")
  end
end

#state_descriptionObject

Devuelve la descripción del código de respuesta según la documentación



104
105
106
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 104

def state_description
  STATE_DESCRIPTIONS[state.to_i]
end