dinero_mail_ipn 1.1.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|