dinero_mail_ipn 1.1.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +14 -2
- data/dinero_mail_ipn.gemspec +2 -0
- data/lib/dinero_mail_ipn/consulta_pago_response.rb +11 -8
- data/lib/dinero_mail_ipn/item.rb +2 -2
- data/lib/dinero_mail_ipn/payment.rb +6 -6
- data/lib/dinero_mail_ipn/version.rb +1 -1
- data/test/fixtures/ConsultaPagoOKWith2Pays.xml +70 -0
- data/test/fixtures/{ConsultaPagoOkWithPays.xml → ConsultaPagoOkWith1Pay.xml} +0 -0
- data/test/test_dinero_mail_ipn.rb +31 -7
- metadata +42 -3
data/Gemfile.lock
CHANGED
@@ -1,30 +1,42 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
|
4
|
+
dinero_mail_ipn (2.0.2)
|
5
|
+
chronic
|
5
6
|
httparty (~> 0.8.1)
|
6
7
|
nokogiri (~> 1.5.0)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: http://rubygems.org/
|
10
11
|
specs:
|
12
|
+
chronic (0.8.0)
|
13
|
+
coderay (1.0.8)
|
11
14
|
fakeweb (1.3.0)
|
12
15
|
httparty (0.8.1)
|
13
16
|
multi_json
|
14
17
|
multi_xml
|
18
|
+
method_source (0.8.1)
|
15
19
|
multi_json (1.0.4)
|
16
20
|
multi_xml (0.4.1)
|
17
21
|
nokogiri (1.5.0)
|
22
|
+
pry (0.9.10)
|
23
|
+
coderay (~> 1.0.5)
|
24
|
+
method_source (~> 0.8)
|
25
|
+
slop (~> 3.3.1)
|
26
|
+
rake (0.9.2.2)
|
18
27
|
redcarpet (2.0.1)
|
19
28
|
shoulda (2.11.3)
|
29
|
+
slop (3.3.3)
|
20
30
|
yard (0.7.4)
|
21
31
|
|
22
32
|
PLATFORMS
|
23
33
|
ruby
|
24
34
|
|
25
35
|
DEPENDENCIES
|
36
|
+
dinero_mail_ipn!
|
26
37
|
fakeweb (~> 1.3.0)
|
27
|
-
|
38
|
+
pry
|
39
|
+
rake
|
28
40
|
redcarpet (~> 2.0.1)
|
29
41
|
shoulda (~> 2.11.3)
|
30
42
|
yard (~> 0.7.4)
|
data/dinero_mail_ipn.gemspec
CHANGED
@@ -30,4 +30,6 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency 'fakeweb', '~> 1.3.0'
|
31
31
|
s.add_development_dependency 'yard', '~> 0.7.4'
|
32
32
|
s.add_development_dependency 'redcarpet', '~> 2.0.1'
|
33
|
+
s.add_development_dependency 'rake'
|
34
|
+
s.add_development_dependency 'pry'
|
33
35
|
end
|
@@ -23,14 +23,14 @@ module DineroMailIpn
|
|
23
23
|
#
|
24
24
|
# ## Nota
|
25
25
|
#
|
26
|
-
# Por ahora las collections de la consulta solo se pueden consultar por un hash (response.
|
26
|
+
# Por ahora las collections de la consulta solo se pueden consultar por un hash (response.dm_hash)
|
27
27
|
#
|
28
28
|
# ## TODO
|
29
29
|
#
|
30
30
|
# Agregar más métodos de 'negocio' que tengan métodos útiles.
|
31
31
|
class ConsultaPagoResponse
|
32
32
|
|
33
|
-
attr_accessor :
|
33
|
+
attr_accessor :dm_hash
|
34
34
|
|
35
35
|
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'}
|
36
36
|
|
@@ -43,7 +43,7 @@ module DineroMailIpn
|
|
43
43
|
# "State"=>"1", "Pays"=>nil, "Collections"=>nil, "Tickets"=>nil, "Receptions"=>nil,
|
44
44
|
# "Retreats"=>nil, "Credits"=>nil, "Debits"=>nil}})
|
45
45
|
def initialize(_hash)
|
46
|
-
self.
|
46
|
+
self.dm_hash = _hash
|
47
47
|
end
|
48
48
|
|
49
49
|
# Devuelve true si la respuesta no devolvió error
|
@@ -68,11 +68,14 @@ module DineroMailIpn
|
|
68
68
|
|
69
69
|
@payments = []
|
70
70
|
begin
|
71
|
-
pays = self.
|
71
|
+
pays = self.dm_hash["Report"]["Pays"]["Pay"]
|
72
72
|
|
73
73
|
if pays
|
74
|
-
pays.
|
75
|
-
|
74
|
+
case pays.class.name
|
75
|
+
when "Hash"
|
76
|
+
@payments << Payment.new(pays)
|
77
|
+
when "Array"
|
78
|
+
pays.each { |pay| @payments << Payment.new(pay) }
|
76
79
|
end
|
77
80
|
end
|
78
81
|
rescue Exception => e
|
@@ -81,14 +84,14 @@ module DineroMailIpn
|
|
81
84
|
@payments
|
82
85
|
end
|
83
86
|
|
84
|
-
# Devuelve el código de estado de la respuesta.
|
87
|
+
# Devuelve el código de estado de la respuesta.
|
85
88
|
#
|
86
89
|
# Posibilidades: "0", "1" o "2".
|
87
90
|
#
|
88
91
|
# @raise [MalformedResponseError] Si la respuesta no tiene /Report/State
|
89
92
|
def state
|
90
93
|
begin
|
91
|
-
self.
|
94
|
+
self.dm_hash["Report"]["State"]
|
92
95
|
rescue Exception => e
|
93
96
|
raise MalformedResponseError.new("No se encontró /Report/State en el XML de respuesta")
|
94
97
|
end
|
data/lib/dinero_mail_ipn/item.rb
CHANGED
@@ -25,14 +25,14 @@ module DineroMailIpn
|
|
25
25
|
class Payment
|
26
26
|
|
27
27
|
# @private
|
28
|
-
def initialize(
|
29
|
-
@
|
28
|
+
def initialize(_h)
|
29
|
+
@dm_hash = _h
|
30
30
|
end
|
31
31
|
|
32
32
|
# Devuelve un {String} o nil
|
33
33
|
# @return [String]
|
34
34
|
def [](key)
|
35
|
-
@
|
35
|
+
@dm_hash[key]
|
36
36
|
end
|
37
37
|
|
38
38
|
# Devuelve un {Array} de objetos tipo {Item}
|
@@ -42,9 +42,9 @@ module DineroMailIpn
|
|
42
42
|
|
43
43
|
@items = []
|
44
44
|
|
45
|
-
unless @
|
46
|
-
@
|
47
|
-
@items << Item.new(
|
45
|
+
unless @dm_hash["Items"].nil?
|
46
|
+
@dm_hash["Items"].each do |key, _h|
|
47
|
+
@items << Item.new(_h)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<Report>
|
3
|
+
<Email>ernesto@ombushop.com</Email>
|
4
|
+
<Acount>17128254</Acount>
|
5
|
+
<Pin>AYCN7IXDTM</Pin>
|
6
|
+
<StartDate>20110620</StartDate>
|
7
|
+
<EndDate>20110703</EndDate>
|
8
|
+
<XML>1</XML>
|
9
|
+
<State>1</State>
|
10
|
+
<Pays>
|
11
|
+
<Pay trx_id="R163000000">
|
12
|
+
<Trx_Date>2011-12-20 05:44:56</Trx_Date>
|
13
|
+
<Trx_NombreComprador>Juan Perez</Trx_NombreComprador>
|
14
|
+
<Trx_Email>juanperez@ombushop.com</Trx_Email>
|
15
|
+
<Trx_Payment>108.00</Trx_Payment>
|
16
|
+
<Trx_ShipAddress></Trx_ShipAddress>
|
17
|
+
<Trx_Comment></Trx_Comment>
|
18
|
+
<Trx_MontoNeto>100.97</Trx_MontoNeto>
|
19
|
+
<Trx_SellerDocumentType>DNI</Trx_SellerDocumentType>
|
20
|
+
<Trx_SellerDocumentNumber>26.000.000</Trx_SellerDocumentNumber>
|
21
|
+
<Trx_Number>12345678</Trx_Number>
|
22
|
+
<Trx_PaymentMethod>Codigo de Barras</Trx_PaymentMethod>
|
23
|
+
<Trx_PaymentMean>Pago Facil</Trx_PaymentMean>
|
24
|
+
<Trx_BuyerDocumentType>DNI</Trx_BuyerDocumentType>
|
25
|
+
<Trx_BuyerDocumentNumber>26000000</Trx_BuyerDocumentNumber>
|
26
|
+
<Trx_BuyerPhone>+540351844232</Trx_BuyerPhone>
|
27
|
+
<Items>
|
28
|
+
<Item Item_Code="SKU123">
|
29
|
+
<Item_Quantity>1</Item_Quantity>
|
30
|
+
<Item_Description>Zapatos de Cuero</Item_Description>
|
31
|
+
<Item_Payment>68.00</Item_Payment>
|
32
|
+
</Item>
|
33
|
+
</Items>
|
34
|
+
</Pay>
|
35
|
+
<Pay trx_id="R163000001">
|
36
|
+
<Trx_Date>2011-12-21 05:44:56</Trx_Date>
|
37
|
+
<Trx_NombreComprador>Derp Herp</Trx_NombreComprador>
|
38
|
+
<Trx_Email>derp_herp@ombushop.com</Trx_Email>
|
39
|
+
<Trx_Payment>108.00</Trx_Payment>
|
40
|
+
<Trx_ShipAddress></Trx_ShipAddress>
|
41
|
+
<Trx_Comment></Trx_Comment>
|
42
|
+
<Trx_MontoNeto>100.97</Trx_MontoNeto>
|
43
|
+
<Trx_SellerDocumentType>DNI</Trx_SellerDocumentType>
|
44
|
+
<Trx_SellerDocumentNumber>25.000.000</Trx_SellerDocumentNumber>
|
45
|
+
<Trx_Number>12345679</Trx_Number>
|
46
|
+
<Trx_PaymentMethod>Codigo de Barras</Trx_PaymentMethod>
|
47
|
+
<Trx_PaymentMean>Pago Facil</Trx_PaymentMean>
|
48
|
+
<Trx_BuyerDocumentType>DNI</Trx_BuyerDocumentType>
|
49
|
+
<Trx_BuyerDocumentNumber>25000000</Trx_BuyerDocumentNumber>
|
50
|
+
<Trx_BuyerPhone>+540351844231</Trx_BuyerPhone>
|
51
|
+
<Items>
|
52
|
+
<Item Item_Code="SKU123">
|
53
|
+
<Item_Quantity>1</Item_Quantity>
|
54
|
+
<Item_Description>Zapatos de Cuero</Item_Description>
|
55
|
+
<Item_Payment>68.00</Item_Payment>
|
56
|
+
</Item>
|
57
|
+
</Items>
|
58
|
+
</Pay>
|
59
|
+
</Pays>
|
60
|
+
<Collections />
|
61
|
+
<Tickets />
|
62
|
+
<Receptions />
|
63
|
+
<Retreats />
|
64
|
+
<Credits />
|
65
|
+
<Debits />
|
66
|
+
</Report>
|
67
|
+
|
68
|
+
<!-- client = DineroMailIpn::Client.new(email: "isaac.attie@cir-med.com", account: "21353370", pin: "BZLOG9UB72")
|
69
|
+
params = {:XML => 1, :Acount => "21353370", :Pin => "BZLOG9UB72", :Email => "isaac.attie@cir-med.com"}.merge({:StartDate => client.format_date(Date.today - 7), :EndDate => client.format_date(Date.today)})
|
70
|
+
xml = client.class.get("https://argentina.dineromail.com/vender/ConsultaPago.asp", :query => params) -->
|
File without changes
|
@@ -17,25 +17,49 @@ class TestDineroMailIpn < Test::Unit::TestCase
|
|
17
17
|
assert_equal response.state_description, "La consulta se realizó correctamente"
|
18
18
|
end
|
19
19
|
|
20
|
-
should "return OK with
|
20
|
+
should "return OK with 1 payment" do
|
21
21
|
stub_get("/vender/ConsultaPago.asp?XML=1&Acount=17128254&Pin=AYCN7IXDTM&Email=ernesto%40ombushop.com&StartDate=20110702&EndDate=20110703",
|
22
|
-
"
|
22
|
+
"ConsultaPagoOKWith1Pay.xml")
|
23
23
|
client = DineroMailIpn::Client.new(:email => 'ernesto@ombushop.com',
|
24
24
|
:account => '17128254',
|
25
25
|
:pin => 'AYCN7IXDTM')
|
26
26
|
response = client.consulta_pago(Date.new(2011,7,2), Date.new(2011,7,3))
|
27
|
-
assert_equal response.state
|
27
|
+
assert_equal "1", response.state
|
28
|
+
assert_equal 1, response.payments.size
|
29
|
+
assert response.ok?
|
30
|
+
assert_equal "La consulta se realizó correctamente", response.state_description
|
31
|
+
assert !response.payments.empty?
|
32
|
+
payment = response.payments.first
|
33
|
+
assert_equal "juanperez@ombushop.com", payment["Trx_Email"]
|
34
|
+
assert_equal "R163000000", payment["trx_id"]
|
35
|
+
assert payment["Trx_Numbr"].nil?
|
36
|
+
assert !payment.items.empty?
|
37
|
+
item = payment.items.first
|
38
|
+
assert_equal "SKU123", item["Item_Code"]
|
39
|
+
assert_equal "68.00", item["Item_Payment"]
|
40
|
+
assert item["item_quantity"].nil?
|
41
|
+
end
|
42
|
+
|
43
|
+
should "return OK with 2 payments" do
|
44
|
+
stub_get("/vender/ConsultaPago.asp?XML=1&Acount=17128254&Pin=AYCN7IXDTM&Email=ernesto%40ombushop.com&StartDate=20110702&EndDate=20110703",
|
45
|
+
"ConsultaPagoOKWith2Pays.xml")
|
46
|
+
client = DineroMailIpn::Client.new(:email => 'ernesto@ombushop.com',
|
47
|
+
:account => '17128254',
|
48
|
+
:pin => 'AYCN7IXDTM')
|
49
|
+
response = client.consulta_pago(Date.new(2011,7,2), Date.new(2011,7,3))
|
50
|
+
assert_equal "1", response.state
|
51
|
+
assert_equal 2, response.payments.size
|
28
52
|
assert response.ok?
|
29
53
|
assert_equal response.state_description, "La consulta se realizó correctamente"
|
30
54
|
assert !response.payments.empty?
|
31
55
|
payment = response.payments.first
|
32
|
-
assert_equal
|
33
|
-
assert_equal payment["trx_id"]
|
56
|
+
assert_equal "juanperez@ombushop.com", payment["Trx_Email"]
|
57
|
+
assert_equal "R163000000", payment["trx_id"]
|
34
58
|
assert payment["Trx_Numbr"].nil?
|
35
59
|
assert !payment.items.empty?
|
36
60
|
item = payment.items.first
|
37
|
-
assert_equal item["Item_Code"]
|
38
|
-
assert_equal item["Item_Payment"]
|
61
|
+
assert_equal "SKU123", item["Item_Code"]
|
62
|
+
assert_equal "68.00", item["Item_Payment"]
|
39
63
|
assert item["item_quantity"].nil?
|
40
64
|
end
|
41
65
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dinero_mail_ipn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
@@ -124,6 +124,38 @@ dependencies:
|
|
124
124
|
- - ~>
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: 2.0.1
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: rake
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: pry
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
127
159
|
description: Dinero Mail IPN stub
|
128
160
|
email:
|
129
161
|
- ernesto@ombushop.com
|
@@ -152,7 +184,8 @@ files:
|
|
152
184
|
- resources/IPN_es.pdf
|
153
185
|
- script/console
|
154
186
|
- test/fixtures/ConsultaPagoErrorBadCredentials.xml
|
155
|
-
- test/fixtures/
|
187
|
+
- test/fixtures/ConsultaPagoOKWith2Pays.xml
|
188
|
+
- test/fixtures/ConsultaPagoOkWith1Pay.xml
|
156
189
|
- test/fixtures/ConsultaPagoOkWithoutCollections.xml
|
157
190
|
- test/fixtures/ConsultaTransacciones1-2Success.xml
|
158
191
|
- test/fixtures/ConsultaTransacciones1Success.xml
|
@@ -172,12 +205,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
205
|
- - ! '>='
|
173
206
|
- !ruby/object:Gem::Version
|
174
207
|
version: '0'
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
hash: -2281383812012634155
|
175
211
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
212
|
none: false
|
177
213
|
requirements:
|
178
214
|
- - ! '>='
|
179
215
|
- !ruby/object:Gem::Version
|
180
216
|
version: '0'
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
hash: -2281383812012634155
|
181
220
|
requirements: []
|
182
221
|
rubyforge_project: dinero_mail_ipn
|
183
222
|
rubygems_version: 1.8.24
|