mundipagg_sdk 1.0.3 → 1.2.3rc

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +61 -61
  3. data/lib/gateway/Address/billing_address.rb +34 -32
  4. data/lib/gateway/Address/buyer_address.rb +39 -36
  5. data/lib/gateway/Address/delivery_address.rb +34 -32
  6. data/lib/gateway/BoletoTransaction/boleto_transaction.rb +41 -43
  7. data/lib/gateway/BoletoTransaction/boleto_transaction_options.rb +17 -14
  8. data/lib/gateway/BoletoTransaction/boleto_transaction_report_file.rb +22 -19
  9. data/lib/gateway/CreditCardTransaction/credit_card.rb +30 -29
  10. data/lib/gateway/CreditCardTransaction/credit_card_transaction.rb +33 -31
  11. data/lib/gateway/CreditCardTransaction/credit_card_transaction_options.rb +28 -26
  12. data/lib/gateway/CreditCardTransaction/credit_card_transaction_report_file.rb +31 -28
  13. data/lib/gateway/CreditCardTransaction/manage_credit_card_transaction.rb +14 -11
  14. data/lib/gateway/CreditCardTransaction/retry_sale_credit_card_transaction.rb +14 -12
  15. data/lib/gateway/Gateway.rb +621 -441
  16. data/lib/gateway/InstantBuyData/create_instant_buy_data_request.rb +31 -0
  17. data/lib/gateway/InstantBuyData/update_instant_buy_data_request.rb +11 -0
  18. data/lib/gateway/Merchant/merchant.rb +12 -10
  19. data/lib/gateway/OnlineDebit/online_debit_transaction_report_file.rb +21 -18
  20. data/lib/gateway/Order/order.rb +13 -10
  21. data/lib/gateway/Order/order_transaction_report_file.rb +8 -5
  22. data/lib/gateway/Parsers/boleto_transaction_parser.rb +33 -30
  23. data/lib/gateway/Parsers/credit_card_transaction_parser.rb +42 -39
  24. data/lib/gateway/Parsers/header_parser.rb +16 -13
  25. data/lib/gateway/Parsers/online_debit_transaction_parser.rb +32 -29
  26. data/lib/gateway/Parsers/trailer_parser.rb +16 -14
  27. data/lib/gateway/Person/buyer.rb +32 -32
  28. data/lib/gateway/Person/create_buyer_request.rb +23 -0
  29. data/lib/gateway/Person/person.rb +48 -46
  30. data/lib/gateway/Recurrency/recurrency.rb +24 -22
  31. data/lib/gateway/Sale/create_sale_request.rb +37 -35
  32. data/lib/gateway/Sale/manage_sale_request.rb +18 -16
  33. data/lib/gateway/Sale/query_sale_request.rb +37 -35
  34. data/lib/gateway/Sale/request_data.rb +21 -19
  35. data/lib/gateway/Sale/retry_sale_options.rb +15 -13
  36. data/lib/gateway/Sale/retry_sale_request.rb +23 -22
  37. data/lib/gateway/Sale/sale_data.rb +30 -32
  38. data/lib/gateway/Sale/sale_order_data.rb +18 -16
  39. data/lib/gateway/SalesOption.rb +19 -17
  40. data/lib/gateway/ShoppingCart/shopping_cart.rb +27 -25
  41. data/lib/gateway/ShoppingCart/shopping_cart_item.rb +24 -22
  42. data/lib/gateway/Trailer.rb +8 -5
  43. data/lib/gateway/header.rb +7 -4
  44. data/lib/gateway/post_notification.rb +31 -28
  45. data/lib/gateway/transaction_report_file.rb +47 -44
  46. data/lib/mundipagg_sdk.rb +62 -70
  47. data/mundipagg_sdk.gemspec +19 -19
  48. data/spec/integration/gateway_spec.rb +1022 -733
  49. data/spec/integration/test_helper.rb +68 -68
  50. metadata +7 -21
  51. data/lib/gateway/AntiFraud/anti_fraud_analysis_result.rb +0 -47
  52. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_data.rb +0 -51
  53. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data.rb +0 -41
  54. data/lib/gateway/BaseRequest.rb +0 -11
  55. data/lib/gateway/BaseResponse.rb +0 -17
  56. data/lib/gateway/BoletoTransaction/boleto_transaction_data.rb +0 -44
  57. data/lib/gateway/BoletoTransaction/boleto_transaction_result.rb +0 -35
  58. data/lib/gateway/CreditCardTransaction/credit_card_transaction_data.rb +0 -104
  59. data/lib/gateway/ErrorItem.rb +0 -17
  60. data/lib/gateway/ErrorReport.rb +0 -18
  61. data/lib/gateway/InstantBuy/credit_card_data.rb +0 -41
  62. data/lib/gateway/InstantBuy/get_instant_buy_data_response.rb +0 -18
  63. data/lib/gateway/Sale/create_sale_response.rb +0 -25
  64. data/lib/gateway/Sale/manage_sale_response.rb +0 -15
  65. data/lib/gateway/Sale/query_sale_response.rb +0 -18
  66. data/lib/gateway/Sale/retry_sale_response.rb +0 -14
  67. data/lib/gateway/address.rb +0 -25
@@ -1,19 +1,19 @@
1
- Gem::Specification.new do |s|
2
- s.name = 'mundipagg_sdk'
3
- s.summary = 'MundiPagg Ruby Client Library'
4
- s.description = 'Ruby library for integrating with the MundiPagg payment web services'
5
- s.version = '1.0.3' # Major.Minor.Revision
6
- s.author = 'MundiPagg'
7
- s.email = 'github@mundipagg.com'
8
- s.homepage = 'http://www.mundipagg.com/'
9
- s.files = Dir.glob ["README.md", "LICENSE", "lib/**/*.{rb}", "spec/**/*", "*.gemspec"]
10
- s.add_dependency 'rest-client', '~> 1.8', '>= 1.8.0'
11
- s.add_dependency 'rspec', '~> 3.3', '>= 3.3.0'
12
- s.add_dependency 'nori', '~> 2.6', '>= 2.6.0'
13
- s.add_dependency 'gyoku', '~> 1.3', '>= 1.3.1'
14
- s.add_dependency 'nokogiri', '~> 1.6', '>= 1.6.6.2'
15
- s.add_dependency 'ffi', '~> 1.9', '>= 1.9.10'
16
- s.add_dependency 'bundler', '~> 1.10', '>= 1.10.6'
17
- s.required_ruby_version = '>= 2.1.7'
18
- s.license = 'Apache 2.0'
19
- end
1
+ Gem::Specification.new do |s|
2
+ s.name = 'mundipagg_sdk'
3
+ s.summary = 'MundiPagg Ruby Client Library'
4
+ s.description = 'Ruby library for integrating with the MundiPagg payment web services'
5
+ s.version = '1.2.3rc' # Major.Minor.Revision
6
+ s.author = 'MundiPagg'
7
+ s.email = 'github@mundipagg.com'
8
+ s.homepage = 'http://www.mundipagg.com/'
9
+ s.files = Dir.glob ["README.md", "LICENSE", "lib/**/*.{rb}", "spec/**/*", "*.gemspec"]
10
+ s.add_dependency 'rest-client', '~> 1.8', '>= 1.8.0'
11
+ s.add_dependency 'rspec', '~> 3.3', '>= 3.3.0'
12
+ s.add_dependency 'nori', '~> 2.6', '>= 2.6.0'
13
+ s.add_dependency 'gyoku', '~> 1.3', '>= 1.3.1'
14
+ s.add_dependency 'nokogiri', '~> 1.6', '>= 1.6.6.2'
15
+ s.add_dependency 'ffi', '~> 1.9', '>= 1.9.10'
16
+ s.add_dependency 'bundler', '~> 1.10', '>= 1.10.6'
17
+ s.required_ruby_version = '>= 2.1.7'
18
+ s.license = 'Apache 2.0'
19
+ end
@@ -1,733 +1,1022 @@
1
- require_relative '../../lib/mundipagg_sdk'
2
- require_relative 'test_helper'
3
-
4
- merchant_key = '85328786-8BA6-420F-9948-5352F5A183EB'
5
- gateway = Gateway.new(:sandbox, merchant_key)
6
-
7
- RSpec.describe Gateway do
8
- it 'should create a sale with boleto' do
9
- createSaleRequest = CreateSaleRequest.new
10
-
11
- boletoTransaction = BoletoTransaction.new
12
- boletoTransaction.AmountInCents = 100
13
- boletoTransaction.BankNumber = '237'
14
- boletoTransaction.DocumentNumber = '12345678901'
15
- boletoTransaction.Instructions = 'Pagar antes do vencimento'
16
- boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
17
- boletoTransaction.Options.CurrencyIso = 'BRL'
18
- boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
19
-
20
- createSaleRequest.BoletoTransactionCollection << boletoTransaction
21
-
22
- response = gateway.CreateSale(createSaleRequest)
23
-
24
- expect(response[:ErrorReport]).to eq nil
25
- end
26
-
27
- it 'should create a sale with credit card' do
28
- createSaleRequest = CreateSaleRequest.new
29
-
30
- buyerAddress = BuyerAddress.new
31
- buyerAddress.AddressType = 'Residential'
32
- buyerAddress.City = 'Rio de Janeiro'
33
- buyerAddress.Complement = '10 Andar'
34
- buyerAddress.Country = 'Brazil'
35
- buyerAddress.District = 'Centro'
36
- buyerAddress.Number = '199'
37
- buyerAddress.State = 'RJ'
38
- buyerAddress.Street = 'Rua da Quitanda'
39
- buyerAddress.ZipCode = '20091005'
40
-
41
- creditCardTransaction = CreditCardTransaction.new
42
- creditCardTransaction.AmountInCents = 100
43
- creditCardTransaction.InstallmentCount = 1
44
- creditCardTransaction.TransactionReference = 'CreditCard One RubySDK Test'
45
- creditCardTransaction.Options.PaymentMethodCode = 1
46
- creditCardTransaction.Options.SoftDescriptorText = 'My Store Name'
47
- creditCardTransaction.CreditCard.CreditCardNumber = '5453010000066167'
48
- creditCardTransaction.CreditCard.ExpMonth = 5
49
- creditCardTransaction.CreditCard.ExpYear = 18
50
- creditCardTransaction.CreditCard.HolderName = 'Maria do Carmo'
51
- creditCardTransaction.CreditCard.SecurityCode = '123'
52
- creditCardTransaction.CreditCard.CreditCardBrand = 'Mastercard'
53
- creditCardTransaction.CreditCard.BillingAddress.City = 'Rio de Janeiro'
54
- creditCardTransaction.CreditCard.BillingAddress.Complement = '10 Andar'
55
- creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
56
- creditCardTransaction.CreditCard.BillingAddress.District = 'Centro'
57
- creditCardTransaction.CreditCard.BillingAddress.Number = '199'
58
- creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
59
- creditCardTransaction.CreditCard.BillingAddress.Street = 'Rua da Quitanda'
60
- creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20091005'
61
-
62
- createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
63
- createSaleRequest.Buyer.Birthdate = Date.new(2001, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
64
- createSaleRequest.Buyer.BuyerCategory = 'Normal'
65
- createSaleRequest.Buyer.Email = 'mundiBuyer@mundi.com.br'
66
- createSaleRequest.Buyer.EmailType = 'Personal'
67
- createSaleRequest.Buyer.Gender = 'M'
68
- createSaleRequest.Buyer.HomePhone = '22222222'
69
- createSaleRequest.Buyer.MobilePhone = '988888888'
70
- createSaleRequest.Buyer.WorkPhone = '25555555'
71
- createSaleRequest.Buyer.CreateDateInMerchant = (Date.parse(Time.now.to_s)).strftime("%Y-%m-%dT%H:%M:%S")
72
- createSaleRequest.Buyer.LastBuyerUpdateInMerchant = (Date.parse(Time.now.to_s)).strftime("%Y-%m-%dT%H:%M:%S")
73
- createSaleRequest.Buyer.DocumentNumber = '51212382749'
74
- createSaleRequest.Buyer.DocumentType = 'CPF'
75
- createSaleRequest.Buyer.Name = 'Jose da Silva Ramos'
76
- createSaleRequest.Buyer.PersonType = 'Person'
77
- createSaleRequest.Buyer.AddressCollection << buyerAddress
78
-
79
- response = gateway.CreateSale(createSaleRequest)
80
-
81
- expect(response[:ErrorReport]).to eq nil
82
-
83
- end
84
-
85
- it 'should create a sale with all types of transactions and all fields filled' do
86
- # creates boleto transaction object
87
- boletoTransaction = BoletoTransaction.new
88
-
89
- # 100 reais in cents
90
- boletoTransaction.AmountInCents = 10000
91
- boletoTransaction.BankNumber = '237'
92
- boletoTransaction.BillingAddress.City = 'Tatooine'
93
- boletoTransaction.BillingAddress.Complement = ''
94
- boletoTransaction.BillingAddress.Country = 'Brazil'
95
- boletoTransaction.BillingAddress.District = 'Mos Eisley'
96
- boletoTransaction.BillingAddress.Number = '123'
97
- boletoTransaction.BillingAddress.State = 'RJ'
98
- boletoTransaction.BillingAddress.Street = 'Mos Eisley Cantina'
99
- boletoTransaction.BillingAddress.ZipCode = '20001000'
100
- boletoTransaction.DocumentNumber = '12345678901'
101
- boletoTransaction.Instructions = 'Pagar antes do vencimento'
102
- boletoTransaction.Options.CurrencyIso = 'BRL'
103
- boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
104
- boletoTransaction.TransactionReference = 'NumeroDaTransacao'
105
-
106
-
107
- # create credit card transaction object
108
- creditCardTransaction = CreditCardTransaction.new
109
-
110
- # 100 reais in cents
111
- creditCardTransaction.AmountInCents = 10000
112
- creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
113
- creditCardTransaction.CreditCard.BillingAddress.Complement = ''
114
- creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
115
- creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
116
- creditCardTransaction.CreditCard.BillingAddress.Number = '123'
117
- creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
118
- creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
119
- creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
120
- creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
121
- creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
122
- creditCardTransaction.CreditCard.ExpMonth = 10
123
- creditCardTransaction.CreditCard.ExpYear = 22
124
- creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
125
- creditCardTransaction.CreditCard.SecurityCode = '123'
126
- creditCardTransaction.CreditCardOperation = 'AuthOnly'
127
- creditCardTransaction.InstallmentCount = 1
128
- creditCardTransaction.Options.CurrencyIso = 'BRL'
129
- creditCardTransaction.Options.PaymentMethodCode = 1
130
- creditCardTransaction.Options.SoftDescriptorText = 'Jedi Mega Store'
131
-
132
- shoppingCartItem = ShoppingCartItemCollection.new
133
- shoppingCartItem.Description = 'Red Lightsaber'
134
- shoppingCartItem.DiscountAmountInCents = 0
135
- shoppingCartItem.ItemReference = 'NumeroDoProduto'
136
- shoppingCartItem.Name = 'Lightsaber'
137
- shoppingCartItem.Quantity = 1
138
- shoppingCartItem.TotalCostInCents = 18000
139
- shoppingCartItem.UnitCostInCents = 18000
140
-
141
- shoppingCartCollection = ShoppingCartCollection.new
142
- shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
143
- shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
144
- shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
145
- shoppingCartCollection.DeliveryAddress.District = 'Command Room'
146
- shoppingCartCollection.DeliveryAddress.Number = '321'
147
- shoppingCartCollection.DeliveryAddress.State = 'RJ'
148
- shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
149
- shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
150
- shoppingCartCollection.DeliveryDeadline = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
151
- shoppingCartCollection.EstimatedDeliveryDate = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
152
- shoppingCartCollection.FreighCostInCents = 2000
153
- shoppingCartCollection.ShippingCompany = 'Empire'
154
- shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem
155
-
156
- # creates request object for transaction creation
157
- createSaleRequest = CreateSaleRequest.new
158
-
159
- # adds to the boleto transaction collection
160
- createSaleRequest.BoletoTransactionCollection << boletoTransaction
161
-
162
- buyerAddress = BuyerAddress.new
163
- buyerAddress.AddressType = 'Residential'
164
- buyerAddress.City = 'Tatooine'
165
- buyerAddress.Complement = ''
166
- buyerAddress.Country = 'Brazil'
167
- buyerAddress.District = 'Mos Eisley'
168
- buyerAddress.Number = '123'
169
- buyerAddress.State = 'RJ'
170
- buyerAddress.Street = 'Mos Eisley Cantina'
171
- buyerAddress.ZipCode = '20001000'
172
-
173
- createSaleRequest.Buyer.AddressCollection << buyerAddress
174
- createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
175
- createSaleRequest.Buyer.BuyerCategory = 'Normal'
176
- createSaleRequest.Buyer.BuyerReference = 'C3PO'
177
- createSaleRequest.Buyer.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime("%Y-%m-%dT%H:%M:%S")
178
- createSaleRequest.Buyer.DocumentNumber = '12345678901'
179
- createSaleRequest.Buyer.DocumentType = 'CPF'
180
- createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
181
- createSaleRequest.Buyer.EmailType = 'Personal'
182
- createSaleRequest.Buyer.FacebookId = 'lukeskywalker8917'
183
- createSaleRequest.Buyer.Gender = 'M'
184
- createSaleRequest.Buyer.HomePhone = '(21)123456789'
185
- createSaleRequest.Buyer.MobilePhone = '(21)987654321'
186
- createSaleRequest.Buyer.Name = 'Luke Skywalker'
187
- createSaleRequest.Buyer.PersonType = 'Person'
188
- createSaleRequest.Buyer.TwitterId = '@lukeskywalker8917'
189
- createSaleRequest.Buyer.WorkPhone = '(21)28467902'
190
-
191
- # adds to the credit card transaction collection
192
- createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
193
- createSaleRequest.Merchant.MerchantReference = 'IdDaLojaPlataforma'
194
- createSaleRequest.Options.AntiFraudServiceCode = 0
195
- createSaleRequest.Options.CurrencyIso = 'BRL'
196
- createSaleRequest.Options.IsAntiFraudEnabled = true
197
- createSaleRequest.Options.Retries = 1
198
- createSaleRequest.Order.OrderReference = 'NumeroDoPedido'
199
- createSaleRequest.RequestData.EcommerceCategory = 'B2C'
200
- createSaleRequest.RequestData.IpAddress = '127.0.0.1'
201
- createSaleRequest.RequestData.Origin = 'SiteDeCompra'
202
- createSaleRequest.RequestData.SessionId = 'IdSesssaoNoSite'
203
-
204
- # adds shopping cart collection in the request
205
- createSaleRequest.ShoppingCartCollection << shoppingCartCollection
206
-
207
- # make the request and returns a response hash
208
- response = gateway.CreateSale(createSaleRequest)
209
-
210
- expect(response[:ErrorReport]).to eq nil
211
- end
212
-
213
- it 'should create an anti fraud transaction' do
214
- # create credit card transaction object
215
- creditCardTransaction = CreditCardTransaction.new
216
-
217
- # 100 reais in cents
218
- creditCardTransaction.AmountInCents = 10000
219
- creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
220
- creditCardTransaction.CreditCard.BillingAddress.Complement = ''
221
- creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
222
- creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
223
- creditCardTransaction.CreditCard.BillingAddress.Number = '123'
224
- creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
225
- creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
226
- creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
227
- creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
228
- creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
229
- creditCardTransaction.CreditCard.ExpMonth = 10
230
- creditCardTransaction.CreditCard.ExpYear = 22
231
- creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
232
- creditCardTransaction.CreditCard.SecurityCode = '123'
233
- creditCardTransaction.InstallmentCount = 1
234
-
235
- shoppingCartItem = ShoppingCartItemCollection.new
236
- shoppingCartItem.Description = 'Red Lightsaber'
237
- shoppingCartItem.DiscountAmountInCents = 0
238
- shoppingCartItem.ItemReference = 'NumeroDoProduto'
239
- shoppingCartItem.Name = 'Lightsaber'
240
- shoppingCartItem.Quantity = 1
241
- shoppingCartItem.TotalCostInCents = 18000
242
- shoppingCartItem.UnitCostInCents = 0
243
-
244
- shoppingCartCollection = ShoppingCartCollection.new
245
- shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
246
- shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
247
- shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
248
- shoppingCartCollection.DeliveryAddress.District = 'Command Room'
249
- shoppingCartCollection.DeliveryAddress.Number = '321'
250
- shoppingCartCollection.DeliveryAddress.State = 'RJ'
251
- shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
252
- shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
253
- shoppingCartCollection.FreighCostInCents = 2000
254
- shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem
255
-
256
- # creates request object for transaction creation
257
- createSaleRequest = CreateSaleRequest.new
258
-
259
- buyerAddress = BuyerAddress.new
260
- buyerAddress.AddressType = 'Residential'
261
- buyerAddress.City = 'Tatooine'
262
- buyerAddress.Complement = ''
263
- buyerAddress.Country = 'Brazil'
264
- buyerAddress.District = 'Mos Eisley'
265
- buyerAddress.Number = '123'
266
- buyerAddress.State = 'RJ'
267
- buyerAddress.Street = 'Mos Eisley Cantina'
268
- buyerAddress.ZipCode = '20001000'
269
-
270
- createSaleRequest.Buyer.AddressCollection << buyerAddress
271
- createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
272
- createSaleRequest.Buyer.BuyerReference = 'C3PO'
273
- createSaleRequest.Buyer.DocumentNumber = '12345678901'
274
- createSaleRequest.Buyer.DocumentType = 'CPF'
275
- createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
276
- createSaleRequest.Buyer.EmailType = 'Personal'
277
- createSaleRequest.Buyer.Gender = 'M'
278
- createSaleRequest.Buyer.HomePhone = '(21)123456789'
279
- createSaleRequest.Buyer.MobilePhone = '(21)987654321'
280
- createSaleRequest.Buyer.Name = 'Luke Skywalker'
281
- createSaleRequest.Buyer.PersonType = 'Person'
282
- createSaleRequest.Buyer.WorkPhone = '(21)28467902'
283
-
284
- # adds to the credit card transaction collection
285
- createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
286
- createSaleRequest.Options.IsAntiFraudEnabled = true
287
- createSaleRequest.Order.OrderReference = 'NumeroDoPedido'
288
-
289
- # adds shopping cart collection in the request
290
- createSaleRequest.ShoppingCartCollection << shoppingCartCollection
291
-
292
- # make the request and returns a response hash
293
- response = gateway.CreateSale(createSaleRequest)
294
-
295
- expect(response[:ErrorReport]).to eq nil
296
- end
297
-
298
- it 'should consult the order with order key' do
299
- querySaleRequest = QuerySaleRequest.new
300
- createSaleRequest = CreateSaleRequest.new
301
-
302
- boletoTransaction = BoletoTransaction.new
303
- boletoTransaction.AmountInCents = 100
304
- boletoTransaction.BankNumber = '237'
305
- boletoTransaction.DocumentNumber = '12345678901'
306
- boletoTransaction.Instructions = 'Pagar antes do vencimento'
307
- boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
308
- boletoTransaction.Options.CurrencyIso = 'BRL'
309
- boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
310
-
311
- createSaleRequest.BoletoTransactionCollection << boletoTransaction
312
-
313
- boleto_response = gateway.CreateSale(createSaleRequest)
314
-
315
- querySaleRequest.OrderKey = boleto_response['OrderResult']['OrderKey']
316
- responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)
317
-
318
- orderKey = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderKey"]
319
-
320
- expect(orderKey).to eq querySaleRequest.OrderKey
321
- end
322
-
323
- it 'should consult the order with order reference' do
324
- querySaleRequest = QuerySaleRequest.new
325
- createSaleRequest = CreateSaleRequest.new
326
-
327
- boletoTransaction = BoletoTransaction.new
328
- boletoTransaction.AmountInCents = 100
329
- boletoTransaction.BankNumber = '237'
330
- boletoTransaction.DocumentNumber = '12345678901'
331
- boletoTransaction.Instructions = 'Pagar antes do vencimento'
332
- boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
333
- boletoTransaction.Options.CurrencyIso = 'BRL'
334
- boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
335
-
336
- createSaleRequest.Order.OrderReference = 'RubyOrderReferenceUnitTest'
337
- createSaleRequest.BoletoTransactionCollection << boletoTransaction
338
-
339
- boleto_response = gateway.CreateSale(createSaleRequest)
340
-
341
- querySaleRequest.OrderReference = boleto_response['OrderResult']['OrderReference']
342
- responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderReference], querySaleRequest.OrderReference)
343
-
344
- orderReference = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderReference"]
345
-
346
- expect(orderReference).to eq querySaleRequest.OrderReference
347
- end
348
-
349
- it 'should do a retry method' do
350
- retrySaleRequest = RetrySaleRequest.new
351
- retrySaleCreditCardTransactionItem = RetrySaleCreditCardTransaction.new
352
-
353
- createSaleRequest = CreateSaleRequest.new
354
- creditCardTransactionItem = CreditCardTransaction.new
355
- creditCardTransactionItem.AmountInCents = 100
356
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
357
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
358
- creditCardTransactionItem.CreditCard.ExpMonth = 10
359
- creditCardTransactionItem.CreditCard.ExpYear = 19
360
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
361
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
362
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
363
- creditCardTransactionItem.InstallmentCount = 1
364
- creditCardTransactionItem.Options.CurrencyIso = 'BRL'
365
- creditCardTransactionItem.Options.PaymentMethodCode = 1
366
- creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
367
-
368
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
369
- createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
370
-
371
- # cria o pedido que sera usado para retentativa
372
- responseCreate = gateway.CreateSale(createSaleRequest)
373
-
374
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
375
- orderKey = responseCreate["OrderResult"]["OrderKey"]
376
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
377
-
378
- # monta o objeto de retentativa
379
- retrySaleCreditCardTransactionItem.SecurityCode = '123'
380
- retrySaleCreditCardTransactionItem.TransactionKey = transactionKey
381
- retrySaleRequest.OrderKey = orderKey
382
- retrySaleRequest.RetrySaleCreditCardTransactionCollection << retrySaleCreditCardTransactionItem
383
-
384
- # faz a requisicao de retentativa
385
- response = gateway.Retry(retrySaleRequest)
386
-
387
- # espera que o transaction key seja igual, significa que foi tudo ok no teste
388
- responseTransactionKey = response['CreditCardTransactionResultCollection'][0]['TransactionKey']
389
-
390
- expect(responseTransactionKey).to eq transactionKey
391
-
392
- end
393
-
394
- it 'should do a retry method with only order key' do
395
- createSaleRequest = CreateSaleRequest.new
396
- creditCardTransactionItem = CreditCardTransaction.new
397
- creditCardTransactionItem.AmountInCents = 100
398
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
399
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
400
- creditCardTransactionItem.CreditCard.ExpMonth = 10
401
- creditCardTransactionItem.CreditCard.ExpYear = 22
402
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
403
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
404
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
405
- creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
406
-
407
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
408
- createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
409
-
410
- # cria o pedido que sera usado para retentativa
411
- responseCreate = gateway.CreateSale(createSaleRequest)
412
-
413
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
414
- orderKey = responseCreate["OrderResult"]["OrderKey"]
415
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
416
-
417
- retrySaleRequest = RetrySaleRequest.new
418
-
419
- # monta o objeto de retentativa
420
- retrySaleRequest.OrderKey = orderKey
421
-
422
- # faz a requisicao de retentativa
423
- response = gateway.Retry(retrySaleRequest)
424
-
425
- expect(response['ErrorReport']).to eq nil
426
-
427
- end
428
-
429
- it 'should cancel a transaction' do
430
- createSaleRequest = CreateSaleRequest.new
431
- creditCardTransactionItem = CreditCardTransaction.new
432
- creditCardTransactionItem.AmountInCents = 100
433
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
434
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
435
- creditCardTransactionItem.CreditCard.ExpMonth = 10
436
- creditCardTransactionItem.CreditCard.ExpYear = 19
437
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
438
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
439
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
440
- creditCardTransactionItem.InstallmentCount = 1
441
- creditCardTransactionItem.Options.CurrencyIso = 'BRL'
442
- creditCardTransactionItem.Options.PaymentMethodCode = 1
443
- creditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
444
-
445
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
446
- createSaleRequest.Order.OrderReference = 'RubySDK-CancelTest'
447
-
448
- # cria o pedido que sera usado para cancelamento
449
- responseCreate = gateway.CreateSale(createSaleRequest)
450
-
451
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer o cancelamento
452
- orderKey = responseCreate["OrderResult"]["OrderKey"]
453
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
454
-
455
- # itens necessarios para cancelamento da transacao de cartao de credito
456
- cancelCreditCardTransactionItem = ManageCreditCardTransaction.new
457
- cancelCreditCardTransactionItem.AmountInCents = 100
458
- cancelCreditCardTransactionItem.TransactionKey = transactionKey
459
- cancelCreditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
460
-
461
- # monta o objeto para cancelamento de transacao
462
- cancelSaleRequest = ManageSaleRequest.new
463
- cancelSaleRequest.OrderKey = orderKey
464
- cancelSaleRequest.CreditCardTransactionCollection << cancelCreditCardTransactionItem
465
-
466
- response = gateway.Cancel(cancelSaleRequest)
467
-
468
- expect(response[:ErrorReport]).to eq nil
469
- end
470
-
471
- it 'should capture a transaction' do
472
- createSaleRequest = CreateSaleRequest.new
473
- creditCardTransactionItem = CreditCardTransaction.new
474
- creditCardTransactionItem.AmountInCents = 100
475
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
476
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
477
- creditCardTransactionItem.CreditCard.ExpMonth = 10
478
- creditCardTransactionItem.CreditCard.ExpYear = 19
479
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
480
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
481
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
482
- creditCardTransactionItem.InstallmentCount = 1
483
- creditCardTransactionItem.Options.CurrencyIso = 'BRL'
484
- creditCardTransactionItem.Options.PaymentMethodCode = 1
485
- creditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
486
-
487
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
488
- createSaleRequest.Order.OrderReference = 'RubySDK-CaptureTest'
489
-
490
- # cria o pedido que sera usado para captura
491
- responseCreate = gateway.CreateSale(createSaleRequest)
492
-
493
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a captura
494
- orderKey = responseCreate["OrderResult"]["OrderKey"]
495
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
496
-
497
- # itens necessarios para captura da transacao de cartao de credito
498
- captureCreditCardTransactionItem = ManageCreditCardTransaction.new
499
- captureCreditCardTransactionItem.AmountInCents = 100
500
- captureCreditCardTransactionItem.TransactionKey = transactionKey
501
- captureCreditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
502
-
503
- # monta o objeto para cancelamento de transacao
504
- captureSaleRequest = ManageSaleRequest.new
505
- captureSaleRequest.OrderKey = orderKey
506
- captureSaleRequest.CreditCardTransactionCollection << captureCreditCardTransactionItem
507
-
508
- response = gateway.Capture(captureSaleRequest)
509
-
510
- # espera que o ErrorReport seja nulo, significa que foi tudo ok na transação
511
- expect(response['ErrorReport']).to eq nil
512
- end
513
-
514
- it 'should do a parse xml to notification interpretation' do
515
- creditCardTransactionItem = CreditCardTransaction.new
516
- creditCardTransactionItem.AmountInCents = 100
517
- creditCardTransactionItem.TransactionReference = 'Ruby PostNotification Test'
518
- creditCardTransactionItem.InstallmentCount = 1
519
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
520
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
521
- creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
522
- creditCardTransactionItem.CreditCard.HolderName = 'Bruce Wayne'
523
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
524
- creditCardTransactionItem.CreditCard.ExpMonth = 5
525
- creditCardTransactionItem.CreditCard.ExpYear = 20
526
- creditCardTransactionItem.Options.PaymentMethodCode = 1
527
-
528
- createSaleRequest = CreateSaleRequest.new
529
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
530
-
531
- response_hash = gateway.CreateSale(createSaleRequest)
532
-
533
- credit_card_result = response_hash['CreditCardTransactionResultCollection'][0]
534
-
535
- expect(credit_card_result['Success']).to eq true
536
- # expect(credit_card_result['CreditCardOperation']).to eq 'AuthOnly'
537
- # expect(credit_card_result['CreditCardTransactionStatus']).to eq 'AuthorizedPendingCapture'
538
-
539
- captureCreditCardTransactionItem = ManageCreditCardTransaction.new
540
- captureCreditCardTransactionItem.AmountInCents = creditCardTransactionItem.AmountInCents
541
- captureCreditCardTransactionItem.TransactionKey = credit_card_result['TransactionKey']
542
- captureCreditCardTransactionItem.TransactionReference = creditCardTransactionItem.TransactionReference
543
-
544
- captureSale = ManageSaleRequest.new
545
- captureSale.OrderKey = response_hash['OrderResult']['OrderKey']
546
- captureSale.CreditCardTransactionCollection << captureCreditCardTransactionItem
547
-
548
- captureResponse = gateway.Capture(captureSale)
549
-
550
- expect(captureResponse['ErrorReport']).to eq nil
551
-
552
-
553
- xml = TestHelper.CreateFakePostNotification(response_hash, captureResponse)
554
-
555
- response = gateway.ParseXmlToNotification(xml)
556
-
557
- expect(response.nil?).to eq false
558
- end
559
-
560
- it 'should do a parse on online debit xml' do
561
- xml = '<StatusNotification xmlns="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract"
562
- xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
563
- i:schemaLocation="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract StatusNotificationXmlSchema.xsd">
564
- <AmountInCents>500</AmountInCents>
565
- <AmountPaidInCents>0</AmountPaidInCents>
566
- <BoletoTransaction>
567
- <AmountInCents>500</AmountInCents>
568
- <AmountPaidInCents>0</AmountPaidInCents>
569
- <BoletoExpirationDate>2013-02-08T00:00:00</BoletoExpirationDate>
570
- <NossoNumero>0123456789</NossoNumero>
571
- <StatusChangedDate>2012-11-06T08:55:49.753</StatusChangedDate>
572
- <TransactionKey>4111D523-9A83-4BE3-94D2-160F1BC9C4BD</TransactionKey>
573
- <TransactionReference>B2E32108</TransactionReference>
574
- <PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
575
- <BoletoTransactionStatus>Paid</BoletoTransactionStatus>
576
- </BoletoTransaction>
577
- <CreditCardTransaction>
578
- <Acquirer>Simulator</Acquirer>
579
- <AmountInCents>2000</AmountInCents>
580
- <AuthorizedAmountInCents>2000</AuthorizedAmountInCents>
581
- <CapturedAmountInCents>2000</CapturedAmountInCents>
582
- <CreditCardBrand>Visa</CreditCardBrand>
583
- <RefundedAmountInCents i:nil="true"/>
584
- <StatusChangedDate>2012-11-06T10:52:55.93</StatusChangedDate>
585
- <TransactionIdentifier>123456</TransactionIdentifier>
586
- <TransactionKey>351FC96A-7F42-4269-AF3C-1E3C179C1CD0</TransactionKey>
587
- <TransactionReference>24de0432</TransactionReference>
588
- <UniqueSequentialNumber>123456</UniqueSequentialNumber>
589
- <VoidedAmountInCents i:nil="true"/>
590
- <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
591
- <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
592
- </CreditCardTransaction>
593
-
594
- <OnlineDebitTransaction>
595
- <AmountInCents>100</AmountInCents>
596
- <AmountPaidInCents>0</AmountPaidInCents>
597
- <StatusChangedDate>2013-06-27T19:46:46.87</StatusChangedDate>
598
- <TransactionKey>fb3f158a-0309-4ae3-b8ef-3c5ac2d603d2</TransactionKey>
599
- <TransactionReference>30bfee13-c908-4e3b-9f70-1f84dbe79fbf</TransactionReference>
600
- <PreviousOnlineDebitTransactionStatus>OpenedPendingPayment</PreviousOnlineDebitTransactionStatus>
601
- <OnlineDebitTransactionStatus>NotPaid</OnlineDebitTransactionStatus>
602
- </OnlineDebitTransaction>
603
-
604
- <MerchantKey>B1B1092C-8681-40C2-A734-500F22683D9B</MerchantKey>
605
- <OrderKey>18471F05-9F6D-4497-9C24-D60D5BBB6BBE</OrderKey>
606
- <OrderReference>64a85875</OrderReference>
607
- <OrderStatus>Paid</OrderStatus>
608
- </StatusNotification>'
609
-
610
- response = gateway.ParseXmlToNotification(xml)
611
-
612
- expect(response.nil?).to eq false
613
- end
614
-
615
- it 'should bring the transaction report file' do
616
- date = Date.new(2015, 9, 19)
617
- result = gateway.TransactionReportFile(date)
618
- split_commas = result.split(',')
619
-
620
- expect(split_commas[1]).to eq '20150919'
621
- end
622
-
623
- it 'should parse the transaction report file received' do
624
- date = Date.new(2015, 9, 19)
625
- request_to_parse = gateway.TransactionReportFile(date)
626
- result = gateway.TransactionReportFileParser(request_to_parse)
627
-
628
- expect(result['Header'].TransactionProcessedDate).to eq '20150919'
629
- end
630
-
631
- it 'should save the transaction report file at selected path' do
632
- date = Date.new(2015, 9, 19)
633
-
634
- file = Tempfile.new('Test')
635
- gateway.TransactionReportFileDownloader(date, 'Test', file.path)
636
-
637
- file_path = file.path.to_s + 'Test.txt'
638
- file_exist = File.exist?(file_path)
639
-
640
- file.close
641
- file.unlink
642
-
643
- expect(file_exist).to eq true
644
- end
645
-
646
- it 'should consult transaction with instant buy key' do
647
- credit_card_transaction = CreditCardTransaction.new
648
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
649
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
650
- credit_card_transaction.CreditCard.ExpMonth = 10
651
- credit_card_transaction.CreditCard.ExpYear = 2018
652
- credit_card_transaction.CreditCard.SecurityCode = '123'
653
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
654
- credit_card_transaction.AmountInCents = 100
655
-
656
- sale_request = CreateSaleRequest.new
657
- sale_request.CreditCardTransactionCollection << credit_card_transaction
658
-
659
- sale_response = gateway.CreateSale(sale_request)
660
-
661
- expect(sale_response['ErrorReport']).to eq nil
662
-
663
- instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
664
-
665
- response = gateway.InstantBuyKey(instant_buy_key)
666
-
667
- expect(response['ErrorReport']).to eq nil
668
- end
669
-
670
- it 'should consult transaction with buyer key' do
671
-
672
- credit_card_transaction = CreditCardTransaction.new
673
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
674
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
675
- credit_card_transaction.CreditCard.ExpMonth = 10
676
- credit_card_transaction.CreditCard.ExpYear = 2018
677
- credit_card_transaction.CreditCard.SecurityCode = '123'
678
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
679
- credit_card_transaction.AmountInCents = 100
680
-
681
- sale_request = CreateSaleRequest.new
682
- sale_request.Buyer.Name = 'Anakin Skywalker'
683
- sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
684
- sale_request.Buyer.DocumentNumber = '12345678901'
685
- sale_request.Buyer.DocumentType = 'CPF'
686
- sale_request.Buyer.PersonType = 'Person'
687
- sale_request.Buyer.Gender = 'M'
688
- sale_request.CreditCardTransactionCollection << credit_card_transaction
689
-
690
- sale_response = gateway.CreateSale(sale_request)
691
-
692
- expect(sale_response['ErrorReport']).to eq nil
693
-
694
- response = gateway.BuyerKey(sale_response['BuyerKey'])
695
-
696
- expect(response['ErrorReport']).to eq nil
697
- end
698
-
699
- it 'should do a credit card transaction with instant buy key' do
700
- credit_card_transaction = CreditCardTransaction.new
701
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
702
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
703
- credit_card_transaction.CreditCard.ExpMonth = 10
704
- credit_card_transaction.CreditCard.ExpYear = 2018
705
- credit_card_transaction.CreditCard.SecurityCode = '123'
706
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
707
- credit_card_transaction.AmountInCents = 100
708
-
709
- sale_request = CreateSaleRequest.new
710
- sale_request.CreditCardTransactionCollection << credit_card_transaction
711
-
712
- sale_response = gateway.CreateSale(sale_request)
713
-
714
- expect(sale_response['ErrorReport']).to eq nil
715
-
716
- instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
717
-
718
- # coleta dados do cartao
719
- creditCardTransaction = CreditCardTransaction.new
720
- creditCardTransaction.AmountInCents = 100
721
- creditCardTransaction.CreditCard.InstantBuyKey = instant_buy_key
722
-
723
- # cria a transacao
724
- createSaleRequest = CreateSaleRequest.new
725
- createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
726
-
727
- # faz a requisicao de criação de transacao, retorna um hash com a resposta
728
- response = gateway.CreateSale(createSaleRequest)
729
-
730
- expect(response['ErrorReport']).to eq nil
731
- end
732
-
733
- end
1
+ require_relative '../../lib/mundipagg_sdk'
2
+ require_relative 'test_helper'
3
+
4
+ merchant_key = '85328786-8BA6-420F-9948-5352F5A183EB'
5
+
6
+ gateway = Gateway::Gateway.new(:sandbox, merchant_key)
7
+
8
+ RSpec.describe Gateway do
9
+ it 'should create a sale with boleto' do
10
+ createSaleRequest = Gateway::CreateSaleRequest.new
11
+
12
+ boletoTransaction = Gateway::BoletoTransaction.new
13
+ boletoTransaction.AmountInCents = 100
14
+ boletoTransaction.BankNumber = '237'
15
+ boletoTransaction.DocumentNumber = '12345678901'
16
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
17
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
18
+ boletoTransaction.Options.CurrencyIso = 'BRL'
19
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
20
+
21
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
22
+
23
+ response = gateway.CreateSale(createSaleRequest)
24
+
25
+ expect(response[:ErrorReport]).to eq nil
26
+ end
27
+
28
+ it 'should create a sale with credit card' do
29
+ createSaleRequest = Gateway::CreateSaleRequest.new
30
+
31
+ buyerAddress = Gateway::BuyerAddress.new
32
+ buyerAddress.AddressType = 'Residential'
33
+ buyerAddress.City = 'Rio de Janeiro'
34
+ buyerAddress.Complement = '10 Andar'
35
+ buyerAddress.Country = 'Brazil'
36
+ buyerAddress.District = 'Centro'
37
+ buyerAddress.Number = '199'
38
+ buyerAddress.State = 'RJ'
39
+ buyerAddress.Street = 'Rua da Quitanda'
40
+ buyerAddress.ZipCode = '20091005'
41
+
42
+ creditCardTransaction = Gateway::CreditCardTransaction.new
43
+ creditCardTransaction.AmountInCents = 100
44
+ creditCardTransaction.InstallmentCount = 1
45
+ creditCardTransaction.TransactionReference = 'CreditCard One RubySDK Test'
46
+ creditCardTransaction.Options.PaymentMethodCode = 1
47
+ creditCardTransaction.Options.SoftDescriptorText = 'My Store Name'
48
+ creditCardTransaction.CreditCard.CreditCardNumber = '5453010000066167'
49
+ creditCardTransaction.CreditCard.ExpMonth = 5
50
+ creditCardTransaction.CreditCard.ExpYear = 18
51
+ creditCardTransaction.CreditCard.HolderName = 'Maria do Carmo'
52
+ creditCardTransaction.CreditCard.SecurityCode = '123'
53
+ creditCardTransaction.CreditCard.CreditCardBrand = 'Mastercard'
54
+ creditCardTransaction.CreditCard.BillingAddress.City = 'Rio de Janeiro'
55
+ creditCardTransaction.CreditCard.BillingAddress.Complement = '10 Andar'
56
+ creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
57
+ creditCardTransaction.CreditCard.BillingAddress.District = 'Centro'
58
+ creditCardTransaction.CreditCard.BillingAddress.Number = '199'
59
+ creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
60
+ creditCardTransaction.CreditCard.BillingAddress.Street = 'Rua da Quitanda'
61
+ creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20091005'
62
+
63
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
64
+ createSaleRequest.Buyer.Birthdate = Date.new(2001, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
65
+ createSaleRequest.Buyer.BuyerCategory = 'Normal'
66
+ createSaleRequest.Buyer.Email = 'mundiBuyer@mundi.com.br'
67
+ createSaleRequest.Buyer.EmailType = 'Personal'
68
+ createSaleRequest.Buyer.Gender = 'M'
69
+ createSaleRequest.Buyer.HomePhone = '22222222'
70
+ createSaleRequest.Buyer.MobilePhone = '988888888'
71
+ createSaleRequest.Buyer.WorkPhone = '25555555'
72
+ createSaleRequest.Buyer.CreateDateInMerchant = (Date.parse(Time.now.to_s)).strftime("%Y-%m-%dT%H:%M:%S")
73
+ createSaleRequest.Buyer.LastBuyerUpdateInMerchant = (Date.parse(Time.now.to_s)).strftime("%Y-%m-%dT%H:%M:%S")
74
+ createSaleRequest.Buyer.DocumentNumber = '51212382749'
75
+ createSaleRequest.Buyer.DocumentType = 'CPF'
76
+ createSaleRequest.Buyer.Name = 'Jose da Silva Ramos'
77
+ createSaleRequest.Buyer.PersonType = 'Person'
78
+ createSaleRequest.Buyer.AddressCollection << buyerAddress
79
+
80
+ response = gateway.CreateSale(createSaleRequest)
81
+
82
+ expect(response[:ErrorReport]).to eq nil
83
+
84
+ end
85
+
86
+ it 'should create a sale with all types of transactions and all fields filled' do
87
+ # creates boleto transaction object
88
+ boletoTransaction = Gateway::BoletoTransaction.new
89
+
90
+ # 100 reais in cents
91
+ boletoTransaction.AmountInCents = 10000
92
+ boletoTransaction.BankNumber = '237'
93
+ boletoTransaction.BillingAddress.City = 'Tatooine'
94
+ boletoTransaction.BillingAddress.Complement = ''
95
+ boletoTransaction.BillingAddress.Country = 'Brazil'
96
+ boletoTransaction.BillingAddress.District = 'Mos Eisley'
97
+ boletoTransaction.BillingAddress.Number = '123'
98
+ boletoTransaction.BillingAddress.State = 'RJ'
99
+ boletoTransaction.BillingAddress.Street = 'Mos Eisley Cantina'
100
+ boletoTransaction.BillingAddress.ZipCode = '20001000'
101
+ boletoTransaction.DocumentNumber = '12345678901'
102
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
103
+ boletoTransaction.Options.CurrencyIso = 'BRL'
104
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
105
+ boletoTransaction.TransactionReference = 'NumeroDaTransacao'
106
+
107
+
108
+ # create credit card transaction object
109
+ creditCardTransaction = Gateway::CreditCardTransaction.new
110
+
111
+ # 100 reais in cents
112
+ creditCardTransaction.AmountInCents = 10000
113
+ creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
114
+ creditCardTransaction.CreditCard.BillingAddress.Complement = ''
115
+ creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
116
+ creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
117
+ creditCardTransaction.CreditCard.BillingAddress.Number = '123'
118
+ creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
119
+ creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
120
+ creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
121
+ creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
122
+ creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
123
+ creditCardTransaction.CreditCard.ExpMonth = 10
124
+ creditCardTransaction.CreditCard.ExpYear = 22
125
+ creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
126
+ creditCardTransaction.CreditCard.SecurityCode = '123'
127
+ creditCardTransaction.CreditCardOperation = 'AuthOnly'
128
+ creditCardTransaction.InstallmentCount = 1
129
+ creditCardTransaction.Options.CurrencyIso = 'BRL'
130
+ creditCardTransaction.Options.PaymentMethodCode = 1
131
+ creditCardTransaction.Options.SoftDescriptorText = 'Jedi Mega Store'
132
+
133
+ shoppingCartItem = Gateway::ShoppingCartItemCollection.new
134
+ shoppingCartItem.Description = 'Red Lightsaber'
135
+ shoppingCartItem.DiscountAmountInCents = 0
136
+ shoppingCartItem.ItemReference = 'NumeroDoProduto'
137
+ shoppingCartItem.Name = 'Lightsaber'
138
+ shoppingCartItem.Quantity = 1
139
+ shoppingCartItem.TotalCostInCents = 18000
140
+ shoppingCartItem.UnitCostInCents = 18000
141
+
142
+ shoppingCartCollection = Gateway::ShoppingCartCollection.new
143
+ shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
144
+ shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
145
+ shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
146
+ shoppingCartCollection.DeliveryAddress.District = 'Command Room'
147
+ shoppingCartCollection.DeliveryAddress.Number = '321'
148
+ shoppingCartCollection.DeliveryAddress.State = 'RJ'
149
+ shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
150
+ shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
151
+ shoppingCartCollection.DeliveryDeadline = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
152
+ shoppingCartCollection.EstimatedDeliveryDate = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
153
+ shoppingCartCollection.FreighCostInCents = 2000
154
+ shoppingCartCollection.ShippingCompany = 'Empire'
155
+ shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem
156
+
157
+ # creates request object for transaction creation
158
+ createSaleRequest = Gateway::CreateSaleRequest.new
159
+
160
+ # adds to the boleto transaction collection
161
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
162
+
163
+ buyerAddress = Gateway::BuyerAddress.new
164
+ buyerAddress.AddressType = 'Residential'
165
+ buyerAddress.City = 'Tatooine'
166
+ buyerAddress.Complement = ''
167
+ buyerAddress.Country = 'Brazil'
168
+ buyerAddress.District = 'Mos Eisley'
169
+ buyerAddress.Number = '123'
170
+ buyerAddress.State = 'RJ'
171
+ buyerAddress.Street = 'Mos Eisley Cantina'
172
+ buyerAddress.ZipCode = '20001000'
173
+
174
+ createSaleRequest.Buyer.AddressCollection << buyerAddress
175
+ createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
176
+ createSaleRequest.Buyer.BuyerCategory = 'Normal'
177
+ createSaleRequest.Buyer.BuyerReference = 'C3PO'
178
+ createSaleRequest.Buyer.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime("%Y-%m-%dT%H:%M:%S")
179
+ createSaleRequest.Buyer.DocumentNumber = '12345678901'
180
+ createSaleRequest.Buyer.DocumentType = 'CPF'
181
+ createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
182
+ createSaleRequest.Buyer.EmailType = 'Personal'
183
+ createSaleRequest.Buyer.FacebookId = 'lukeskywalker8917'
184
+ createSaleRequest.Buyer.Gender = 'M'
185
+ createSaleRequest.Buyer.HomePhone = '(21)123456789'
186
+ createSaleRequest.Buyer.MobilePhone = '(21)987654321'
187
+ createSaleRequest.Buyer.Name = 'Luke Skywalker'
188
+ createSaleRequest.Buyer.PersonType = 'Person'
189
+ createSaleRequest.Buyer.TwitterId = '@lukeskywalker8917'
190
+ createSaleRequest.Buyer.WorkPhone = '(21)28467902'
191
+
192
+ # adds to the credit card transaction collection
193
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
194
+ createSaleRequest.Merchant.MerchantReference = 'IdDaLojaPlataforma'
195
+ createSaleRequest.Options.AntiFraudServiceCode = 0
196
+ createSaleRequest.Options.CurrencyIso = 'BRL'
197
+ createSaleRequest.Options.IsAntiFraudEnabled = true
198
+ createSaleRequest.Options.Retries = 1
199
+ createSaleRequest.Order.OrderReference = 'NumeroDoPedido'
200
+ createSaleRequest.RequestData.EcommerceCategory = 'B2C'
201
+ createSaleRequest.RequestData.IpAddress = '127.0.0.1'
202
+ createSaleRequest.RequestData.Origin = 'SiteDeCompra'
203
+ createSaleRequest.RequestData.SessionId = 'IdSesssaoNoSite'
204
+
205
+ # adds shopping cart collection in the request
206
+ createSaleRequest.ShoppingCartCollection << shoppingCartCollection
207
+
208
+ # make the request and returns a response hash
209
+ response = gateway.CreateSale(createSaleRequest)
210
+
211
+ expect(response[:ErrorReport]).to eq nil
212
+ end
213
+
214
+ it 'should create an anti fraud transaction' do
215
+ # create credit card transaction object
216
+ creditCardTransaction = Gateway::CreditCardTransaction.new
217
+
218
+ # 100 reais in cents
219
+ creditCardTransaction.AmountInCents = 10000
220
+ creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
221
+ creditCardTransaction.CreditCard.BillingAddress.Complement = ''
222
+ creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
223
+ creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
224
+ creditCardTransaction.CreditCard.BillingAddress.Number = '123'
225
+ creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
226
+ creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
227
+ creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
228
+ creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
229
+ creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
230
+ creditCardTransaction.CreditCard.ExpMonth = 10
231
+ creditCardTransaction.CreditCard.ExpYear = 22
232
+ creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
233
+ creditCardTransaction.CreditCard.SecurityCode = '123'
234
+ creditCardTransaction.InstallmentCount = 1
235
+
236
+ shoppingCartItem = Gateway::ShoppingCartItemCollection.new
237
+ shoppingCartItem.Description = 'Red Lightsaber'
238
+ shoppingCartItem.DiscountAmountInCents = 0
239
+ shoppingCartItem.ItemReference = 'NumeroDoProduto'
240
+ shoppingCartItem.Name = 'Lightsaber'
241
+ shoppingCartItem.Quantity = 1
242
+ shoppingCartItem.TotalCostInCents = 18000
243
+ shoppingCartItem.UnitCostInCents = 0
244
+
245
+ shoppingCartCollection = Gateway::ShoppingCartCollection.new
246
+ shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
247
+ shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
248
+ shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
249
+ shoppingCartCollection.DeliveryAddress.District = 'Command Room'
250
+ shoppingCartCollection.DeliveryAddress.Number = '321'
251
+ shoppingCartCollection.DeliveryAddress.State = 'RJ'
252
+ shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
253
+ shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
254
+ shoppingCartCollection.FreighCostInCents = 2000
255
+ shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem
256
+
257
+ # creates request object for transaction creation
258
+ createSaleRequest = Gateway::CreateSaleRequest.new
259
+
260
+ buyerAddress = Gateway::BuyerAddress.new
261
+ buyerAddress.AddressType = 'Residential'
262
+ buyerAddress.City = 'Tatooine'
263
+ buyerAddress.Complement = ''
264
+ buyerAddress.Country = 'Brazil'
265
+ buyerAddress.District = 'Mos Eisley'
266
+ buyerAddress.Number = '123'
267
+ buyerAddress.State = 'RJ'
268
+ buyerAddress.Street = 'Mos Eisley Cantina'
269
+ buyerAddress.ZipCode = '20001000'
270
+
271
+ createSaleRequest.Buyer.AddressCollection << buyerAddress
272
+ createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
273
+ createSaleRequest.Buyer.BuyerReference = 'C3PO'
274
+ createSaleRequest.Buyer.DocumentNumber = '12345678901'
275
+ createSaleRequest.Buyer.DocumentType = 'CPF'
276
+ createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
277
+ createSaleRequest.Buyer.EmailType = 'Personal'
278
+ createSaleRequest.Buyer.Gender = 'M'
279
+ createSaleRequest.Buyer.HomePhone = '(21)123456789'
280
+ createSaleRequest.Buyer.MobilePhone = '(21)987654321'
281
+ createSaleRequest.Buyer.Name = 'Luke Skywalker'
282
+ createSaleRequest.Buyer.PersonType = 'Person'
283
+ createSaleRequest.Buyer.WorkPhone = '(21)28467902'
284
+
285
+ # adds to the credit card transaction collection
286
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
287
+ createSaleRequest.Options.IsAntiFraudEnabled = true
288
+ createSaleRequest.Order.OrderReference = 'NumeroDoPedido'
289
+
290
+ # adds shopping cart collection in the request
291
+ createSaleRequest.ShoppingCartCollection << shoppingCartCollection
292
+
293
+ # make the request and returns a response hash
294
+ response = gateway.CreateSale(createSaleRequest)
295
+
296
+ expect(response[:ErrorReport]).to eq nil
297
+ end
298
+
299
+ it 'should consult the order with order key' do
300
+ querySaleRequest = Gateway::QuerySaleRequest.new
301
+ createSaleRequest = Gateway::CreateSaleRequest.new
302
+
303
+ boletoTransaction = Gateway::BoletoTransaction.new
304
+ boletoTransaction.AmountInCents = 100
305
+ boletoTransaction.BankNumber = '237'
306
+ boletoTransaction.DocumentNumber = '12345678901'
307
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
308
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
309
+ boletoTransaction.Options.CurrencyIso = 'BRL'
310
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
311
+
312
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
313
+
314
+ boleto_response = gateway.CreateSale(createSaleRequest)
315
+
316
+ querySaleRequest.OrderKey = boleto_response['OrderResult']['OrderKey']
317
+ responseQuery = gateway.Query(Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)
318
+
319
+ orderKey = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderKey"]
320
+
321
+ expect(orderKey).to eq querySaleRequest.OrderKey
322
+ end
323
+
324
+ it 'should consult the order with order reference' do
325
+ querySaleRequest = Gateway::QuerySaleRequest.new
326
+ createSaleRequest = Gateway::CreateSaleRequest.new
327
+
328
+ boletoTransaction = Gateway::BoletoTransaction.new
329
+ boletoTransaction.AmountInCents = 100
330
+ boletoTransaction.BankNumber = '237'
331
+ boletoTransaction.DocumentNumber = '12345678901'
332
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
333
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
334
+ boletoTransaction.Options.CurrencyIso = 'BRL'
335
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
336
+
337
+ createSaleRequest.Order.OrderReference = 'RubyOrderReferenceUnitTest'
338
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
339
+
340
+ boleto_response = gateway.CreateSale(createSaleRequest)
341
+
342
+ querySaleRequest.OrderReference = boleto_response['OrderResult']['OrderReference']
343
+ responseQuery = gateway.Query(Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderReference], querySaleRequest.OrderReference)
344
+
345
+ orderReference = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderReference"]
346
+
347
+ expect(orderReference).to eq querySaleRequest.OrderReference
348
+ end
349
+
350
+ it 'should do a retry method' do
351
+ retrySaleRequest = Gateway::RetrySaleRequest.new
352
+ retrySaleCreditCardTransactionItem = Gateway::RetrySaleCreditCardTransaction.new
353
+
354
+ createSaleRequest = Gateway::CreateSaleRequest.new
355
+ creditCardTransactionItem = Gateway::CreditCardTransaction.new
356
+ creditCardTransactionItem.AmountInCents = 100
357
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
358
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
359
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
360
+ creditCardTransactionItem.CreditCard.ExpYear = 19
361
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
362
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
363
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
364
+ creditCardTransactionItem.InstallmentCount = 1
365
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
366
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
367
+ creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
368
+
369
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
370
+ createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
371
+
372
+ # cria o pedido que sera usado para retentativa
373
+ responseCreate = gateway.CreateSale(createSaleRequest)
374
+
375
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
376
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
377
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
378
+
379
+ # monta o objeto de retentativa
380
+ retrySaleCreditCardTransactionItem.SecurityCode = '123'
381
+ retrySaleCreditCardTransactionItem.TransactionKey = transactionKey
382
+ retrySaleRequest.OrderKey = orderKey
383
+ retrySaleRequest.RetrySaleCreditCardTransactionCollection << retrySaleCreditCardTransactionItem
384
+
385
+ # faz a requisicao de retentativa
386
+ response = gateway.Retry(retrySaleRequest)
387
+
388
+ # espera que o transaction key seja igual, significa que foi tudo ok no teste
389
+ responseTransactionKey = response['CreditCardTransactionResultCollection'][0]['TransactionKey']
390
+
391
+ expect(responseTransactionKey).to eq transactionKey
392
+
393
+ end
394
+
395
+ it 'should do a retry method with only order key' do
396
+ createSaleRequest = Gateway::CreateSaleRequest.new
397
+ creditCardTransactionItem = Gateway::CreditCardTransaction.new
398
+ creditCardTransactionItem.AmountInCents = 100
399
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
400
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
401
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
402
+ creditCardTransactionItem.CreditCard.ExpYear = 22
403
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
404
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
405
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
406
+ creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
407
+
408
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
409
+ createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
410
+
411
+ # cria o pedido que sera usado para retentativa
412
+ responseCreate = gateway.CreateSale(createSaleRequest)
413
+
414
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
415
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
416
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
417
+
418
+ retrySaleRequest = Gateway::RetrySaleRequest.new
419
+
420
+ # monta o objeto de retentativa
421
+ retrySaleRequest.OrderKey = orderKey
422
+
423
+ # faz a requisicao de retentativa
424
+ response = gateway.Retry(retrySaleRequest)
425
+
426
+ expect(response['ErrorReport']).to eq nil
427
+
428
+ end
429
+
430
+ it 'should cancel a transaction' do
431
+ createSaleRequest = Gateway::CreateSaleRequest.new
432
+ creditCardTransactionItem = Gateway::CreditCardTransaction.new
433
+ creditCardTransactionItem.AmountInCents = 100
434
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
435
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
436
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
437
+ creditCardTransactionItem.CreditCard.ExpYear = 19
438
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
439
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
440
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
441
+ creditCardTransactionItem.InstallmentCount = 1
442
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
443
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
444
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
445
+
446
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
447
+ createSaleRequest.Order.OrderReference = 'RubySDK-CancelTest'
448
+
449
+ # cria o pedido que sera usado para cancelamento
450
+ responseCreate = gateway.CreateSale(createSaleRequest)
451
+
452
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer o cancelamento
453
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
454
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
455
+
456
+ # itens necessarios para cancelamento da transacao de cartao de credito
457
+ cancelCreditCardTransactionItem = Gateway::ManageCreditCardTransaction.new
458
+ cancelCreditCardTransactionItem.AmountInCents = 100
459
+ cancelCreditCardTransactionItem.TransactionKey = transactionKey
460
+ cancelCreditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
461
+
462
+ # monta o objeto para cancelamento de transacao
463
+ cancelSaleRequest = Gateway::ManageSaleRequest.new
464
+ cancelSaleRequest.OrderKey = orderKey
465
+ cancelSaleRequest.CreditCardTransactionCollection << cancelCreditCardTransactionItem
466
+
467
+ response = gateway.Cancel(cancelSaleRequest)
468
+
469
+ expect(response[:ErrorReport]).to eq nil
470
+ end
471
+
472
+ it 'should capture a transaction' do
473
+ createSaleRequest = Gateway::CreateSaleRequest.new
474
+ creditCardTransactionItem = Gateway::CreditCardTransaction.new
475
+ creditCardTransactionItem.AmountInCents = 100
476
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
477
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
478
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
479
+ creditCardTransactionItem.CreditCard.ExpYear = 19
480
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
481
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
482
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
483
+ creditCardTransactionItem.InstallmentCount = 1
484
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
485
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
486
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
487
+
488
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
489
+ createSaleRequest.Order.OrderReference = 'RubySDK-CaptureTest'
490
+
491
+ # cria o pedido que sera usado para captura
492
+ responseCreate = gateway.CreateSale(createSaleRequest)
493
+
494
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a captura
495
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
496
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
497
+
498
+ # itens necessarios para captura da transacao de cartao de credito
499
+ captureCreditCardTransactionItem = Gateway::ManageCreditCardTransaction.new
500
+ captureCreditCardTransactionItem.AmountInCents = 100
501
+ captureCreditCardTransactionItem.TransactionKey = transactionKey
502
+ captureCreditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
503
+
504
+ # monta o objeto para cancelamento de transacao
505
+ captureSaleRequest = Gateway::ManageSaleRequest.new
506
+ captureSaleRequest.OrderKey = orderKey
507
+ captureSaleRequest.CreditCardTransactionCollection << captureCreditCardTransactionItem
508
+
509
+ response = gateway.Capture(captureSaleRequest)
510
+
511
+ # espera que o ErrorReport seja nulo, significa que foi tudo ok na transação
512
+ expect(response['ErrorReport']).to eq nil
513
+ end
514
+
515
+ it 'should do a parse xml to notification interpretation' do
516
+ creditCardTransactionItem = Gateway::CreditCardTransaction.new
517
+ creditCardTransactionItem.AmountInCents = 100
518
+ creditCardTransactionItem.TransactionReference = 'Ruby PostNotification Test'
519
+ creditCardTransactionItem.InstallmentCount = 1
520
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
521
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
522
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
523
+ creditCardTransactionItem.CreditCard.HolderName = 'Bruce Wayne'
524
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
525
+ creditCardTransactionItem.CreditCard.ExpMonth = 5
526
+ creditCardTransactionItem.CreditCard.ExpYear = 20
527
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
528
+
529
+ createSaleRequest = Gateway::CreateSaleRequest.new
530
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
531
+
532
+ response_hash = gateway.CreateSale(createSaleRequest)
533
+
534
+ credit_card_result = response_hash['CreditCardTransactionResultCollection'][0]
535
+
536
+ expect(credit_card_result['Success']).to eq true
537
+ # expect(credit_card_result['CreditCardOperation']).to eq 'AuthOnly'
538
+ # expect(credit_card_result['CreditCardTransactionStatus']).to eq 'AuthorizedPendingCapture'
539
+
540
+ captureCreditCardTransactionItem = Gateway::ManageCreditCardTransaction.new
541
+ captureCreditCardTransactionItem.AmountInCents = creditCardTransactionItem.AmountInCents
542
+ captureCreditCardTransactionItem.TransactionKey = credit_card_result['TransactionKey']
543
+ captureCreditCardTransactionItem.TransactionReference = creditCardTransactionItem.TransactionReference
544
+
545
+ captureSale = Gateway::ManageSaleRequest.new
546
+ captureSale.OrderKey = response_hash['OrderResult']['OrderKey']
547
+ captureSale.CreditCardTransactionCollection << captureCreditCardTransactionItem
548
+
549
+ captureResponse = gateway.Capture(captureSale)
550
+
551
+ expect(captureResponse['ErrorReport']).to eq nil
552
+
553
+
554
+ xml = TestHelper.CreateFakePostNotification(response_hash, captureResponse)
555
+
556
+ response = gateway.ParseXmlToNotification(xml)
557
+
558
+ expect(response.nil?).to eq false
559
+ end
560
+
561
+ it 'should do a parse on online debit xml' do
562
+ xml = '<StatusNotification xmlns="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract"
563
+ xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
564
+ i:schemaLocation="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract StatusNotificationXmlSchema.xsd">
565
+ <AmountInCents>500</AmountInCents>
566
+ <AmountPaidInCents>0</AmountPaidInCents>
567
+ <BoletoTransaction>
568
+ <AmountInCents>500</AmountInCents>
569
+ <AmountPaidInCents>0</AmountPaidInCents>
570
+ <BoletoExpirationDate>2013-02-08T00:00:00</BoletoExpirationDate>
571
+ <NossoNumero>0123456789</NossoNumero>
572
+ <StatusChangedDate>2012-11-06T08:55:49.753</StatusChangedDate>
573
+ <TransactionKey>4111D523-9A83-4BE3-94D2-160F1BC9C4BD</TransactionKey>
574
+ <TransactionReference>B2E32108</TransactionReference>
575
+ <PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
576
+ <BoletoTransactionStatus>Paid</BoletoTransactionStatus>
577
+ </BoletoTransaction>
578
+ <CreditCardTransaction>
579
+ <Acquirer>Simulator</Acquirer>
580
+ <AmountInCents>2000</AmountInCents>
581
+ <AuthorizedAmountInCents>2000</AuthorizedAmountInCents>
582
+ <CapturedAmountInCents>2000</CapturedAmountInCents>
583
+ <CreditCardBrand>Visa</CreditCardBrand>
584
+ <RefundedAmountInCents i:nil="true"/>
585
+ <StatusChangedDate>2012-11-06T10:52:55.93</StatusChangedDate>
586
+ <TransactionIdentifier>123456</TransactionIdentifier>
587
+ <TransactionKey>351FC96A-7F42-4269-AF3C-1E3C179C1CD0</TransactionKey>
588
+ <TransactionReference>24de0432</TransactionReference>
589
+ <UniqueSequentialNumber>123456</UniqueSequentialNumber>
590
+ <VoidedAmountInCents i:nil="true"/>
591
+ <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
592
+ <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
593
+ </CreditCardTransaction>
594
+
595
+ <OnlineDebitTransaction>
596
+ <AmountInCents>100</AmountInCents>
597
+ <AmountPaidInCents>0</AmountPaidInCents>
598
+ <StatusChangedDate>2013-06-27T19:46:46.87</StatusChangedDate>
599
+ <TransactionKey>fb3f158a-0309-4ae3-b8ef-3c5ac2d603d2</TransactionKey>
600
+ <TransactionReference>30bfee13-c908-4e3b-9f70-1f84dbe79fbf</TransactionReference>
601
+ <PreviousOnlineDebitTransactionStatus>OpenedPendingPayment</PreviousOnlineDebitTransactionStatus>
602
+ <OnlineDebitTransactionStatus>NotPaid</OnlineDebitTransactionStatus>
603
+ </OnlineDebitTransaction>
604
+
605
+ <MerchantKey>B1B1092C-8681-40C2-A734-500F22683D9B</MerchantKey>
606
+ <OrderKey>18471F05-9F6D-4497-9C24-D60D5BBB6BBE</OrderKey>
607
+ <OrderReference>64a85875</OrderReference>
608
+ <OrderStatus>Paid</OrderStatus>
609
+ </StatusNotification>'
610
+
611
+ response = gateway.ParseXmlToNotification(xml)
612
+
613
+ expect(response.nil?).to eq false
614
+ end
615
+
616
+ it 'should bring the transaction report file' do
617
+ date = Date.new(2015, 9, 19)
618
+ result = gateway.TransactionReportFile(date)
619
+ split_commas = result.split(',')
620
+
621
+ expect(split_commas[1]).to eq '20150919'
622
+ end
623
+
624
+ it 'should parse the transaction report file received' do
625
+ date = Date.new(2015, 9, 19)
626
+ request_to_parse = gateway.TransactionReportFile(date)
627
+ result = gateway.TransactionReportFileParser(request_to_parse)
628
+
629
+ expect(result['Header'].TransactionProcessedDate).to eq '20150919'
630
+ end
631
+
632
+ it 'should save the transaction report file at selected path' do
633
+ date = Date.new(2015, 9, 19)
634
+
635
+ file = Tempfile.new('Test')
636
+ gateway.TransactionReportFileDownloader(date, 'Test', file.path)
637
+
638
+ file_path = file.path.to_s + 'Test.txt'
639
+ file_exist = File.exist?(file_path)
640
+
641
+ file.close
642
+ file.unlink
643
+
644
+ expect(file_exist).to eq true
645
+ end
646
+
647
+ it 'should get credit card instant buy key deprecated' do
648
+ credit_card_transaction = Gateway::CreditCardTransaction.new
649
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
650
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
651
+ credit_card_transaction.CreditCard.ExpMonth = 10
652
+ credit_card_transaction.CreditCard.ExpYear = 2018
653
+ credit_card_transaction.CreditCard.SecurityCode = '123'
654
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
655
+ credit_card_transaction.AmountInCents = 100
656
+
657
+ sale_request = Gateway::CreateSaleRequest.new
658
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
659
+
660
+ sale_response = gateway.CreateSale(sale_request)
661
+
662
+ expect(sale_response['ErrorReport']).to eq nil
663
+
664
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
665
+
666
+ response = gateway.InstantBuyKey(instant_buy_key)
667
+
668
+ expect(response['ErrorReport']).to eq nil
669
+ end
670
+
671
+ it 'should get credit card instant buy key' do
672
+ credit_card_transaction = Gateway::CreditCardTransaction.new
673
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
674
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
675
+ credit_card_transaction.CreditCard.ExpMonth = 10
676
+ credit_card_transaction.CreditCard.ExpYear = 2018
677
+ credit_card_transaction.CreditCard.SecurityCode = '123'
678
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
679
+ credit_card_transaction.AmountInCents = 100
680
+
681
+ sale_request = Gateway::CreateSaleRequest.new
682
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
683
+
684
+ sale_response = gateway.CreateSale(sale_request)
685
+
686
+ expect(sale_response['ErrorReport']).to eq nil
687
+
688
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
689
+
690
+ response = gateway.GetCreditCard(instant_buy_key)
691
+
692
+ expect(response['ErrorReport']).to eq nil
693
+ end
694
+
695
+ it 'should delete credit card instant buy key' do
696
+ credit_card_transaction = Gateway::CreditCardTransaction.new
697
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
698
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
699
+ credit_card_transaction.CreditCard.ExpMonth = 10
700
+ credit_card_transaction.CreditCard.ExpYear = 2018
701
+ credit_card_transaction.CreditCard.SecurityCode = '123'
702
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
703
+ credit_card_transaction.AmountInCents = 100
704
+
705
+ sale_request = Gateway::CreateSaleRequest.new
706
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
707
+
708
+ sale_response = gateway.CreateSale(sale_request)
709
+
710
+ expect(sale_response['ErrorReport']).to eq nil
711
+
712
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
713
+
714
+ response = gateway.DeleteCreditCard(instant_buy_key)
715
+
716
+ expect(response['Success']).to eq true
717
+ end
718
+
719
+ it 'should consult get credit card with buyer key deprecated' do
720
+
721
+ credit_card_transaction = Gateway::CreditCardTransaction.new
722
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
723
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
724
+ credit_card_transaction.CreditCard.ExpMonth = 10
725
+ credit_card_transaction.CreditCard.ExpYear = 2018
726
+ credit_card_transaction.CreditCard.SecurityCode = '123'
727
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
728
+ credit_card_transaction.AmountInCents = 100
729
+
730
+ sale_request = Gateway::CreateSaleRequest.new
731
+ sale_request.Buyer.Name = 'Anakin Skywalker'
732
+ sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
733
+ sale_request.Buyer.DocumentNumber = '12345678901'
734
+ sale_request.Buyer.DocumentType = 'CPF'
735
+ sale_request.Buyer.PersonType = 'Person'
736
+ sale_request.Buyer.Gender = 'M'
737
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
738
+
739
+ sale_response = gateway.CreateSale(sale_request)
740
+
741
+ expect(sale_response['ErrorReport']).to eq nil
742
+
743
+ response = gateway.BuyerKey(sale_response['BuyerKey'])
744
+
745
+ expect(response['ErrorReport']).to eq nil
746
+ end
747
+
748
+ it 'should consult get credit card with buyer key' do
749
+
750
+ credit_card_transaction = Gateway::CreditCardTransaction.new
751
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
752
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
753
+ credit_card_transaction.CreditCard.ExpMonth = 10
754
+ credit_card_transaction.CreditCard.ExpYear = 2018
755
+ credit_card_transaction.CreditCard.SecurityCode = '123'
756
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
757
+ credit_card_transaction.AmountInCents = 100
758
+
759
+ sale_request = Gateway::CreateSaleRequest.new
760
+ sale_request.Buyer.Name = 'Anakin Skywalker'
761
+ sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
762
+ sale_request.Buyer.DocumentNumber = '12345678901'
763
+ sale_request.Buyer.DocumentType = 'CPF'
764
+ sale_request.Buyer.PersonType = 'Person'
765
+ sale_request.Buyer.Gender = 'M'
766
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
767
+
768
+ sale_response = gateway.CreateSale(sale_request)
769
+
770
+ expect(sale_response['ErrorReport']).to eq nil
771
+
772
+ response = gateway.GetCreditCardWithBuyerKey(sale_response['BuyerKey'])
773
+
774
+ expect(response['ErrorReport']).to eq nil
775
+ end
776
+
777
+ it 'should create a credit card' do
778
+ create_instant_buy_data = Gateway::CreateInstantBuyDataRequest.new
779
+ create_instant_buy_data.CreditCardNumber = '4111111111111111'
780
+ create_instant_buy_data.ExpMonth = 10
781
+ create_instant_buy_data.ExpYear = 2018
782
+ create_instant_buy_data.SecurityCode = '123'
783
+ create_instant_buy_data.HolderName = 'Luke Skywalker'
784
+ create_instant_buy_data.CreditCardBrand = 'Visa'
785
+ create_instant_buy_data.IsOneDollarAuthEnabled = false
786
+ create_instant_buy_data.BillingAddress.City = 'Rio de Janeiro'
787
+ create_instant_buy_data.BillingAddress.Complement = 'Em frente ao Aeroporto'
788
+ create_instant_buy_data.BillingAddress.Country = 'Brazil'
789
+ create_instant_buy_data.BillingAddress.District = 'Centro'
790
+ create_instant_buy_data.BillingAddress.Number = '123'
791
+ create_instant_buy_data.BillingAddress.State = 'RJ'
792
+ create_instant_buy_data.BillingAddress.Street = 'Av. General Justo'
793
+ create_instant_buy_data.BillingAddress.ZipCode = '20270004'
794
+
795
+ response = gateway.CreateCreditCard(create_instant_buy_data)
796
+
797
+ expect(response['ErrorReport']).to eq nil
798
+ end
799
+
800
+ it 'should create credit card with buyerkey in it' do
801
+ address = Gateway::BuyerAddress.new
802
+ address.AddressType = 'Residential'
803
+ address.City = 'Tatooine'
804
+ address.Complement = ''
805
+ address.Country = 'Brazil'
806
+ address.District = 'Mos Eisley'
807
+ address.Number = '123'
808
+ address.State = 'RJ'
809
+ address.Street = 'Mos Eisley Cantina'
810
+ address.ZipCode = '20001000'
811
+
812
+ buyer_request = Gateway::CreateBuyerRequest.new
813
+ buyer_request.AddressCollection << address
814
+ buyer_request.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
815
+ buyer_request.BuyerCategory = 'Normal'
816
+ buyer_request.BuyerReference = 'C3PO'
817
+ buyer_request.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime("%Y-%m-%dT%H:%M:%S")
818
+ buyer_request.DocumentNumber = '12345678901'
819
+ buyer_request.DocumentType = 'CPF'
820
+ buyer_request.Email = 'lskywalker@r2d2.com'
821
+ buyer_request.EmailType = 'Personal'
822
+ buyer_request.FacebookId = 'lukeskywalker8917'
823
+ buyer_request.Gender = 'M'
824
+ buyer_request.HomePhone = '(21)123456789'
825
+ buyer_request.LastBuyerUpdateInMerchant = DateTime.now.strftime("%Y-%m-%dT%H:%M:%S")
826
+ buyer_request.MobilePhone = '(21)987654321'
827
+ buyer_request.Name = 'Luke Skywalker'
828
+ buyer_request.PersonType = 'Person'
829
+ buyer_request.TwitterId = '@lukeskywalker8917'
830
+ buyer_request.WorkPhone = '(21)28467902'
831
+
832
+ new_buyer_response = gateway.CreateBuyer(buyer_request)
833
+ buyer_key = new_buyer_response['BuyerKey']
834
+
835
+ create_instant_buy_data = Gateway::CreateInstantBuyDataRequest.new
836
+ create_instant_buy_data.CreditCardNumber = '4111111111111111'
837
+ create_instant_buy_data.ExpMonth = 10
838
+ create_instant_buy_data.ExpYear = 2018
839
+ create_instant_buy_data.SecurityCode = '123'
840
+ create_instant_buy_data.HolderName = 'Luke Skywalker'
841
+ create_instant_buy_data.CreditCardBrand = 'Visa'
842
+ create_instant_buy_data.IsOneDollarAuthEnabled = false
843
+ create_instant_buy_data.BuyerKey = buyer_key
844
+ create_instant_buy_data.BillingAddress.City = 'Rio de Janeiro'
845
+ create_instant_buy_data.BillingAddress.Complement = 'Em frente ao Aeroporto'
846
+ create_instant_buy_data.BillingAddress.Country = 'Brazil'
847
+ create_instant_buy_data.BillingAddress.District = 'Centro'
848
+ create_instant_buy_data.BillingAddress.Number = '123'
849
+ create_instant_buy_data.BillingAddress.State = 'RJ'
850
+ create_instant_buy_data.BillingAddress.Street = 'Av. General Justo'
851
+ create_instant_buy_data.BillingAddress.ZipCode = '20270004'
852
+
853
+ response = gateway.CreateCreditCard(create_instant_buy_data)
854
+
855
+ expect(response['Success']).to eq true
856
+ end
857
+
858
+ it 'should create a credit card without billing address' do
859
+ create_instant_buy_data = Gateway::CreateInstantBuyDataRequest.new
860
+ create_instant_buy_data.CreditCardNumber = '4111111111111111'
861
+ create_instant_buy_data.ExpMonth = 10
862
+ create_instant_buy_data.ExpYear = 2018
863
+ create_instant_buy_data.SecurityCode = '123'
864
+ create_instant_buy_data.HolderName = 'Luke Skywalker'
865
+ create_instant_buy_data.CreditCardBrand = 'Visa'
866
+
867
+ response = gateway.CreateCreditCard(create_instant_buy_data)
868
+
869
+ expect(response['ErrorReport']).to eq nil
870
+ end
871
+
872
+ it 'should update the credit card' do
873
+ create_instant_buy_data = Gateway::CreateInstantBuyDataRequest.new
874
+ create_instant_buy_data.CreditCardNumber = '4111111111111111'
875
+ create_instant_buy_data.ExpMonth = 10
876
+ create_instant_buy_data.ExpYear = 2018
877
+ create_instant_buy_data.SecurityCode = '123'
878
+ create_instant_buy_data.HolderName = 'Luke Skywalker'
879
+ create_instant_buy_data.CreditCardBrand = 'Visa'
880
+ create_instant_buy_data.IsOneDollarAuthEnabled = false
881
+ create_instant_buy_data.BillingAddress.City = 'Rio de Janeiro'
882
+ create_instant_buy_data.BillingAddress.Complement = 'Em frente ao Aeroporto'
883
+ create_instant_buy_data.BillingAddress.Country = 'Brazil'
884
+ create_instant_buy_data.BillingAddress.District = 'Centro'
885
+ create_instant_buy_data.BillingAddress.Number = '123'
886
+ create_instant_buy_data.BillingAddress.State = 'RJ'
887
+ create_instant_buy_data.BillingAddress.Street = 'Av. General Justo'
888
+ create_instant_buy_data.BillingAddress.ZipCode = '20270004'
889
+
890
+ create_credit_card = gateway.CreateCreditCard(create_instant_buy_data)
891
+
892
+ credit_card_transaction = Gateway::CreditCardTransaction.new
893
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
894
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
895
+ credit_card_transaction.CreditCard.ExpMonth = 10
896
+ credit_card_transaction.CreditCard.ExpYear = 2018
897
+ credit_card_transaction.CreditCard.SecurityCode = '123'
898
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
899
+ credit_card_transaction.AmountInCents = 100
900
+
901
+ sale_request = Gateway::CreateSaleRequest.new
902
+ sale_request.Buyer.Name = 'Anakin Skywalker'
903
+ sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
904
+ sale_request.Buyer.DocumentNumber = '12345678901'
905
+ sale_request.Buyer.DocumentType = 'CPF'
906
+ sale_request.Buyer.PersonType = 'Person'
907
+ sale_request.Buyer.Gender = 'M'
908
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
909
+
910
+ sale_response = gateway.CreateSale(sale_request)
911
+
912
+ instant_buy_key = create_credit_card['InstantBuyKey']
913
+
914
+ buyer_key = sale_response['BuyerKey']
915
+
916
+ update_instant_buy_data_request = Gateway::UpdateInstantBuyDataRequest.new
917
+ update_instant_buy_data_request.BuyerKey = buyer_key
918
+
919
+ response = gateway.UpdateCreditCard(instant_buy_key, update_instant_buy_data_request)
920
+
921
+ expect(response['Success']).to eq true
922
+ end
923
+
924
+ it 'should do a credit card transaction with instant buy key' do
925
+ credit_card_transaction = Gateway::CreditCardTransaction.new
926
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
927
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
928
+ credit_card_transaction.CreditCard.ExpMonth = 10
929
+ credit_card_transaction.CreditCard.ExpYear = 2018
930
+ credit_card_transaction.CreditCard.SecurityCode = '123'
931
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
932
+ credit_card_transaction.AmountInCents = 100
933
+
934
+ sale_request = Gateway::CreateSaleRequest.new
935
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
936
+
937
+ sale_response = gateway.CreateSale(sale_request)
938
+
939
+ expect(sale_response['ErrorReport']).to eq nil
940
+
941
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
942
+
943
+ # coleta dados do cartao
944
+ creditCardTransaction = Gateway::CreditCardTransaction.new
945
+ creditCardTransaction.AmountInCents = 100
946
+ creditCardTransaction.CreditCard.InstantBuyKey = instant_buy_key
947
+
948
+ # cria a transacao
949
+ createSaleRequest = Gateway::CreateSaleRequest.new
950
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
951
+
952
+ # faz a requisicao de criação de transacao, retorna um hash com a resposta
953
+ response = gateway.CreateSale(createSaleRequest)
954
+
955
+ expect(response['ErrorReport']).to eq nil
956
+ end
957
+
958
+ it 'should get the buyer with buyer key' do
959
+ credit_card_transaction = Gateway::CreditCardTransaction.new
960
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
961
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
962
+ credit_card_transaction.CreditCard.ExpMonth = 10
963
+ credit_card_transaction.CreditCard.ExpYear = 2018
964
+ credit_card_transaction.CreditCard.SecurityCode = '123'
965
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
966
+ credit_card_transaction.AmountInCents = 100
967
+
968
+ sale_request = Gateway::CreateSaleRequest.new
969
+ sale_request.Buyer.Name = 'Anakin Skywalker'
970
+ sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
971
+ sale_request.Buyer.DocumentNumber = '12345678901'
972
+ sale_request.Buyer.DocumentType = 'CPF'
973
+ sale_request.Buyer.PersonType = 'Person'
974
+ sale_request.Buyer.Gender = 'M'
975
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
976
+
977
+ sale_response = gateway.CreateSale(sale_request)
978
+
979
+ expect(sale_response['ErrorReport']).to eq nil
980
+
981
+ response = gateway.GetBuyer(sale_response['BuyerKey'])
982
+
983
+ expect(response['ErrorReport']).to eq nil
984
+ end
985
+
986
+ it 'should create buyer with buyer request' do
987
+ address = Gateway::BuyerAddress.new
988
+ address.AddressType = 'Residential'
989
+ address.City = 'Tatooine'
990
+ address.Complement = ''
991
+ address.Country = 'Brazil'
992
+ address.District = 'Mos Eisley'
993
+ address.Number = '123'
994
+ address.State = 'RJ'
995
+ address.Street = 'Mos Eisley Cantina'
996
+ address.ZipCode = '20001000'
997
+
998
+ buyer_request = Gateway::CreateBuyerRequest.new
999
+ buyer_request.AddressCollection << address
1000
+ buyer_request.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
1001
+ buyer_request.BuyerCategory = 'Normal'
1002
+ buyer_request.BuyerReference = 'C3PO'
1003
+ buyer_request.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime("%Y-%m-%dT%H:%M:%S")
1004
+ buyer_request.DocumentNumber = '12345678901'
1005
+ buyer_request.DocumentType = 'CPF'
1006
+ buyer_request.Email = 'lskywalker@r2d2.com'
1007
+ buyer_request.EmailType = 'Personal'
1008
+ buyer_request.FacebookId = 'lukeskywalker8917'
1009
+ buyer_request.Gender = 'M'
1010
+ buyer_request.HomePhone = '(21)123456789'
1011
+ buyer_request.LastBuyerUpdateInMerchant = DateTime.now.strftime("%Y-%m-%dT%H:%M:%S")
1012
+ buyer_request.MobilePhone = '(21)987654321'
1013
+ buyer_request.Name = 'Luke Skywalker'
1014
+ buyer_request.PersonType = 'Person'
1015
+ buyer_request.TwitterId = '@lukeskywalker8917'
1016
+ buyer_request.WorkPhone = '(21)28467902'
1017
+
1018
+ response = gateway.CreateBuyer(buyer_request)
1019
+
1020
+ expect(response['Success']).to eq true
1021
+ end
1022
+ end