tray-checkout 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +3 -0
- data/README.rdoc +86 -1
- data/lib/tray/checkout/constants.rb +53 -0
- data/lib/tray/checkout/hash.rb +22 -0
- data/lib/tray/checkout/parser.rb +73 -27
- data/lib/tray/checkout/transaction.rb +6 -2
- data/lib/tray/checkout/version.rb +1 -1
- data/lib/tray/checkout/web_service.rb +2 -1
- data/lib/tray-checkout.rb +2 -0
- data/spec/support/mock_request.rb +23 -0
- data/spec/support/responses/create_failure_validation_errors.xml +51 -0
- data/spec/support/responses/create_success_boleto.xml +284 -0
- data/spec/support/responses/create_success_mastercard.xml +272 -0
- data/spec/support/responses/get_failure_not_found.xml +14 -0
- data/spec/support/responses/get_success_boleto.xml +111 -0
- data/spec/tray/checkout/hash_spec.rb +66 -0
- data/spec/tray/checkout/parser_spec.rb +202 -0
- data/spec/tray/checkout/transaction_spec.rb +81 -0
- data/spec/tray/checkout/web_service_spec.rb +16 -0
- metadata +35 -13
@@ -0,0 +1,111 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<transaction>
|
3
|
+
<data_response>
|
4
|
+
<transaction>
|
5
|
+
<transaction_token>522045453u5uu32e0u8014f060uuu5uu</transaction_token>
|
6
|
+
<transaction_id type="integer">501</transaction_id>
|
7
|
+
<payment_method_id type="integer">6</payment_method_id>
|
8
|
+
<payment_method_name>Boleto Bancario</payment_method_name>
|
9
|
+
<status_id type="integer">4</status_id>
|
10
|
+
<status_name>Aguardando Pagamento</status_name>
|
11
|
+
<order_number>R1240</order_number>
|
12
|
+
<price_original type="decimal">213.21</price_original>
|
13
|
+
<price_payment type="decimal">213.21</price_payment>
|
14
|
+
<price_seller type="decimal">199.19</price_seller>
|
15
|
+
<price_additional type="decimal">0.0</price_additional>
|
16
|
+
<price_discount type="decimal">0.0</price_discount>
|
17
|
+
<shipping_type>Sedex</shipping_type>
|
18
|
+
<shipping_price type="decimal">1.23</shipping_price>
|
19
|
+
<split type="integer">1</split>
|
20
|
+
<date_transaction>2012-12-03T18:08:37</date_transaction>
|
21
|
+
<url_notification>http://prodis.blog.br/tray_notification</url_notification>
|
22
|
+
<seller_token>949u5uu9ef36f7u</seller_token>
|
23
|
+
<free nil="true"></free>
|
24
|
+
<date_payment>xxx</date_payment>
|
25
|
+
<transaction_affiliates type="array"/>
|
26
|
+
<schedule_credit></schedule_credit>
|
27
|
+
<url_shipping nil="true"></url_shipping>
|
28
|
+
<url_process nil="true"></url_process>
|
29
|
+
<url_cancel nil="true"></url_cancel>
|
30
|
+
<url_stock nil="true"></url_stock>
|
31
|
+
<url_success nil="true"></url_success>
|
32
|
+
<url_css nil="true"></url_css>
|
33
|
+
<available_payment_methods nil="true"></available_payment_methods>
|
34
|
+
<sub_store nil="true"></sub_store>
|
35
|
+
<payment>
|
36
|
+
<payment_method_id type="integer">6</payment_method_id>
|
37
|
+
<payment_method_name>Boleto Bancario</payment_method_name>
|
38
|
+
<price_payment type="decimal">213.21</price_payment>
|
39
|
+
<split type="integer">1</split>
|
40
|
+
<number_proccess type="integer">718</number_proccess>
|
41
|
+
<url_payment>http://checkout.sandbox.tray.com.br/payment/billet/u9uuu8731319u59u3073u9011uu6u6uu</url_payment>
|
42
|
+
<date_approval>2012-12-04T00:55:15</date_approval>
|
43
|
+
<selling_message></selling_message>
|
44
|
+
<payment_response></payment_response>
|
45
|
+
<date_payment>xxx</date_payment>
|
46
|
+
<number_of_voucher_sales></number_of_voucher_sales>
|
47
|
+
<card_id nil="true"></card_id>
|
48
|
+
</payment>
|
49
|
+
<products type="array">
|
50
|
+
<product>
|
51
|
+
<code>LOGO-8278</code>
|
52
|
+
<url_img nil="true"></url_img>
|
53
|
+
<quantity type="decimal">2.0</quantity>
|
54
|
+
<description>Logo Prodis</description>
|
55
|
+
<extra nil="true"></extra>
|
56
|
+
<sku_code nil="true"></sku_code>
|
57
|
+
<price_unit type="decimal">100.99</price_unit>
|
58
|
+
</product>
|
59
|
+
<product>
|
60
|
+
<code>877</code>
|
61
|
+
<url_img nil="true"></url_img>
|
62
|
+
<quantity type="decimal">1.0</quantity>
|
63
|
+
<description>Outro produto</description>
|
64
|
+
<extra nil="true"></extra>
|
65
|
+
<sku_code nil="true"></sku_code>
|
66
|
+
<price_unit type="decimal">10.0</price_unit>
|
67
|
+
</product>
|
68
|
+
</products>
|
69
|
+
<company>
|
70
|
+
<cnpj>22132477000163</cnpj>
|
71
|
+
<trade_name>Bo Company</trade_name>
|
72
|
+
<cpf>12345678909</cpf>
|
73
|
+
<url></url>
|
74
|
+
<company_name>Bo Company</company_name>
|
75
|
+
<token>949u5uu9ef36f7u</token>
|
76
|
+
<contact>1152360873</contact>
|
77
|
+
<name>Bo Company</name>
|
78
|
+
<business_name>Bo Company</business_name>
|
79
|
+
</company>
|
80
|
+
<customer>
|
81
|
+
<address>
|
82
|
+
<number>123</number>
|
83
|
+
<completion></completion>
|
84
|
+
<city>São Paulo</city>
|
85
|
+
<postal_code>04094050</postal_code>
|
86
|
+
<state>SP</state>
|
87
|
+
<street>Avenida Pedro Alvares Cabral</street>
|
88
|
+
<neighborhood>Parque Ibirapuera</neighborhood>
|
89
|
+
</address>
|
90
|
+
<cpf>18565842673</cpf>
|
91
|
+
<addresses type="array">
|
92
|
+
<address>
|
93
|
+
<number>123</number>
|
94
|
+
<completion></completion>
|
95
|
+
<city>São Paulo</city>
|
96
|
+
<postal_code>04094050</postal_code>
|
97
|
+
<state>SP</state>
|
98
|
+
<street>Avenida Pedro Alvares Cabral</street>
|
99
|
+
<neighborhood>Parque Ibirapuera</neighborhood>
|
100
|
+
</address>
|
101
|
+
</addresses>
|
102
|
+
<email>pedro@bo.com.br</email>
|
103
|
+
<token>6buu8f3uu85u567</token>
|
104
|
+
<name>Pedro Bonamides</name>
|
105
|
+
</customer>
|
106
|
+
</transaction>
|
107
|
+
</data_response>
|
108
|
+
<message_response>
|
109
|
+
<message>success</message>
|
110
|
+
</message_response>
|
111
|
+
</transaction>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Hash do
|
5
|
+
describe "#symbolize_all_keys!" do
|
6
|
+
it "symbolize keys" do
|
7
|
+
hash = { "text" => "Um texto", "number" => 456 }
|
8
|
+
hash.symbolize_all_keys!
|
9
|
+
hash.should == { text: "Um texto", number: 456 }
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when hash has nested hashes" do
|
13
|
+
it "symbolize keys in nested hashes too" do
|
14
|
+
hash = {
|
15
|
+
"customer" => {
|
16
|
+
"name" => "Pedro Bonamides",
|
17
|
+
"email" => "pedro@bo.com.br",
|
18
|
+
"address" => {
|
19
|
+
"street" => "Avenida Pedro Álvares Cabral",
|
20
|
+
"number" => "123",
|
21
|
+
"city" => "São Paulo",
|
22
|
+
"state" => "SP",
|
23
|
+
"postal_code" => "04094050",
|
24
|
+
},
|
25
|
+
}
|
26
|
+
}
|
27
|
+
hash.symbolize_all_keys!
|
28
|
+
hash.should == {
|
29
|
+
customer: {
|
30
|
+
name: "Pedro Bonamides",
|
31
|
+
email: "pedro@bo.com.br",
|
32
|
+
address: {
|
33
|
+
street: "Avenida Pedro Álvares Cabral",
|
34
|
+
number: "123",
|
35
|
+
city: "São Paulo",
|
36
|
+
state: "SP",
|
37
|
+
postal_code: "04094050",
|
38
|
+
},
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when hash value is Array with hash elements" do
|
45
|
+
it "symbolize keys in array elements too" do
|
46
|
+
hash = {
|
47
|
+
"error_response" => {
|
48
|
+
"errors" => [
|
49
|
+
{ "code" => 3042, "message" => "Transação não encontrada" },
|
50
|
+
{ "code" => 9999, "message" => "Qualquer outra mensagem" }
|
51
|
+
]
|
52
|
+
}
|
53
|
+
}
|
54
|
+
hash.symbolize_all_keys!
|
55
|
+
hash.should == {
|
56
|
+
error_response: {
|
57
|
+
errors: [
|
58
|
+
{ code: 3042, message: "Transação não encontrada" },
|
59
|
+
{ code: 9999, message: "Qualquer outra mensagem" }
|
60
|
+
]
|
61
|
+
}
|
62
|
+
}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Tray::Checkout::Parser do
|
5
|
+
let(:parser) { Tray::Checkout::Parser.new }
|
6
|
+
|
7
|
+
describe "#response" do
|
8
|
+
context "with success response" do
|
9
|
+
let(:xml) { body_for :get_success_boleto }
|
10
|
+
let(:txn) { parser.response(xml) }
|
11
|
+
|
12
|
+
it "returns success" do
|
13
|
+
txn[:success].should be_true
|
14
|
+
end
|
15
|
+
|
16
|
+
context "returns transaction" do
|
17
|
+
{ transaction_token: "522045453u5uu32e0u8014f060uuu5uu",
|
18
|
+
transaction_id: 501,
|
19
|
+
payment_method: :boleto,
|
20
|
+
payment_method_id: 6,
|
21
|
+
payment_method_name: "Boleto Bancario",
|
22
|
+
status: :waiting_payment,
|
23
|
+
status_id: 4,
|
24
|
+
status_name: "Aguardando Pagamento",
|
25
|
+
order_number: "R1240",
|
26
|
+
price_original: 213.21,
|
27
|
+
price_payment: 213.21,
|
28
|
+
price_seller: 199.19,
|
29
|
+
price_additional: 0.00,
|
30
|
+
price_discount: 0.00,
|
31
|
+
shipping_type: "Sedex",
|
32
|
+
shipping_price: 1.23,
|
33
|
+
split: 1,
|
34
|
+
url_notification: "http://prodis.blog.br/tray_notification",
|
35
|
+
seller_token: "949u5uu9ef36f7u"
|
36
|
+
}.each do |param, value|
|
37
|
+
it param do
|
38
|
+
txn[param].should == value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "date_transaction" do
|
43
|
+
date_transaction = txn[:date_transaction]
|
44
|
+
date_transaction.should be_a(Time)
|
45
|
+
date_transaction.to_s.should == "2012-12-03 18:08:37 UTC"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "returns payment" do
|
50
|
+
{ payment_method: :boleto,
|
51
|
+
payment_method_id: 6,
|
52
|
+
payment_method_name: "Boleto Bancario",
|
53
|
+
price_payment: 213.21,
|
54
|
+
split: 1,
|
55
|
+
number_proccess: 718,
|
56
|
+
url_payment: "http://checkout.sandbox.tray.com.br/payment/billet/u9uuu8731319u59u3073u9011uu6u6uu"
|
57
|
+
}.each do |param, value|
|
58
|
+
it param do
|
59
|
+
txn[:payment][param].should == value
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "date_approval" do
|
64
|
+
date_approval = txn[:payment][:date_approval]
|
65
|
+
date_approval.should be_a(Time)
|
66
|
+
date_approval.to_s.should == "2012-12-04 00:55:15 UTC"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "with error response" do
|
72
|
+
let(:xml) { body_for :get_failure_not_found }
|
73
|
+
let(:txn) { parser.response(xml) }
|
74
|
+
|
75
|
+
it "does not return success" do
|
76
|
+
txn[:success].should be_false
|
77
|
+
end
|
78
|
+
|
79
|
+
context "returns error" do
|
80
|
+
{ code: "003042",
|
81
|
+
message: "Transação não encontrada"
|
82
|
+
}.each do |param, value|
|
83
|
+
it param do
|
84
|
+
txn[:errors].first[param].should == value
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context "with validation error response" do
|
91
|
+
let(:xml) { body_for :create_failure_validation_errors }
|
92
|
+
let(:txn) { parser.response(xml) }
|
93
|
+
|
94
|
+
it "does not return success" do
|
95
|
+
txn[:success].should be_false
|
96
|
+
end
|
97
|
+
|
98
|
+
context "returns error" do
|
99
|
+
{ code: "1",
|
100
|
+
message: "não pode ficar em branco",
|
101
|
+
message_complete: "Tipo não pode ficar em branco",
|
102
|
+
field: "person_addresses.type_address"
|
103
|
+
}.each do |param, value|
|
104
|
+
it param do
|
105
|
+
txn[:errors].first[param].should == value
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "#payment_params!" do
|
113
|
+
let :params do
|
114
|
+
{
|
115
|
+
token_account: "949u5uu9ef36f7u",
|
116
|
+
customer: {
|
117
|
+
name: "Pedro Bonamides",
|
118
|
+
cpf: "18565842673",
|
119
|
+
email: "pedro@bo.com.br",
|
120
|
+
sex: :male,
|
121
|
+
marital_status: :single,
|
122
|
+
contacts: [
|
123
|
+
{ contact_type: :home,
|
124
|
+
number_contact: "1142360873"
|
125
|
+
},
|
126
|
+
{ contact_type: :mobile,
|
127
|
+
number_contact: "11987654321"
|
128
|
+
},
|
129
|
+
{ contact_type: :work,
|
130
|
+
number_contact: "1134567890"
|
131
|
+
}
|
132
|
+
],
|
133
|
+
addresses: [
|
134
|
+
{ address_type: :billing,
|
135
|
+
street: "Avenida Pedro Alvares Cabral",
|
136
|
+
number: "123",
|
137
|
+
neighborhood: "Parque Ibirapuera",
|
138
|
+
postal_code: "04094050",
|
139
|
+
city: "São Paulo",
|
140
|
+
state: "SP"
|
141
|
+
},
|
142
|
+
{ address_type: :delivery,
|
143
|
+
street: "Avenida Pedro Alvares Cabral",
|
144
|
+
number: "123",
|
145
|
+
neighborhood: "Parque Ibirapuera",
|
146
|
+
postal_code: "04094050",
|
147
|
+
city: "São Paulo",
|
148
|
+
state: "SP"
|
149
|
+
}
|
150
|
+
]
|
151
|
+
},
|
152
|
+
transaction: {
|
153
|
+
order_number: "R1245",
|
154
|
+
shipping_type: "Sedex",
|
155
|
+
shipping_price: 13.94,
|
156
|
+
url_notification: "http://prodis.blog.br/tray_notification"
|
157
|
+
},
|
158
|
+
transaction_product: [
|
159
|
+
{ code: "LOGO-8278",
|
160
|
+
quantity: 2,
|
161
|
+
price_unit: 100.99,
|
162
|
+
description: "Logo Prodis"
|
163
|
+
}
|
164
|
+
],
|
165
|
+
payment: {
|
166
|
+
payment_method: :mastercard,
|
167
|
+
split: 3,
|
168
|
+
card_name: "ZEFINHA NOCEGA",
|
169
|
+
card_number: "5105105105105100",
|
170
|
+
card_expdate_month: "09",
|
171
|
+
card_expdate_year: "2015",
|
172
|
+
card_cvv: "123"
|
173
|
+
}
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
let(:txn) { parser.payment_params!(params) }
|
178
|
+
|
179
|
+
it "sets customer gender expect API value" do
|
180
|
+
txn[:customer][:gender].should == "M"
|
181
|
+
end
|
182
|
+
|
183
|
+
it "sets customer relationship expect API value" do
|
184
|
+
txn[:customer][:relationship].should == "S"
|
185
|
+
end
|
186
|
+
|
187
|
+
it "sets customer contact type expect API value" do
|
188
|
+
txn[:customer][:contacts][0][:type_contact].should == "H"
|
189
|
+
txn[:customer][:contacts][1][:type_contact].should == "M"
|
190
|
+
txn[:customer][:contacts][2][:type_contact].should == "W"
|
191
|
+
end
|
192
|
+
|
193
|
+
it "sets customer address type expect API value" do
|
194
|
+
txn[:customer][:addresses][0][:type_address].should == "B"
|
195
|
+
txn[:customer][:addresses][1][:type_address].should == "D"
|
196
|
+
end
|
197
|
+
|
198
|
+
it "sets payment method ID expect API value" do
|
199
|
+
txn[:payment][:payment_method_id].should == 4
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Tray::Checkout::Transaction do
|
5
|
+
let(:transaction) { Tray::Checkout::Transaction.new }
|
6
|
+
|
7
|
+
describe "#get" do
|
8
|
+
context "when transaction is found" do
|
9
|
+
before :each do
|
10
|
+
mock_request_for(:get_success_boleto)
|
11
|
+
@txn = transaction.get("522045453u5uu32e0u8014f060uuu5uu")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns success" do
|
15
|
+
@txn[:success].should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns transaction data" do
|
19
|
+
@txn[:transaction_token].should == "522045453u5uu32e0u8014f060uuu5uu"
|
20
|
+
@txn[:transaction_id].should == 501
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns payment data" do
|
24
|
+
@txn[:payment][:payment_method_name].should == "Boleto Bancario"
|
25
|
+
@txn[:payment][:url_payment].should == "http://checkout.sandbox.tray.com.br/payment/billet/u9uuu8731319u59u3073u9011uu6u6uu"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when transaction is not found" do
|
30
|
+
before :each do
|
31
|
+
mock_request_for(:get_failure_not_found)
|
32
|
+
@txn = transaction.get("987asd654lkj321qwe098poi")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "does not return success" do
|
36
|
+
@txn[:success].should be_false
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns errors" do
|
40
|
+
@txn[:errors].first[:code].should == "003042"
|
41
|
+
@txn[:errors].first[:message].should == "Transação não encontrada"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#create" do
|
47
|
+
context "successful" do
|
48
|
+
before :each do
|
49
|
+
mock_request_for(:create_success_mastercard)
|
50
|
+
@txn = transaction.create(fake: "fake params")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "returns success" do
|
54
|
+
@txn[:success].should be_true
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns transaction data" do
|
58
|
+
@txn[:transaction_token].should == "u522169ce59763uu717160u4u1183u43"
|
59
|
+
@txn[:status].should == :approved
|
60
|
+
@txn[:payment_method].should == :mastercard
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "unsuccess" do
|
65
|
+
before :each do
|
66
|
+
mock_request_for(:create_failure_validation_errors)
|
67
|
+
@txn = transaction.create(fake: "fake params")
|
68
|
+
end
|
69
|
+
|
70
|
+
it "does not return success" do
|
71
|
+
@txn[:success].should be_false
|
72
|
+
end
|
73
|
+
|
74
|
+
it "returns error" do
|
75
|
+
@txn[:errors].first[:code].should == "1"
|
76
|
+
@txn[:errors].first[:message].should == "não pode ficar em branco"
|
77
|
+
@txn[:errors].first[:message_complete].should == "Tipo não pode ficar em branco"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Tray::Checkout::WebService do
|
5
|
+
describe "#request!" do
|
6
|
+
let(:web_service) { Tray::Checkout::WebService.new() }
|
7
|
+
|
8
|
+
it "returns XML response" do
|
9
|
+
mock_request_for("<xml><fake></fake>")
|
10
|
+
url = Tray::Checkout::Transaction::URL
|
11
|
+
params = { token: "qwe123asd456poi098lkj765" }
|
12
|
+
web_service.request!(url, params).should eql "<xml><fake></fake>"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tray-checkout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &14772780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *14772780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: log-me
|
27
|
-
requirement: &
|
27
|
+
requirement: &14772550 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.0.4
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *14772550
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &14772360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *14772360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &14772090 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '2.12'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *14772090
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: webmock
|
60
|
-
requirement: &
|
60
|
+
requirement: &14771840 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '1.9'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *14771840
|
69
69
|
description: Tray Checkout API
|
70
70
|
email:
|
71
71
|
- prodis@gmail.com
|
@@ -81,11 +81,23 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- lib/tray-checkout.rb
|
83
83
|
- lib/tray/checkout.rb
|
84
|
+
- lib/tray/checkout/constants.rb
|
85
|
+
- lib/tray/checkout/hash.rb
|
84
86
|
- lib/tray/checkout/parser.rb
|
85
87
|
- lib/tray/checkout/transaction.rb
|
86
88
|
- lib/tray/checkout/version.rb
|
87
89
|
- lib/tray/checkout/web_service.rb
|
88
90
|
- spec/spec_helper.rb
|
91
|
+
- spec/support/mock_request.rb
|
92
|
+
- spec/support/responses/create_failure_validation_errors.xml
|
93
|
+
- spec/support/responses/create_success_boleto.xml
|
94
|
+
- spec/support/responses/create_success_mastercard.xml
|
95
|
+
- spec/support/responses/get_failure_not_found.xml
|
96
|
+
- spec/support/responses/get_success_boleto.xml
|
97
|
+
- spec/tray/checkout/hash_spec.rb
|
98
|
+
- spec/tray/checkout/parser_spec.rb
|
99
|
+
- spec/tray/checkout/transaction_spec.rb
|
100
|
+
- spec/tray/checkout/web_service_spec.rb
|
89
101
|
- spec/tray/checkout_spec.rb
|
90
102
|
- tray-checkout.gemspec
|
91
103
|
homepage: https://github.com/prodis/tray-checkout
|
@@ -109,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
121
|
version: '0'
|
110
122
|
segments:
|
111
123
|
- 0
|
112
|
-
hash:
|
124
|
+
hash: -671685741
|
113
125
|
requirements: []
|
114
126
|
rubyforge_project:
|
115
127
|
rubygems_version: 1.8.16
|
@@ -118,4 +130,14 @@ specification_version: 3
|
|
118
130
|
summary: Tray Checkout API
|
119
131
|
test_files:
|
120
132
|
- spec/spec_helper.rb
|
133
|
+
- spec/support/mock_request.rb
|
134
|
+
- spec/support/responses/create_failure_validation_errors.xml
|
135
|
+
- spec/support/responses/create_success_boleto.xml
|
136
|
+
- spec/support/responses/create_success_mastercard.xml
|
137
|
+
- spec/support/responses/get_failure_not_found.xml
|
138
|
+
- spec/support/responses/get_success_boleto.xml
|
139
|
+
- spec/tray/checkout/hash_spec.rb
|
140
|
+
- spec/tray/checkout/parser_spec.rb
|
141
|
+
- spec/tray/checkout/transaction_spec.rb
|
142
|
+
- spec/tray/checkout/web_service_spec.rb
|
121
143
|
- spec/tray/checkout_spec.rb
|