mundipagg_api 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 +191 -0
  3. data/README.md +308 -0
  4. data/lib/mundipagg/Address/billing_address.rb +32 -0
  5. data/lib/mundipagg/Address/buyer_address.rb +36 -0
  6. data/lib/mundipagg/Address/delivery_address.rb +32 -0
  7. data/lib/mundipagg/AntiFraud/anti_fraud_analysis_result.rb +47 -0
  8. data/lib/mundipagg/AntiFraud/query_sale_anti_fraud_analysis_data.rb +51 -0
  9. data/lib/mundipagg/AntiFraud/query_sale_anti_fraud_analysis_history_data.rb +41 -0
  10. data/lib/mundipagg/BaseRequest.rb +11 -0
  11. data/lib/mundipagg/BaseResponse.rb +17 -0
  12. data/lib/mundipagg/BoletoTransaction/boleto_transaction.rb +43 -0
  13. data/lib/mundipagg/BoletoTransaction/boleto_transaction_data.rb +44 -0
  14. data/lib/mundipagg/BoletoTransaction/boleto_transaction_options.rb +14 -0
  15. data/lib/mundipagg/BoletoTransaction/boleto_transaction_report_file.rb +20 -0
  16. data/lib/mundipagg/BoletoTransaction/boleto_transaction_result.rb +35 -0
  17. data/lib/mundipagg/CreditCardTransaction/credit_card.rb +30 -0
  18. data/lib/mundipagg/CreditCardTransaction/credit_card_transaction.rb +32 -0
  19. data/lib/mundipagg/CreditCardTransaction/credit_card_transaction_data.rb +104 -0
  20. data/lib/mundipagg/CreditCardTransaction/credit_card_transaction_options.rb +27 -0
  21. data/lib/mundipagg/CreditCardTransaction/credit_card_transaction_report_file.rb +29 -0
  22. data/lib/mundipagg/CreditCardTransaction/manage_credit_card_transaction.rb +12 -0
  23. data/lib/mundipagg/CreditCardTransaction/retry_sale_credit_card_transaction.rb +13 -0
  24. data/lib/mundipagg/ErrorItem.rb +17 -0
  25. data/lib/mundipagg/ErrorReport.rb +18 -0
  26. data/lib/mundipagg/InstantBuy/credit_card_data.rb +41 -0
  27. data/lib/mundipagg/InstantBuy/get_instant_buy_data_response.rb +18 -0
  28. data/lib/mundipagg/Merchant/merchant.rb +11 -0
  29. data/lib/mundipagg/MundipaggApi.rb +336 -0
  30. data/lib/mundipagg/OnlineDebit/online_debit_transaction_report_file.rb +18 -0
  31. data/lib/mundipagg/Order/order.rb +11 -0
  32. data/lib/mundipagg/Order/order_transaction_report_file.rb +6 -0
  33. data/lib/mundipagg/Parsers/boleto_transaction_parser.rb +31 -0
  34. data/lib/mundipagg/Parsers/credit_card_transaction_parser.rb +40 -0
  35. data/lib/mundipagg/Parsers/header_parser.rb +14 -0
  36. data/lib/mundipagg/Parsers/online_debit_transaction_parser.rb +30 -0
  37. data/lib/mundipagg/Parsers/trailer_parser.rb +15 -0
  38. data/lib/mundipagg/Person/buyer.rb +33 -0
  39. data/lib/mundipagg/Person/person.rb +47 -0
  40. data/lib/mundipagg/Recurrency/recurrency.rb +23 -0
  41. data/lib/mundipagg/Sale/create_sale_request.rb +36 -0
  42. data/lib/mundipagg/Sale/create_sale_response.rb +25 -0
  43. data/lib/mundipagg/Sale/manage_sale_request.rb +17 -0
  44. data/lib/mundipagg/Sale/manage_sale_response.rb +15 -0
  45. data/lib/mundipagg/Sale/query_sale_request.rb +36 -0
  46. data/lib/mundipagg/Sale/query_sale_response.rb +18 -0
  47. data/lib/mundipagg/Sale/request_data.rb +20 -0
  48. data/lib/mundipagg/Sale/retry_sale_options.rb +14 -0
  49. data/lib/mundipagg/Sale/retry_sale_request.rb +22 -0
  50. data/lib/mundipagg/Sale/retry_sale_response.rb +14 -0
  51. data/lib/mundipagg/Sale/sale_data.rb +33 -0
  52. data/lib/mundipagg/Sale/sale_order_data.rb +17 -0
  53. data/lib/mundipagg/SalesOption.rb +17 -0
  54. data/lib/mundipagg/ShoppingCart/shopping_cart.rb +26 -0
  55. data/lib/mundipagg/ShoppingCart/shopping_cart_item.rb +23 -0
  56. data/lib/mundipagg/Trailer.rb +6 -0
  57. data/lib/mundipagg/address.rb +25 -0
  58. data/lib/mundipagg/header.rb +5 -0
  59. data/lib/mundipagg/post_notification.rb +29 -0
  60. data/lib/mundipagg/transaction_report_file.rb +45 -0
  61. data/lib/mundipagg_api.rb +70 -0
  62. data/mundipagg-api.gemspec +18 -0
  63. data/spec/integration/gateway_spec.rb +521 -0
  64. data/spec/integration/test_helper.rb +69 -0
  65. data/spec/spec_helper.rb +96 -0
  66. metadata +227 -0
@@ -0,0 +1,14 @@
1
+ class RetrySaleOptions
2
+ # Indica se o limite extendido est� habilitado
3
+ attr_accessor :ExtendedLimitEnabled
4
+
5
+ # C�digo do limite extendido
6
+ attr_accessor :ExtendedLimitCode
7
+
8
+ def to_json
9
+ hash = {}
10
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
11
+ hash
12
+ end
13
+
14
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'retry_sale_options'
2
+
3
+ class RetrySaleRequest
4
+
5
+ attr_accessor :Options
6
+
7
+ attr_accessor :OrderKey
8
+
9
+ attr_accessor :RetrySaleCreditCardTransactionCollection
10
+
11
+ def initialize
12
+ @RetrySaleCreditCardTransactionCollection = Array.new
13
+ @Options = RetrySaleOptions.new
14
+ end
15
+
16
+ def to_json
17
+ hash = {}
18
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
19
+ hash
20
+ end
21
+
22
+ end
@@ -0,0 +1,14 @@
1
+ class RetrySaleResponse
2
+ attr_accessor :CreditCardTransactionResultCollection
3
+
4
+ def initialize
5
+ @CreditCardTransactionResultCollection = Array.new
6
+ end
7
+
8
+ def to_json
9
+ hash = {}
10
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
11
+ hash
12
+ end
13
+
14
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'sale_order_data'
2
+ require_relative '../../mundipagg/AntiFraud/query_sale_anti_fraud_analysis_data'
3
+
4
+ class SaleData
5
+ # Lista transa��es de cart�o de cr�dito
6
+ attr_accessor :CreditCardTransactionDataCollection
7
+
8
+ # Lista as transa��es de boleto
9
+ attr_accessor :BoletoTransactionDataCollection
10
+
11
+ # Dados do pedido
12
+ attr_accessor :OrderData
13
+
14
+ # Chave do comprador. Utilzada para identificar um comprador no gateway
15
+ attr_accessor :BuyerKey
16
+
17
+ # Dados de servi�o do antifraude
18
+ attr_accessor :AntiFraudAnalysisData
19
+
20
+ def initialize
21
+ @CreditCardTransactionDataCollection = Array.new
22
+ @BoletoTransactionDataCollection = Array.new
23
+ @OrderData = SaleOrderData.new
24
+ @AntiFraudAnalysisData = QuerySaleAntiFraudAnalysisData.new
25
+ end
26
+
27
+ def to_json
28
+ hash = {}
29
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
30
+ hash
31
+ end
32
+
33
+ end
@@ -0,0 +1,17 @@
1
+ class SaleOrderData
2
+ # N�mero do pedido no sistema da loja
3
+ attr_accessor :OrderReference
4
+
5
+ # Chave do pedido. Utilizado para identificar o pedido no MundipaggApi
6
+ attr_accessor :OrderKey
7
+
8
+ # Data de cria��o do pedido no MundipaggApi
9
+ attr_accessor :CreateDate
10
+
11
+ def to_json
12
+ hash = {}
13
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
14
+ hash
15
+ end
16
+
17
+ end
@@ -0,0 +1,17 @@
1
+ class SalesOption
2
+
3
+ attr_accessor :IsAntiFraudEnabled
4
+
5
+ attr_accessor :AntiFraudServiceCode
6
+
7
+ attr_accessor :Retries
8
+
9
+ attr_accessor :CurrencyIso
10
+
11
+ def to_json
12
+ hash = {}
13
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
14
+ hash
15
+ end
16
+
17
+ end
@@ -0,0 +1,26 @@
1
+ class ShoppingCartCollection
2
+
3
+ attr_accessor :FreighCostInCents
4
+
5
+ attr_accessor :EstimatedDeliveryDate
6
+
7
+ attr_accessor :DeliveryDeadline
8
+
9
+ attr_accessor :ShippingCompany
10
+
11
+ attr_accessor :DeliveryAddress
12
+
13
+ attr_accessor :ShoppingCartItemCollection
14
+
15
+ def initialize
16
+ @ShoppingCartItemCollection = Array.new
17
+ @DeliveryAddress = DeliveryAddress.new
18
+ end
19
+
20
+ def to_json
21
+ hash = {}
22
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
23
+ hash
24
+ end
25
+
26
+ end
@@ -0,0 +1,23 @@
1
+ class ShoppingCartItemCollection
2
+
3
+ attr_accessor :ItemReference
4
+
5
+ attr_accessor :Quantity
6
+
7
+ attr_accessor :UnitCostInCents
8
+
9
+ attr_accessor :TotalCostInCents
10
+
11
+ attr_accessor :Name
12
+
13
+ attr_accessor :Description
14
+
15
+ attr_accessor :DiscountAmountInCents
16
+
17
+ def to_json
18
+ hash = {}
19
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
20
+ hash
21
+ end
22
+
23
+ end
@@ -0,0 +1,6 @@
1
+ class Trailer
2
+ attr_accessor :OrderDataCount
3
+ attr_accessor :CreditCardTransactionDataCount
4
+ attr_accessor :BoletoTransactionDataCount
5
+ attr_accessor :OnlineDebitTransactionDataCount
6
+ end
@@ -0,0 +1,25 @@
1
+ class Address
2
+
3
+ attr_accessor :Country
4
+
5
+ attr_accessor :State
6
+
7
+ attr_accessor :City
8
+
9
+ attr_accessor :District
10
+
11
+ attr_accessor :Street
12
+
13
+ attr_accessor :Number
14
+
15
+ attr_accessor :Complement
16
+
17
+ attr_accessor :ZipCode
18
+
19
+ def to_json
20
+ hash = {}
21
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
22
+ hash
23
+ end
24
+
25
+ end
@@ -0,0 +1,5 @@
1
+ class Header
2
+ attr_accessor :TransactionProcessedDate
3
+ attr_accessor :ReportFileCreateDate
4
+ attr_accessor :Version
5
+ end
@@ -0,0 +1,29 @@
1
+ require 'nori'
2
+
3
+ # Class who handles Mundipagg post notification XML
4
+ class PostNotification
5
+
6
+ # This method parse the Xml sent by Mundipagg when notify a change in a transaction.
7
+ #
8
+ # @param request [String] XML received in the Mundipagg POST request.
9
+ # @return [Hash<Symbol, String>] A hash collection containing the XML data parsed.
10
+ def self.ParseNotification(xml)
11
+
12
+ nori = Nori.new(:convert_tags_to => lambda { |tag| PostNotification.to_underscore(tag).to_sym })
13
+ xml_hash = nori.parse(CGI::unescapeHTML(xml))
14
+
15
+ return xml_hash
16
+ end
17
+
18
+ # Converts a string in Camel Case format to lower case with underscore.
19
+ #
20
+ # @param Example: 'StatusNotification' outputs 'status_notification'
21
+ # @returns [String] lower case string separated with underscore
22
+ def self.to_underscore(camel_case_string)
23
+ return camel_case_string.gsub(/::/, '/').
24
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
25
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
26
+ tr("-", "_").
27
+ downcase
28
+ end
29
+ end
@@ -0,0 +1,45 @@
1
+ class TransactionReportFile
2
+ def TransactionReportFileParser(file_to_parse)
3
+ response = {}
4
+ response['CreditCardTransaction'] = []
5
+ response['OnlineDebitTransaction'] = []
6
+ response['BoletoTransaction'] = []
7
+
8
+ header_parser = HeaderParser.new
9
+ credit_card_parser = CreditCardTransactionParser.new
10
+ boleto_parser = BoletoTransactionParser.new
11
+ online_debit_parser = OnlineDebitTransactionParser.new
12
+ trailer_parser = TrailerParser.new
13
+
14
+ begin
15
+ response_splited = file_to_parse.split("\n")
16
+
17
+ response_splited.each do |item|
18
+
19
+ to_parse_item = item.split(',')
20
+ if to_parse_item[0] == '01'
21
+ response['Header'] = header_parser.Parse(to_parse_item)
22
+ end
23
+
24
+ if to_parse_item[0] == '20'
25
+ response['CreditCardTransaction'] << credit_card_parser.Parse(to_parse_item)
26
+ end
27
+
28
+ if to_parse_item[0] == '40'
29
+ response['OnlineDebitTransaction'] << online_debit_parser.Parse(to_parse_item)
30
+ end
31
+
32
+ if to_parse_item[0] == '30'
33
+ response['BoletoTransaction'] << boleto_parser.Parse(to_parse_item)
34
+ end
35
+
36
+ if to_parse_item[0] == '99'
37
+ response['Trailer'] = trailer_parser.Parse(to_parse_item)
38
+ end
39
+ end
40
+ rescue Exception=>err
41
+ return err
42
+ end
43
+ return response
44
+ end
45
+ end
@@ -0,0 +1,70 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'json'
5
+ require 'rest-client'
6
+ require 'nori'
7
+ require 'rspec'
8
+ require 'rexml/document'
9
+
10
+ require_relative 'mundipagg/address'
11
+ require_relative 'mundipagg/Address/billing_address'
12
+ require_relative 'mundipagg/Address/buyer_address'
13
+ require_relative 'mundipagg/Address/delivery_address'
14
+
15
+ require_relative 'mundipagg/AntiFraud/anti_fraud_analysis_result'
16
+ require_relative 'mundipagg/AntiFraud/query_sale_anti_fraud_analysis_data'
17
+ require_relative 'mundipagg/AntiFraud/query_sale_anti_fraud_analysis_history_data'
18
+
19
+ require_relative 'mundipagg/BoletoTransaction/boleto_transaction'
20
+ require_relative 'mundipagg/BoletoTransaction/boleto_transaction_data'
21
+ require_relative 'mundipagg/BoletoTransaction/boleto_transaction_options'
22
+ require_relative 'mundipagg/BoletoTransaction/boleto_transaction_result'
23
+ require_relative 'mundipagg/BoletoTransaction/boleto_transaction_report_file'
24
+
25
+ require_relative 'mundipagg/CreditCardTransaction/credit_card'
26
+ require_relative 'mundipagg/CreditCardTransaction/credit_card_transaction'
27
+ require_relative 'mundipagg/CreditCardTransaction/credit_card_transaction_data'
28
+ require_relative 'mundipagg/CreditCardTransaction/credit_card_transaction_options'
29
+ require_relative 'mundipagg/CreditCardTransaction/manage_credit_card_transaction'
30
+ require_relative 'mundipagg/CreditCardTransaction/retry_sale_credit_card_transaction'
31
+ require_relative 'mundipagg/CreditCardTransaction/credit_card_transaction_report_file'
32
+
33
+ require_relative 'mundipagg/InstantBuy/credit_card_data'
34
+ require_relative 'mundipagg/InstantBuy/get_instant_buy_data_response'
35
+
36
+ require_relative 'mundipagg/Merchant/merchant'
37
+
38
+ require_relative 'mundipagg/Order/order'
39
+ require_relative 'mundipagg/Order/order_transaction_report_file'
40
+
41
+ require_relative 'mundipagg/OnlineDebit/online_debit_transaction_report_file'
42
+
43
+ require_relative 'mundipagg/Parsers/boleto_transaction_parser'
44
+ require_relative 'mundipagg/Parsers/credit_card_transaction_parser'
45
+ require_relative 'mundipagg/Parsers/online_debit_transaction_parser'
46
+ require_relative 'mundipagg/Parsers/header_parser'
47
+ require_relative 'mundipagg/Parsers/trailer_parser'
48
+
49
+ require_relative 'mundipagg/Person/buyer'
50
+ require_relative 'mundipagg/Person/person'
51
+
52
+ require_relative 'mundipagg/Recurrency/recurrency'
53
+
54
+ require_relative 'mundipagg/Sale/create_sale_request'
55
+ require_relative 'mundipagg/Sale/manage_sale_request'
56
+ require_relative 'mundipagg/Sale/query_sale_request'
57
+ require_relative 'mundipagg/Sale/request_data'
58
+ require_relative 'mundipagg/Sale/retry_sale_options'
59
+ require_relative 'mundipagg/Sale/retry_sale_request'
60
+ require_relative 'mundipagg/Sale/sale_data'
61
+
62
+ require_relative 'mundipagg/ShoppingCart/shopping_cart'
63
+ require_relative 'mundipagg/ShoppingCart/shopping_cart_item'
64
+
65
+ require_relative 'mundipagg/SalesOption'
66
+ require_relative 'mundipagg/post_notification'
67
+ require_relative 'mundipagg/MundipaggApi'
68
+ require_relative 'mundipagg/header'
69
+ require_relative 'mundipagg/Trailer'
70
+ require_relative 'mundipagg/transaction_report_file'
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'mundipagg_api'
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.0' # 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.required_ruby_version = '>= 2.1.7'
17
+ s.license = 'Apache 2.0'
18
+ end
@@ -0,0 +1,521 @@
1
+ require_relative '../../lib/mundipagg_api'
2
+ require_relative 'test_helper'
3
+
4
+ merchant_key = '8A2DD57F-1ED9-4153-B4CE-69683EFADAD5'
5
+ gateway = MundipaggApi.new(:production, merchant_key)
6
+
7
+ RSpec.describe MundipaggApi 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.InstantBuyerKey = '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
+ createSaleRequest.Buyer.Birthdate = Date.new(1990, 3, 3).strftime("%Y-%m-%dT%H:%M:%S")
177
+ createSaleRequest.Buyer.DocumentNumber = '12345678901'
178
+ createSaleRequest.Buyer.DocumentType = 'CPF'
179
+ createSaleRequest.Buyer.Email = 'someone@example.com'
180
+ createSaleRequest.Buyer.EmailType = 'Personal'
181
+ createSaleRequest.Buyer.FacebookId = ''
182
+ createSaleRequest.Buyer.Gender = 'M'
183
+ createSaleRequest.Buyer.HomePhone = '2112345678'
184
+ createSaleRequest.Buyer.MobilePhone = '21987654321'
185
+ createSaleRequest.Buyer.Name = 'Someone'
186
+ createSaleRequest.Buyer.PersonType = 'Person'
187
+ createSaleRequest.Buyer.TwitterId = ''
188
+ createSaleRequest.Buyer.WorkPhone = '2178563412'
189
+ createSaleRequest.Buyer.BuyerCategory = 'Normal'
190
+ createSaleRequest.Buyer.BuyerKey = '00000000-0000-0000-0000-000000000000'
191
+ createSaleRequest.Buyer.BuyerReference = 'RubyBuyer#JohnConnor'
192
+ createSaleRequest.Buyer.CreateDateInMerchant = Date.new(2014, 4, 15).strftime("%Y-%m-%dT%H:%M:%S")
193
+ createSaleRequest.Buyer.LastBuyerUpdateInMerchant = Date.new(2014, 4, 15).strftime("%Y-%m-%dT%H:%M:%S")
194
+ createSaleRequest.Buyer.AddressCollection << buyerAddressItem
195
+ createSaleRequest.Merchant.MerchantReference = 'Nome da Loja'
196
+ createSaleRequest.Options.AntiFraudServiceCode = 0
197
+ createSaleRequest.Options.CurrencyIso = 'BRL'
198
+ createSaleRequest.Options.IsAntiFraudEnabled = false
199
+ createSaleRequest.Options.Retries = 3
200
+ createSaleRequest.Order.OrderReference = 'RubySDK-TestOrder'
201
+ createSaleRequest.RequestData.EcommerceCategory = 'B2B'
202
+ createSaleRequest.RequestData.IpAddress = '127.0.0.1'
203
+ createSaleRequest.RequestData.Origin = ''
204
+ createSaleRequest.RequestData.SessionId = ''
205
+ createSaleRequest.BoletoTransactionCollection << boletoTransactionItem
206
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
207
+
208
+ response = gateway.CreateSale(createSaleRequest)
209
+
210
+ expect(response[:ErrorReport]).to eq nil
211
+ end
212
+
213
+ it 'should consult the order with order key' do
214
+ querySaleRequest = QuerySaleRequest.new
215
+ createSaleRequest = CreateSaleRequest.new
216
+
217
+ boletoTransaction = BoletoTransaction.new
218
+ boletoTransaction.AmountInCents = 100
219
+ boletoTransaction.BankNumber = '237'
220
+ boletoTransaction.DocumentNumber = '12345678901'
221
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
222
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
223
+ boletoTransaction.Options.CurrencyIso = 'BRL'
224
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
225
+
226
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
227
+
228
+ boleto_response = gateway.CreateSale(createSaleRequest)
229
+
230
+ querySaleRequest.OrderKey = boleto_response['OrderResult']['OrderKey']
231
+ responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)
232
+
233
+ orderKey = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderKey"]
234
+
235
+ expect(orderKey).to eq querySaleRequest.OrderKey
236
+ end
237
+
238
+ it 'should consult the order with order reference' do
239
+ querySaleRequest = QuerySaleRequest.new
240
+ createSaleRequest = CreateSaleRequest.new
241
+
242
+ boletoTransaction = BoletoTransaction.new
243
+ boletoTransaction.AmountInCents = 100
244
+ boletoTransaction.BankNumber = '237'
245
+ boletoTransaction.DocumentNumber = '12345678901'
246
+ boletoTransaction.Instructions = 'Pagar antes do vencimento'
247
+ boletoTransaction.TransactionReference = 'BoletoTest#Ruby01'
248
+ boletoTransaction.Options.CurrencyIso = 'BRL'
249
+ boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
250
+
251
+ createSaleRequest.Order.OrderReference = 'RubyOrderReferenceUnitTest'
252
+ createSaleRequest.BoletoTransactionCollection << boletoTransaction
253
+
254
+ boleto_response = gateway.CreateSale(createSaleRequest)
255
+
256
+ querySaleRequest.OrderReference = boleto_response['OrderResult']['OrderReference']
257
+ responseQuery = gateway.Query(QuerySaleRequest.QuerySaleRequestEnum[:OrderReference], querySaleRequest.OrderReference)
258
+
259
+ orderReference = responseQuery["SaleDataCollection"][0]["OrderData"]["OrderReference"]
260
+
261
+ expect(orderReference).to eq querySaleRequest.OrderReference
262
+ end
263
+
264
+ it 'should do a retry method' do
265
+ retrySaleRequest = RetrySaleRequest.new
266
+ retrySaleCreditCardTransactionItem = RetrySaleCreditCardTransaction.new
267
+
268
+ createSaleRequest = CreateSaleRequest.new
269
+ creditCardTransactionItem = CreditCardTransaction.new
270
+ creditCardTransactionItem.AmountInCents = 100
271
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
272
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
273
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
274
+ creditCardTransactionItem.CreditCard.ExpYear = 19
275
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
276
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
277
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
278
+ creditCardTransactionItem.InstallmentCount = 1
279
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
280
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
281
+ creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
282
+
283
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
284
+ createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
285
+
286
+ # cria o pedido que sera usado para retentativa
287
+ responseCreate = gateway.CreateSale(createSaleRequest)
288
+
289
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
290
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
291
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
292
+
293
+ # monta o objeto de retentativa
294
+ retrySaleCreditCardTransactionItem.SecurityCode = '123'
295
+ retrySaleCreditCardTransactionItem.TransactionKey = transactionKey
296
+ retrySaleRequest.OrderKey = orderKey
297
+ retrySaleRequest.RetrySaleCreditCardTransactionCollection << retrySaleCreditCardTransactionItem
298
+
299
+ # faz a requisicao de retentativa
300
+ response = gateway.Retry(retrySaleRequest)
301
+
302
+ # espera que o transaction key seja igual, significa que foi tudo ok no teste
303
+ responseTransactionKey = response['CreditCardTransactionResultCollection'][0]['TransactionKey']
304
+
305
+ expect(responseTransactionKey).to eq transactionKey
306
+
307
+ end
308
+
309
+ it 'should cancel a transaction' do
310
+ createSaleRequest = CreateSaleRequest.new
311
+ creditCardTransactionItem = CreditCardTransaction.new
312
+ creditCardTransactionItem.AmountInCents = 100
313
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
314
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
315
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
316
+ creditCardTransactionItem.CreditCard.ExpYear = 19
317
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
318
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
319
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
320
+ creditCardTransactionItem.InstallmentCount = 1
321
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
322
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
323
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
324
+
325
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
326
+ createSaleRequest.Order.OrderReference = 'RubySDK-CancelTest'
327
+
328
+ # cria o pedido que sera usado para cancelamento
329
+ responseCreate = gateway.CreateSale(createSaleRequest)
330
+
331
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer o cancelamento
332
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
333
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
334
+
335
+ # itens necessarios para cancelamento da transacao de cartao de credito
336
+ cancelCreditCardTransactionItem = ManageCreditCardTransaction.new
337
+ cancelCreditCardTransactionItem.AmountInCents = 100
338
+ cancelCreditCardTransactionItem.TransactionKey = transactionKey
339
+ cancelCreditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
340
+
341
+ # monta o objeto para cancelamento de transacao
342
+ cancelSaleRequest = ManageSaleRequest.new
343
+ cancelSaleRequest.OrderKey = orderKey
344
+ cancelSaleRequest.CreditCardTransactionCollection << cancelCreditCardTransactionItem
345
+
346
+ response = gateway.Cancel(cancelSaleRequest)
347
+
348
+ expect(response[:ErrorReport]).to eq nil
349
+ end
350
+
351
+ it 'should capture a transaction' do
352
+ createSaleRequest = CreateSaleRequest.new
353
+ creditCardTransactionItem = CreditCardTransaction.new
354
+ creditCardTransactionItem.AmountInCents = 100
355
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
356
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
357
+ creditCardTransactionItem.CreditCard.ExpMonth = 10
358
+ creditCardTransactionItem.CreditCard.ExpYear = 19
359
+ creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
360
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
361
+ creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
362
+ creditCardTransactionItem.InstallmentCount = 1
363
+ creditCardTransactionItem.Options.CurrencyIso = 'BRL'
364
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
365
+ creditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
366
+
367
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
368
+ createSaleRequest.Order.OrderReference = 'RubySDK-CaptureTest'
369
+
370
+ # cria o pedido que sera usado para captura
371
+ responseCreate = gateway.CreateSale(createSaleRequest)
372
+
373
+ # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a captura
374
+ orderKey = responseCreate["OrderResult"]["OrderKey"]
375
+ transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
376
+
377
+ # itens necessarios para captura da transacao de cartao de credito
378
+ captureCreditCardTransactionItem = ManageCreditCardTransaction.new
379
+ captureCreditCardTransactionItem.AmountInCents = 100
380
+ captureCreditCardTransactionItem.TransactionKey = transactionKey
381
+ captureCreditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
382
+
383
+ # monta o objeto para cancelamento de transacao
384
+ captureSaleRequest = ManageSaleRequest.new
385
+ captureSaleRequest.OrderKey = orderKey
386
+ captureSaleRequest.CreditCardTransactionCollection << captureCreditCardTransactionItem
387
+
388
+ response = gateway.Capture(captureSaleRequest)
389
+
390
+ # espera que o ErrorReport seja nulo, significa que foi tudo ok na transação
391
+ expect(response['ErrorReport']).to eq nil
392
+ end
393
+
394
+ it 'should do a parse xml to notification interpretation' do
395
+ creditCardTransactionItem = CreditCardTransaction.new
396
+ creditCardTransactionItem.AmountInCents = 100
397
+ creditCardTransactionItem.TransactionReference = 'Ruby PostNotification Test'
398
+ creditCardTransactionItem.InstallmentCount = 1
399
+ creditCardTransactionItem.CreditCardOperation = 'AuthOnly'
400
+ creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
401
+ creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
402
+ creditCardTransactionItem.CreditCard.HolderName = 'Bruce Wayne'
403
+ creditCardTransactionItem.CreditCard.SecurityCode = '123'
404
+ creditCardTransactionItem.CreditCard.ExpMonth = 5
405
+ creditCardTransactionItem.CreditCard.ExpYear = 20
406
+ creditCardTransactionItem.Options.PaymentMethodCode = 1
407
+
408
+ createSaleRequest = CreateSaleRequest.new
409
+ createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
410
+
411
+ response_hash = gateway.CreateSale(createSaleRequest)
412
+
413
+ credit_card_result = response_hash['CreditCardTransactionResultCollection'][0]
414
+
415
+ expect(credit_card_result['Success']).to eq true
416
+ expect(credit_card_result['CreditCardOperation']).to eq 'AuthOnly'
417
+ expect(credit_card_result['CreditCardTransactionStatus']).to eq 'AuthorizedPendingCapture'
418
+
419
+ captureCreditCardTransactionItem = ManageCreditCardTransaction.new
420
+ captureCreditCardTransactionItem.AmountInCents = creditCardTransactionItem.AmountInCents
421
+ captureCreditCardTransactionItem.TransactionKey = credit_card_result['TransactionKey']
422
+ captureCreditCardTransactionItem.TransactionReference = creditCardTransactionItem.TransactionReference
423
+
424
+ captureSale = ManageSaleRequest.new
425
+ captureSale.OrderKey = response_hash['OrderResult']['OrderKey']
426
+ captureSale.CreditCardTransactionCollection << captureCreditCardTransactionItem
427
+
428
+ captureResponse = gateway.Capture(captureSale)
429
+
430
+ expect(captureResponse['ErrorReport']).to eq nil
431
+
432
+
433
+ xml = TestHelper.CreateFakePostNotification(response_hash, captureResponse)
434
+
435
+ response = gateway.ParseXmlToNotification(xml)
436
+
437
+ expect(response.nil?).to eq false
438
+ end
439
+
440
+ it 'should do a parse on online debit xml' do
441
+ xml = '<StatusNotification xmlns="http://schemas.datacontract.org/2004/07/MundiPagg.NotificationService.DataContract"
442
+ xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
443
+ i:schemaLocation="http://schemas.datacontract.org/2004/07/MundiPagg.NotificationService.DataContract StatusNotificationXmlSchema.xsd">
444
+ <AmountInCents>500</AmountInCents>
445
+ <AmountPaidInCents>0</AmountPaidInCents>
446
+ <BoletoTransaction>
447
+ <AmountInCents>500</AmountInCents>
448
+ <AmountPaidInCents>0</AmountPaidInCents>
449
+ <BoletoExpirationDate>2013-02-08T00:00:00</BoletoExpirationDate>
450
+ <NossoNumero>0123456789</NossoNumero>
451
+ <StatusChangedDate>2012-11-06T08:55:49.753</StatusChangedDate>
452
+ <TransactionKey>4111D523-9A83-4BE3-94D2-160F1BC9C4BD</TransactionKey>
453
+ <TransactionReference>B2E32108</TransactionReference>
454
+ <PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
455
+ <BoletoTransactionStatus>Paid</BoletoTransactionStatus>
456
+ </BoletoTransaction>
457
+ <CreditCardTransaction>
458
+ <Acquirer>Simulator</Acquirer>
459
+ <AmountInCents>2000</AmountInCents>
460
+ <AuthorizedAmountInCents>2000</AuthorizedAmountInCents>
461
+ <CapturedAmountInCents>2000</CapturedAmountInCents>
462
+ <CreditCardBrand>Visa</CreditCardBrand>
463
+ <RefundedAmountInCents i:nil="true"/>
464
+ <StatusChangedDate>2012-11-06T10:52:55.93</StatusChangedDate>
465
+ <TransactionIdentifier>123456</TransactionIdentifier>
466
+ <TransactionKey>351FC96A-7F42-4269-AF3C-1E3C179C1CD0</TransactionKey>
467
+ <TransactionReference>24de0432</TransactionReference>
468
+ <UniqueSequentialNumber>123456</UniqueSequentialNumber>
469
+ <VoidedAmountInCents i:nil="true"/>
470
+ <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
471
+ <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
472
+ </CreditCardTransaction>
473
+
474
+ <OnlineDebitTransaction>
475
+ <AmountInCents>100</AmountInCents>
476
+ <AmountPaidInCents>0</AmountPaidInCents>
477
+ <StatusChangedDate>2013-06-27T19:46:46.87</StatusChangedDate>
478
+ <TransactionKey>fb3f158a-0309-4ae3-b8ef-3c5ac2d603d2</TransactionKey>
479
+ <TransactionReference>30bfee13-c908-4e3b-9f70-1f84dbe79fbf</TransactionReference>
480
+ <PreviousOnlineDebitTransactionStatus>OpenedPendingPayment</PreviousOnlineDebitTransactionStatus>
481
+ <OnlineDebitTransactionStatus>NotPaid</OnlineDebitTransactionStatus>
482
+ </OnlineDebitTransaction>
483
+
484
+ <MerchantKey>B1B1092C-8681-40C2-A734-500F22683D9B</MerchantKey>
485
+ <OrderKey>18471F05-9F6D-4497-9C24-D60D5BBB6BBE</OrderKey>
486
+ <OrderReference>64a85875</OrderReference>
487
+ <OrderStatus>Paid</OrderStatus>
488
+ </StatusNotification>'
489
+
490
+ response = gateway.ParseXmlToNotification(xml)
491
+
492
+ expect(response.nil?).to eq false
493
+ end
494
+
495
+ it 'should bring the transaction report file' do
496
+ date = Date.new(2015, 9, 15)
497
+ result = gateway.TransactionReportFile(date)
498
+ split_commas = result.split(',')
499
+
500
+ expect(split_commas[1]).to eq '20150915'
501
+ end
502
+
503
+ it 'should parse the transaction report file received' do
504
+ date = Date.new(2015, 9, 15)
505
+ request_to_parse = gateway.TransactionReportFile(date)
506
+ result = gateway.TransactionReportFileParser(request_to_parse)
507
+
508
+ expect(result['Header'].TransactionProcessedDate).to eq '20150915'
509
+ end
510
+
511
+ it 'should save the transaction report file at selected path' do
512
+ date = Date.new(2015, 9, 15)
513
+ file_name = 'Teste'
514
+ file_path = "C:\\Users\\Public\\Documents\\"
515
+ gateway.TransactionReportFileDownloader(date, file_name, file_path)
516
+
517
+ file_path = file_path + file_name + '.txt'
518
+ file_exist = File.exist?(file_path)
519
+ expect(file_exist).to eq true
520
+ end
521
+ end