mundipagg_sdk 1.0.3 → 1.2.3rc

Sign up to get free protection for your applications and to get access to all the features.
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