stone_ecommerce 1.0.0

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 (66) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +202 -0
  3. data/README.md +64 -0
  4. data/lib/gateway/Address/billing_address.rb +32 -0
  5. data/lib/gateway/Address/buyer_address.rb +36 -0
  6. data/lib/gateway/Address/delivery_address.rb +32 -0
  7. data/lib/gateway/AntiFraud/anti_fraud_analysis_result.rb +47 -0
  8. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_data.rb +51 -0
  9. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data.rb +41 -0
  10. data/lib/gateway/BaseRequest.rb +11 -0
  11. data/lib/gateway/BaseResponse.rb +17 -0
  12. data/lib/gateway/BoletoTransaction/boleto_transaction.rb +43 -0
  13. data/lib/gateway/BoletoTransaction/boleto_transaction_data.rb +44 -0
  14. data/lib/gateway/BoletoTransaction/boleto_transaction_options.rb +14 -0
  15. data/lib/gateway/BoletoTransaction/boleto_transaction_report_file.rb +20 -0
  16. data/lib/gateway/BoletoTransaction/boleto_transaction_result.rb +35 -0
  17. data/lib/gateway/CreditCardTransaction/credit_card.rb +30 -0
  18. data/lib/gateway/CreditCardTransaction/credit_card_transaction.rb +32 -0
  19. data/lib/gateway/CreditCardTransaction/credit_card_transaction_data.rb +104 -0
  20. data/lib/gateway/CreditCardTransaction/credit_card_transaction_options.rb +27 -0
  21. data/lib/gateway/CreditCardTransaction/credit_card_transaction_report_file.rb +29 -0
  22. data/lib/gateway/CreditCardTransaction/manage_credit_card_transaction.rb +12 -0
  23. data/lib/gateway/CreditCardTransaction/retry_sale_credit_card_transaction.rb +13 -0
  24. data/lib/gateway/ErrorItem.rb +17 -0
  25. data/lib/gateway/ErrorReport.rb +18 -0
  26. data/lib/gateway/Gateway.rb +442 -0
  27. data/lib/gateway/InstantBuy/credit_card_data.rb +41 -0
  28. data/lib/gateway/InstantBuy/get_instant_buy_data_response.rb +18 -0
  29. data/lib/gateway/Merchant/merchant.rb +11 -0
  30. data/lib/gateway/OnlineDebit/online_debit_transaction_report_file.rb +18 -0
  31. data/lib/gateway/Order/order.rb +11 -0
  32. data/lib/gateway/Order/order_transaction_report_file.rb +6 -0
  33. data/lib/gateway/Parsers/boleto_transaction_parser.rb +31 -0
  34. data/lib/gateway/Parsers/credit_card_transaction_parser.rb +40 -0
  35. data/lib/gateway/Parsers/header_parser.rb +14 -0
  36. data/lib/gateway/Parsers/online_debit_transaction_parser.rb +30 -0
  37. data/lib/gateway/Parsers/trailer_parser.rb +15 -0
  38. data/lib/gateway/Person/buyer.rb +33 -0
  39. data/lib/gateway/Person/person.rb +47 -0
  40. data/lib/gateway/Recurrency/recurrency.rb +23 -0
  41. data/lib/gateway/Sale/create_sale_request.rb +36 -0
  42. data/lib/gateway/Sale/create_sale_response.rb +25 -0
  43. data/lib/gateway/Sale/manage_sale_request.rb +17 -0
  44. data/lib/gateway/Sale/manage_sale_response.rb +15 -0
  45. data/lib/gateway/Sale/query_sale_request.rb +36 -0
  46. data/lib/gateway/Sale/query_sale_response.rb +18 -0
  47. data/lib/gateway/Sale/request_data.rb +20 -0
  48. data/lib/gateway/Sale/retry_sale_options.rb +14 -0
  49. data/lib/gateway/Sale/retry_sale_request.rb +22 -0
  50. data/lib/gateway/Sale/retry_sale_response.rb +14 -0
  51. data/lib/gateway/Sale/sale_data.rb +33 -0
  52. data/lib/gateway/Sale/sale_order_data.rb +17 -0
  53. data/lib/gateway/SalesOption.rb +17 -0
  54. data/lib/gateway/ShoppingCart/shopping_cart.rb +26 -0
  55. data/lib/gateway/ShoppingCart/shopping_cart_item.rb +23 -0
  56. data/lib/gateway/Trailer.rb +6 -0
  57. data/lib/gateway/address.rb +25 -0
  58. data/lib/gateway/header.rb +5 -0
  59. data/lib/gateway/post_notification.rb +29 -0
  60. data/lib/gateway/transaction_report_file.rb +45 -0
  61. data/lib/stone_ecommerce.rb +70 -0
  62. data/spec/integration/gateway_spec.rb +616 -0
  63. data/spec/integration/test_helper.rb +69 -0
  64. data/spec/spec_helper.rb +96 -0
  65. data/stone_ecommerce.gemspec +19 -0
  66. metadata +247 -0
@@ -0,0 +1,616 @@
1
+ require_relative '../../lib/stone_ecommerce'
2
+ require_relative 'test_helper'
3
+
4
+ merchant_key = 'merchant_key'
5
+ gateway = Gateway.new(:production, 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
+ buyerAddressItem = BuyerAddress.new
87
+ buyerAddressItem.AddressType = 'Comercial'
88
+ buyerAddressItem.City = 'Rio de Janeiro'
89
+ buyerAddressItem.Complement = '10 Andar'
90
+ buyerAddressItem.Country = 'Brazil'
91
+ buyerAddressItem.District = 'Centro'
92
+ buyerAddressItem.Number = '199'
93
+ buyerAddressItem.State = 'RJ'
94
+ buyerAddressItem.Street = 'Rua da Quitanda'
95
+ buyerAddressItem.ZipCode = '20091005'
96
+
97
+ boletoTransactionItem = BoletoTransaction.new
98
+ boletoTransactionItem.AmountInCents = 350
99
+ boletoTransactionItem.BankNumber = '237'
100
+ boletoTransactionItem.BillingAddress.City = 'Rio de Janeiro'
101
+ boletoTransactionItem.BillingAddress.Complement = '10º andar'
102
+ boletoTransactionItem.BillingAddress.Country = 'Brazil'
103
+ boletoTransactionItem.BillingAddress.District = 'Centro'
104
+ boletoTransactionItem.BillingAddress.Number = '199'
105
+ boletoTransactionItem.BillingAddress.State = 'RJ'
106
+ boletoTransactionItem.BillingAddress.Street = 'Rua da Quitanda'
107
+ boletoTransactionItem.BillingAddress.ZipCode = '20091005'
108
+ boletoTransactionItem.DocumentNumber = '12345678901'
109
+ boletoTransactionItem.Instructions = 'Pagar antes do vencimento'
110
+ boletoTransactionItem.Options.CurrencyIso = 'BRL'
111
+ boletoTransactionItem.Options.DaysToAddInBoletoExpirationDate = 7
112
+ boletoTransactionItem.TransactionDateInMerchant = Date.new(2014, 11, 5).strftime("%Y-%m-%dT%H:%M:%S")
113
+ boletoTransactionItem.TransactionReference = 'RubySDK-BoletoTransactionTest'
114
+
115
+ creditCardTransactionItem = CreditCardTransaction.new
116
+ creditCardTransactionItem.AmountInCents = 750
117
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
118
+ creditCardTransactionItem.InstallmentCount = 1
119
+ creditCardTransactionItem.TransactionDateInMerchant = Date.new(2014, 11, 5).strftime("%Y-%m-%dT%H:%M:%S")
120
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CreditCardTransactionTest'
121
+ creditCardTransactionItem.Options.CaptureDelayInMinutes = 0
122
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
123
+ creditCardTransactionItem.Options.ExtendedLimitCode = nil
124
+ creditCardTransactionItem.Options.ExtendedLimitEnabled = false
125
+ creditCardTransactionItem.Options.IataAmountInCents = 0
126
+ creditCardTransactionItem.Options.InterestRate = 0
127
+ creditCardTransactionItem.Options.MerchantCategoryCode = nil
128
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
129
+ creditCardTransactionItem.Options.SoftDescriptorText = 'Nome da Loja'
130
+ creditCardTransactionItem.Recurrency.DateToStartBilling = (Date.parse(Time.now.to_s)).strftime("%Y-%m-%dT%H:%M:%S")
131
+ creditCardTransactionItem.Recurrency.Frequency = 'Monthly'
132
+ creditCardTransactionItem.Recurrency.Interval = 1
133
+ creditCardTransactionItem.Recurrency.OneDollarAuth = false
134
+ creditCardTransactionItem.Recurrency.Recurrences = 2
135
+ creditCardTransactionItem.CreditCard.BillingAddress.City = 'Rio de Janeiro'
136
+ creditCardTransactionItem.CreditCard.BillingAddress.Complement = '10º andar'
137
+ creditCardTransactionItem.CreditCard.BillingAddress.Country = 'Brazil'
138
+ creditCardTransactionItem.CreditCard.BillingAddress.District = 'Centro'
139
+ creditCardTransactionItem.CreditCard.BillingAddress.Number = '199'
140
+ creditCardTransactionItem.CreditCard.BillingAddress.State = 'RJ'
141
+ creditCardTransactionItem.CreditCard.BillingAddress.Street = 'Ruda da Quitanda'
142
+ creditCardTransactionItem.CreditCard.BillingAddress.ZipCode = '20091005'
143
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
144
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
145
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
146
+ creditCardTransactionItem.CreditCard.ExpYear = 19
147
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
148
+ creditCardTransactionItem.CreditCard.InstantBuyKey = '00000000-0000-0000-0000-000000000000'
149
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
150
+
151
+ shoppingCartItem = ShoppingCartItemCollection.new
152
+ shoppingCartItem.Description = 'Descricao do Produto'
153
+ shoppingCartItem.DiscountAmountInCents = 120
154
+ shoppingCartItem.ItemReference = 'product#666'
155
+ shoppingCartItem.Name = 'Nome do produto'
156
+ shoppingCartItem.Quantity = 1
157
+ shoppingCartItem.TotalCostInCents = 1100
158
+ shoppingCartItem.UnitCostInCents = 1220
159
+
160
+ shoppingCartCollectionItem = ShoppingCartCollection.new
161
+ shoppingCartCollectionItem.DeliveryAddress.City = 'Rio de Janeiro'
162
+ shoppingCartCollectionItem.DeliveryAddress.Complement = '10º andar'
163
+ shoppingCartCollectionItem.DeliveryAddress.Country = 'Brazil'
164
+ shoppingCartCollectionItem.DeliveryAddress.District = 'Centro'
165
+ shoppingCartCollectionItem.DeliveryAddress.Number = '199'
166
+ shoppingCartCollectionItem.DeliveryAddress.State = 'RJ'
167
+ shoppingCartCollectionItem.DeliveryAddress.Street = 'Rua da Quitanda'
168
+ shoppingCartCollectionItem.DeliveryAddress.ZipCode = '20091005'
169
+ shoppingCartCollectionItem.DeliveryDeadline = Date.new(2014, 12, 5).strftime("%Y-%m-%dT%H:%M:%S")
170
+ shoppingCartCollectionItem.EstimatedDeliveryDate = Date.new(2014, 11, 25).strftime("%Y-%m-%dT%H:%M:%S")
171
+ shoppingCartCollectionItem.FreighCostInCents = 0
172
+ shoppingCartCollectionItem.ShippingCompany = 'Nome da empresa responsável pela entrega'
173
+ shoppingCartCollectionItem.ShoppingCartItemCollection << shoppingCartItem
174
+
175
+ createSaleRequest = CreateSaleRequest.new
176
+
177
+ createSaleRequest.Buyer.AddressCollection = Array.new
178
+
179
+ createSaleRequest.Buyer.Birthdate = Date.new(1990, 3, 3).strftime("%Y-%m-%dT%H:%M:%S")
180
+ createSaleRequest.Buyer.DocumentNumber = '12345678901'
181
+ createSaleRequest.Buyer.DocumentType = 'CPF'
182
+ createSaleRequest.Buyer.Email = 'someone@example.com'
183
+ createSaleRequest.Buyer.EmailType = 'Personal'
184
+ createSaleRequest.Buyer.FacebookId = ''
185
+ createSaleRequest.Buyer.Gender = 'M'
186
+ createSaleRequest.Buyer.HomePhone = '2112345678'
187
+ createSaleRequest.Buyer.MobilePhone = '21987654321'
188
+ createSaleRequest.Buyer.Name = 'Someone'
189
+ createSaleRequest.Buyer.PersonType = 'Person'
190
+ createSaleRequest.Buyer.TwitterId = ''
191
+ createSaleRequest.Buyer.WorkPhone = '2178563412'
192
+ createSaleRequest.Buyer.BuyerCategory = 'Normal'
193
+ createSaleRequest.Buyer.BuyerKey = '00000000-0000-0000-0000-000000000000'
194
+ createSaleRequest.Buyer.BuyerReference = 'RubyBuyer#JohnConnor'
195
+ createSaleRequest.Buyer.CreateDateInMerchant = Date.new(2014, 4, 15).strftime("%Y-%m-%dT%H:%M:%S")
196
+ createSaleRequest.Buyer.LastBuyerUpdateInMerchant = Date.new(2014, 4, 15).strftime("%Y-%m-%dT%H:%M:%S")
197
+ createSaleRequest.Buyer.AddressCollection << buyerAddressItem
198
+ createSaleRequest.Merchant.MerchantReference = 'Nome da Loja'
199
+ createSaleRequest.Options.AntiFraudServiceCode = 0
200
+ createSaleRequest.Options.CurrencyIso = 'BRL'
201
+ createSaleRequest.Options.IsAntiFraudEnabled = false
202
+ createSaleRequest.Options.Retries = 3
203
+ createSaleRequest.Order.OrderReference = 'RubySDK-TestOrder'
204
+ createSaleRequest.RequestData.EcommerceCategory = 'B2B'
205
+ createSaleRequest.RequestData.IpAddress = '127.0.0.1'
206
+ createSaleRequest.RequestData.Origin = ''
207
+ createSaleRequest.RequestData.SessionId = ''
208
+ createSaleRequest.BoletoTransactionCollection << boletoTransactionItem
209
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
210
+
211
+ response = gateway.CreateSale(createSaleRequest)
212
+
213
+ expect(response[:ErrorReport]).to eq nil
214
+ end
215
+
216
+ it 'should consult the order with order key' do
217
+ querySaleRequest = QuerySaleRequest.new
218
+ createSaleRequest = CreateSaleRequest.new
219
+
220
+ boletoTransaction = BoletoTransaction.new
221
+ boletoTransaction.AmountInCents = 100
222
+ boletoTransaction.BankNumber = '237'
223
+ boletoTransaction.DocumentNumber = '12345678901'
224
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
225
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
226
+ boletoTransaction.Options.CurrencyIso = 'BRL'
227
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
228
+
229
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
230
+
231
+ boleto_response = gateway.CreateSale(createSaleRequest)
232
+
233
+ querySaleRequest.OrderKey = boleto_response['OrderResult']['OrderKey']
234
+ responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)
235
+
236
+ orderKey = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderKey"]
237
+
238
+ expect(orderKey).to eq querySaleRequest.OrderKey
239
+ end
240
+
241
+ it 'should consult the order with order reference' do
242
+ querySaleRequest = QuerySaleRequest.new
243
+ createSaleRequest = CreateSaleRequest.new
244
+
245
+ boletoTransaction = BoletoTransaction.new
246
+ boletoTransaction.AmountInCents = 100
247
+ boletoTransaction.BankNumber = '237'
248
+ boletoTransaction.DocumentNumber = '12345678901'
249
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
250
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
251
+ boletoTransaction.Options.CurrencyIso = 'BRL'
252
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
253
+
254
+ createSaleRequest.Order.OrderReference = 'RubyOrderReferenceUnitTest'
255
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
256
+
257
+ boleto_response = gateway.CreateSale(createSaleRequest)
258
+
259
+ querySaleRequest.OrderReference = boleto_response['OrderResult']['OrderReference']
260
+ responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderReference], querySaleRequest.OrderReference)
261
+
262
+ orderReference = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderReference"]
263
+
264
+ expect(orderReference).to eq querySaleRequest.OrderReference
265
+ end
266
+
267
+ it 'should do a retry method' do
268
+ retrySaleRequest = RetrySaleRequest.new
269
+ retrySaleCreditCardTransactionItem = RetrySaleCreditCardTransaction.new
270
+
271
+ createSaleRequest = CreateSaleRequest.new
272
+ creditCardTransactionItem = CreditCardTransaction.new
273
+ creditCardTransactionItem.AmountInCents = 100
274
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
275
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
276
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
277
+ creditCardTransactionItem.CreditCard.ExpYear = 19
278
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
279
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
280
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
281
+ creditCardTransactionItem.InstallmentCount = 1
282
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
283
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
284
+ creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
285
+
286
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
287
+ createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
288
+
289
+ # cria o pedido que sera usado para retentativa
290
+ responseCreate = gateway.CreateSale(createSaleRequest)
291
+
292
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
293
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
294
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
295
+
296
+ # monta o objeto de retentativa
297
+ retrySaleCreditCardTransactionItem.SecurityCode = '123'
298
+ retrySaleCreditCardTransactionItem.TransactionKey = transactionKey
299
+ retrySaleRequest.OrderKey = orderKey
300
+ retrySaleRequest.RetrySaleCreditCardTransactionCollection << retrySaleCreditCardTransactionItem
301
+
302
+ # faz a requisicao de retentativa
303
+ response = gateway.Retry(retrySaleRequest)
304
+
305
+ # espera que o transaction key seja igual, significa que foi tudo ok no teste
306
+ responseTransactionKey = response['CreditCardTransactionResultCollection'][0]['TransactionKey']
307
+
308
+ expect(responseTransactionKey).to eq transactionKey
309
+
310
+ end
311
+
312
+ it 'should cancel a transaction' do
313
+ createSaleRequest = CreateSaleRequest.new
314
+ creditCardTransactionItem = CreditCardTransaction.new
315
+ creditCardTransactionItem.AmountInCents = 100
316
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
317
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
318
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
319
+ creditCardTransactionItem.CreditCard.ExpYear = 19
320
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
321
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
322
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
323
+ creditCardTransactionItem.InstallmentCount = 1
324
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
325
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
326
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
327
+
328
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
329
+ createSaleRequest.Order.OrderReference = 'RubySDK-CancelTest'
330
+
331
+ # cria o pedido que sera usado para cancelamento
332
+ responseCreate = gateway.CreateSale(createSaleRequest)
333
+
334
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer o cancelamento
335
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
336
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
337
+
338
+ # itens necessarios para cancelamento da transacao de cartao de credito
339
+ cancelCreditCardTransactionItem = ManageCreditCardTransaction.new
340
+ cancelCreditCardTransactionItem.AmountInCents = 100
341
+ cancelCreditCardTransactionItem.TransactionKey = transactionKey
342
+ cancelCreditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
343
+
344
+ # monta o objeto para cancelamento de transacao
345
+ cancelSaleRequest = ManageSaleRequest.new
346
+ cancelSaleRequest.OrderKey = orderKey
347
+ cancelSaleRequest.CreditCardTransactionCollection << cancelCreditCardTransactionItem
348
+
349
+ response = gateway.Cancel(cancelSaleRequest)
350
+
351
+ expect(response[:ErrorReport]).to eq nil
352
+ end
353
+
354
+ it 'should capture a transaction' do
355
+ createSaleRequest = CreateSaleRequest.new
356
+ creditCardTransactionItem = CreditCardTransaction.new
357
+ creditCardTransactionItem.AmountInCents = 100
358
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
359
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
360
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
361
+ creditCardTransactionItem.CreditCard.ExpYear = 19
362
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
363
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
364
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
365
+ creditCardTransactionItem.InstallmentCount = 1
366
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
367
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
368
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
369
+
370
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
371
+ createSaleRequest.Order.OrderReference = 'RubySDK-CaptureTest'
372
+
373
+ # cria o pedido que sera usado para captura
374
+ responseCreate = gateway.CreateSale(createSaleRequest)
375
+
376
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a captura
377
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
378
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
379
+
380
+ # itens necessarios para captura da transacao de cartao de credito
381
+ captureCreditCardTransactionItem = ManageCreditCardTransaction.new
382
+ captureCreditCardTransactionItem.AmountInCents = 100
383
+ captureCreditCardTransactionItem.TransactionKey = transactionKey
384
+ captureCreditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
385
+
386
+ # monta o objeto para cancelamento de transacao
387
+ captureSaleRequest = ManageSaleRequest.new
388
+ captureSaleRequest.OrderKey = orderKey
389
+ captureSaleRequest.CreditCardTransactionCollection << captureCreditCardTransactionItem
390
+
391
+ response = gateway.Capture(captureSaleRequest)
392
+
393
+ # espera que o ErrorReport seja nulo, significa que foi tudo ok na transação
394
+ expect(response['ErrorReport']).to eq nil
395
+ end
396
+
397
+ it 'should do a parse xml to notification interpretation' do
398
+ creditCardTransactionItem = CreditCardTransaction.new
399
+ creditCardTransactionItem.AmountInCents = 100
400
+ creditCardTransactionItem.TransactionReference = 'Ruby PostNotification Test'
401
+ creditCardTransactionItem.InstallmentCount = 1
402
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
403
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
404
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
405
+ creditCardTransactionItem.CreditCard.HolderName = 'Bruce Wayne'
406
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
407
+ creditCardTransactionItem.CreditCard.ExpMonth = 5
408
+ creditCardTransactionItem.CreditCard.ExpYear = 20
409
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
410
+
411
+ createSaleRequest = CreateSaleRequest.new
412
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
413
+
414
+ response_hash = gateway.CreateSale(createSaleRequest)
415
+
416
+ credit_card_result = response_hash['CreditCardTransactionResultCollection'][0]
417
+
418
+ expect(credit_card_result['Success']).to eq true
419
+ # expect(credit_card_result['CreditCardOperation']).to eq 'AuthOnly'
420
+ # expect(credit_card_result['CreditCardTransactionStatus']).to eq 'AuthorizedPendingCapture'
421
+
422
+ captureCreditCardTransactionItem = ManageCreditCardTransaction.new
423
+ captureCreditCardTransactionItem.AmountInCents = creditCardTransactionItem.AmountInCents
424
+ captureCreditCardTransactionItem.TransactionKey = credit_card_result['TransactionKey']
425
+ captureCreditCardTransactionItem.TransactionReference = creditCardTransactionItem.TransactionReference
426
+
427
+ captureSale = ManageSaleRequest.new
428
+ captureSale.OrderKey = response_hash['OrderResult']['OrderKey']
429
+ captureSale.CreditCardTransactionCollection << captureCreditCardTransactionItem
430
+
431
+ captureResponse = gateway.Capture(captureSale)
432
+
433
+ expect(captureResponse['ErrorReport']).to eq nil
434
+
435
+
436
+ xml = TestHelper.CreateFakePostNotification(response_hash, captureResponse)
437
+
438
+ response = gateway.ParseXmlToNotification(xml)
439
+
440
+ expect(response.nil?).to eq false
441
+ end
442
+
443
+ it 'should do a parse on online debit xml' do
444
+ xml = '<StatusNotification xmlns="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract"
445
+ xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
446
+ i:schemaLocation="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract StatusNotificationXmlSchema.xsd">
447
+ <AmountInCents>500</AmountInCents>
448
+ <AmountPaidInCents>0</AmountPaidInCents>
449
+ <BoletoTransaction>
450
+ <AmountInCents>500</AmountInCents>
451
+ <AmountPaidInCents>0</AmountPaidInCents>
452
+ <BoletoExpirationDate>2013-02-08T00:00:00</BoletoExpirationDate>
453
+ <NossoNumero>0123456789</NossoNumero>
454
+ <StatusChangedDate>2012-11-06T08:55:49.753</StatusChangedDate>
455
+ <TransactionKey>4111D523-9A83-4BE3-94D2-160F1BC9C4BD</TransactionKey>
456
+ <TransactionReference>B2E32108</TransactionReference>
457
+ <PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
458
+ <BoletoTransactionStatus>Paid</BoletoTransactionStatus>
459
+ </BoletoTransaction>
460
+ <CreditCardTransaction>
461
+ <Acquirer>Simulator</Acquirer>
462
+ <AmountInCents>2000</AmountInCents>
463
+ <AuthorizedAmountInCents>2000</AuthorizedAmountInCents>
464
+ <CapturedAmountInCents>2000</CapturedAmountInCents>
465
+ <CreditCardBrand>Visa</CreditCardBrand>
466
+ <RefundedAmountInCents i:nil="true"/>
467
+ <StatusChangedDate>2012-11-06T10:52:55.93</StatusChangedDate>
468
+ <TransactionIdentifier>123456</TransactionIdentifier>
469
+ <TransactionKey>351FC96A-7F42-4269-AF3C-1E3C179C1CD0</TransactionKey>
470
+ <TransactionReference>24de0432</TransactionReference>
471
+ <UniqueSequentialNumber>123456</UniqueSequentialNumber>
472
+ <VoidedAmountInCents i:nil="true"/>
473
+ <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
474
+ <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
475
+ </CreditCardTransaction>
476
+
477
+ <OnlineDebitTransaction>
478
+ <AmountInCents>100</AmountInCents>
479
+ <AmountPaidInCents>0</AmountPaidInCents>
480
+ <StatusChangedDate>2013-06-27T19:46:46.87</StatusChangedDate>
481
+ <TransactionKey>fb3f158a-0309-4ae3-b8ef-3c5ac2d603d2</TransactionKey>
482
+ <TransactionReference>30bfee13-c908-4e3b-9f70-1f84dbe79fbf</TransactionReference>
483
+ <PreviousOnlineDebitTransactionStatus>OpenedPendingPayment</PreviousOnlineDebitTransactionStatus>
484
+ <OnlineDebitTransactionStatus>NotPaid</OnlineDebitTransactionStatus>
485
+ </OnlineDebitTransaction>
486
+
487
+ <MerchantKey>B1B1092C-8681-40C2-A734-500F22683D9B</MerchantKey>
488
+ <OrderKey>18471F05-9F6D-4497-9C24-D60D5BBB6BBE</OrderKey>
489
+ <OrderReference>64a85875</OrderReference>
490
+ <OrderStatus>Paid</OrderStatus>
491
+ </StatusNotification>'
492
+
493
+ response = gateway.ParseXmlToNotification(xml)
494
+
495
+ expect(response.nil?).to eq false
496
+ end
497
+
498
+ # it 'should bring the transaction report file' do
499
+ # date = Date.new(2015, 9, 19)
500
+ # result = gateway.TransactionReportFile(date)
501
+ # split_commas = result.split(',')
502
+ #
503
+ # expect(split_commas[1]).to eq '20150919'
504
+ # end
505
+ #
506
+ # it 'should parse the transaction report file received' do
507
+ # date = Date.new(2015, 9, 19)
508
+ # request_to_parse = gateway.TransactionReportFile(date)
509
+ # result = gateway.TransactionReportFileParser(request_to_parse)
510
+ #
511
+ # expect(result['Header'].TransactionProcessedDate).to eq '20150919'
512
+ # end
513
+ #
514
+ # it 'should save the transaction report file at selected path' do
515
+ # date = Date.new(2015, 9, 19)
516
+ #
517
+ # file = Tempfile.new('Test')
518
+ # gateway.TransactionReportFileDownloader(date, 'Test', file.path)
519
+ #
520
+ # file_path = file.path.to_s + 'Test.txt'
521
+ # file_exist = File.exist?(file_path)
522
+ #
523
+ # file.close
524
+ # file.unlink
525
+ #
526
+ # expect(file_exist).to eq true
527
+ # end
528
+
529
+ it 'should consult transaction with instant buy key' do
530
+ credit_card_transaction = CreditCardTransaction.new
531
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
532
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
533
+ credit_card_transaction.CreditCard.ExpMonth = 10
534
+ credit_card_transaction.CreditCard.ExpYear = 2018
535
+ credit_card_transaction.CreditCard.SecurityCode = '123'
536
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
537
+ credit_card_transaction.AmountInCents = 100
538
+
539
+ sale_request = CreateSaleRequest.new
540
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
541
+
542
+ sale_response = gateway.CreateSale(sale_request)
543
+
544
+ expect(sale_response['ErrorReport']).to eq nil
545
+
546
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
547
+
548
+ response = gateway.InstantBuyKey(instant_buy_key)
549
+
550
+ expect(response['ErrorReport']).to eq nil
551
+ end
552
+
553
+ it 'should consult transaction with buyer key' do
554
+
555
+ credit_card_transaction = CreditCardTransaction.new
556
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
557
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
558
+ credit_card_transaction.CreditCard.ExpMonth = 10
559
+ credit_card_transaction.CreditCard.ExpYear = 2018
560
+ credit_card_transaction.CreditCard.SecurityCode = '123'
561
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
562
+ credit_card_transaction.AmountInCents = 100
563
+
564
+ sale_request = CreateSaleRequest.new
565
+ sale_request.Buyer.Name = 'Anakin Skywalker'
566
+ sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
567
+ sale_request.Buyer.DocumentNumber = '12345678901'
568
+ sale_request.Buyer.DocumentType = 'CPF'
569
+ sale_request.Buyer.PersonType = 'Person'
570
+ sale_request.Buyer.Gender = 'M'
571
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
572
+
573
+ sale_response = gateway.CreateSale(sale_request)
574
+
575
+ expect(sale_response['ErrorReport']).to eq nil
576
+
577
+ response = gateway.BuyerKey(sale_response['BuyerKey'])
578
+
579
+ expect(response['ErrorReport']).to eq nil
580
+ end
581
+
582
+ it 'should do a credit card transaction with instant buy key' do
583
+ credit_card_transaction = CreditCardTransaction.new
584
+ credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
585
+ credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
586
+ credit_card_transaction.CreditCard.ExpMonth = 10
587
+ credit_card_transaction.CreditCard.ExpYear = 2018
588
+ credit_card_transaction.CreditCard.SecurityCode = '123'
589
+ credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
590
+ credit_card_transaction.AmountInCents = 100
591
+
592
+ sale_request = CreateSaleRequest.new
593
+ sale_request.CreditCardTransactionCollection << credit_card_transaction
594
+
595
+ sale_response = gateway.CreateSale(sale_request)
596
+
597
+ expect(sale_response['ErrorReport']).to eq nil
598
+
599
+ instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
600
+
601
+ # coleta dados do cartao
602
+ creditCardTransaction = CreditCardTransaction.new
603
+ creditCardTransaction.AmountInCents = 100
604
+ creditCardTransaction.CreditCard.InstantBuyKey = instant_buy_key
605
+
606
+ # cria a transacao
607
+ createSaleRequest = CreateSaleRequest.new
608
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
609
+
610
+ # faz a requisicao de criação de transacao, retorna um hash com a resposta
611
+ response = gateway.CreateSale(createSaleRequest)
612
+
613
+ expect(response['ErrorReport']).to eq nil
614
+ end
615
+
616
+ end