Class: DineroMailIpn::ConsultaPagoResponse
- Inherits:
-
Object
- Object
- DineroMailIpn::ConsultaPagoResponse
- 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
-
#dm_hash ⇒ Object
Returns the value of attribute dm_hash.
Instance Method Summary collapse
-
#error? ⇒ Boolean
Devuelve true si la respuesta devolvió error.
-
#initialize(_hash) ⇒ ConsultaPagoResponse
constructor
Crea una ConsultaPagoResponse usando un hash en base a la respuesta de Dinero Mail.
-
#ok? ⇒ Boolean
Devuelve true si la respuesta no devolvió error.
-
#payments ⇒ Array
Devuelve un Array de objetos tipo Payment.
-
#state ⇒ Object
Devuelve el código de estado de la respuesta.
-
#state_description ⇒ Object
Devuelve la descripción del código de respuesta según la documentación.
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_hash ⇒ Object
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
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
52 53 54 |
# File 'lib/dinero_mail_ipn/consulta_pago_response.rb', line 52 def ok? state == "1" end |
#payments ⇒ Array
Devuelve un Array de objetos 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.}") end @payments end |
#state ⇒ Object
Devuelve el código de estado de la respuesta.
Posibilidades: "0", "1" o "2".
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_description ⇒ Object
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 |