mundipagg_sdk 1.0.2 → 1.0.3

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +61 -61
  3. data/lib/gateway/Address/billing_address.rb +32 -32
  4. data/lib/gateway/Address/buyer_address.rb +36 -36
  5. data/lib/gateway/Address/delivery_address.rb +32 -32
  6. data/lib/gateway/AntiFraud/anti_fraud_analysis_result.rb +47 -47
  7. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_data.rb +51 -51
  8. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data.rb +41 -41
  9. data/lib/gateway/BaseRequest.rb +10 -10
  10. data/lib/gateway/BaseResponse.rb +17 -17
  11. data/lib/gateway/BoletoTransaction/boleto_transaction.rb +43 -43
  12. data/lib/gateway/BoletoTransaction/boleto_transaction_data.rb +43 -43
  13. data/lib/gateway/BoletoTransaction/boleto_transaction_options.rb +14 -14
  14. data/lib/gateway/BoletoTransaction/boleto_transaction_report_file.rb +19 -19
  15. data/lib/gateway/BoletoTransaction/boleto_transaction_result.rb +34 -34
  16. data/lib/gateway/CreditCardTransaction/credit_card.rb +29 -29
  17. data/lib/gateway/CreditCardTransaction/credit_card_transaction.rb +31 -31
  18. data/lib/gateway/CreditCardTransaction/credit_card_transaction_data.rb +103 -103
  19. data/lib/gateway/CreditCardTransaction/credit_card_transaction_options.rb +26 -26
  20. data/lib/gateway/CreditCardTransaction/credit_card_transaction_report_file.rb +28 -28
  21. data/lib/gateway/CreditCardTransaction/manage_credit_card_transaction.rb +11 -11
  22. data/lib/gateway/CreditCardTransaction/retry_sale_credit_card_transaction.rb +12 -12
  23. data/lib/gateway/ErrorItem.rb +17 -17
  24. data/lib/gateway/ErrorReport.rb +18 -18
  25. data/lib/gateway/Gateway.rb +441 -444
  26. data/lib/gateway/InstantBuy/credit_card_data.rb +40 -40
  27. data/lib/gateway/InstantBuy/get_instant_buy_data_response.rb +17 -17
  28. data/lib/gateway/Merchant/merchant.rb +10 -10
  29. data/lib/gateway/OnlineDebit/online_debit_transaction_report_file.rb +17 -17
  30. data/lib/gateway/Order/order.rb +10 -10
  31. data/lib/gateway/Order/order_transaction_report_file.rb +5 -5
  32. data/lib/gateway/Parsers/boleto_transaction_parser.rb +30 -30
  33. data/lib/gateway/Parsers/credit_card_transaction_parser.rb +39 -39
  34. data/lib/gateway/Parsers/header_parser.rb +13 -13
  35. data/lib/gateway/Parsers/online_debit_transaction_parser.rb +29 -29
  36. data/lib/gateway/Parsers/trailer_parser.rb +14 -14
  37. data/lib/gateway/Person/buyer.rb +32 -32
  38. data/lib/gateway/Person/person.rb +46 -46
  39. data/lib/gateway/Recurrency/recurrency.rb +22 -22
  40. data/lib/gateway/Sale/create_sale_request.rb +35 -35
  41. data/lib/gateway/Sale/create_sale_response.rb +24 -24
  42. data/lib/gateway/Sale/manage_sale_request.rb +16 -16
  43. data/lib/gateway/Sale/manage_sale_response.rb +14 -14
  44. data/lib/gateway/Sale/query_sale_request.rb +35 -35
  45. data/lib/gateway/Sale/query_sale_response.rb +17 -17
  46. data/lib/gateway/Sale/request_data.rb +19 -19
  47. data/lib/gateway/Sale/retry_sale_options.rb +13 -13
  48. data/lib/gateway/Sale/retry_sale_request.rb +21 -21
  49. data/lib/gateway/Sale/retry_sale_response.rb +13 -13
  50. data/lib/gateway/Sale/sale_data.rb +32 -32
  51. data/lib/gateway/Sale/sale_order_data.rb +16 -16
  52. data/lib/gateway/SalesOption.rb +17 -17
  53. data/lib/gateway/ShoppingCart/shopping_cart.rb +25 -25
  54. data/lib/gateway/ShoppingCart/shopping_cart_item.rb +22 -22
  55. data/lib/gateway/Trailer.rb +5 -5
  56. data/lib/gateway/address.rb +24 -24
  57. data/lib/gateway/header.rb +4 -4
  58. data/lib/gateway/post_notification.rb +28 -28
  59. data/lib/gateway/transaction_report_file.rb +44 -44
  60. data/lib/mundipagg_sdk.rb +70 -70
  61. data/mundipagg_sdk.gemspec +18 -18
  62. data/spec/integration/gateway_spec.rb +733 -651
  63. data/spec/integration/test_helper.rb +68 -68
  64. metadata +2 -2
@@ -1,5 +1,5 @@
1
- class Header
2
- attr_accessor :TransactionProcessedDate
3
- attr_accessor :ReportFileCreateDate
4
- attr_accessor :Version
1
+ class Header
2
+ attr_accessor :TransactionProcessedDate
3
+ attr_accessor :ReportFileCreateDate
4
+ attr_accessor :Version
5
5
  end
@@ -1,29 +1,29 @@
1
- require 'nori'
2
-
3
- # Class who handles Gateway post notification XML
4
- class PostNotification
5
-
6
- # This method parse the Xml sent by Gateway when notify a change in a transaction.
7
- #
8
- # @param request [String] XML received in the Gateway 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
1
+ require 'nori'
2
+
3
+ # Class who handles Gateway post notification XML
4
+ class PostNotification
5
+
6
+ # This method parse the Xml sent by Gateway when notify a change in a transaction.
7
+ #
8
+ # @param request [String] XML received in the Gateway 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
29
  end
@@ -1,45 +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
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
45
  end
@@ -1,70 +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 'gateway/address'
11
- require_relative 'gateway/Address/billing_address'
12
- require_relative 'gateway/Address/buyer_address'
13
- require_relative 'gateway/Address/delivery_address'
14
-
15
- require_relative 'gateway/AntiFraud/anti_fraud_analysis_result'
16
- require_relative 'gateway/AntiFraud/query_sale_anti_fraud_analysis_data'
17
- require_relative 'gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data'
18
-
19
- require_relative 'gateway/BoletoTransaction/boleto_transaction'
20
- require_relative 'gateway/BoletoTransaction/boleto_transaction_data'
21
- require_relative 'gateway/BoletoTransaction/boleto_transaction_options'
22
- require_relative 'gateway/BoletoTransaction/boleto_transaction_result'
23
- require_relative 'gateway/BoletoTransaction/boleto_transaction_report_file'
24
-
25
- require_relative 'gateway/CreditCardTransaction/credit_card'
26
- require_relative 'gateway/CreditCardTransaction/credit_card_transaction'
27
- require_relative 'gateway/CreditCardTransaction/credit_card_transaction_data'
28
- require_relative 'gateway/CreditCardTransaction/credit_card_transaction_options'
29
- require_relative 'gateway/CreditCardTransaction/manage_credit_card_transaction'
30
- require_relative 'gateway/CreditCardTransaction/retry_sale_credit_card_transaction'
31
- require_relative 'gateway/CreditCardTransaction/credit_card_transaction_report_file'
32
-
33
- require_relative 'gateway/InstantBuy/credit_card_data'
34
- require_relative 'gateway/InstantBuy/get_instant_buy_data_response'
35
-
36
- require_relative 'gateway/Merchant/merchant'
37
-
38
- require_relative 'gateway/Order/order'
39
- require_relative 'gateway/Order/order_transaction_report_file'
40
-
41
- require_relative 'gateway/OnlineDebit/online_debit_transaction_report_file'
42
-
43
- require_relative 'gateway/Parsers/boleto_transaction_parser'
44
- require_relative 'gateway/Parsers/credit_card_transaction_parser'
45
- require_relative 'gateway/Parsers/online_debit_transaction_parser'
46
- require_relative 'gateway/Parsers/header_parser'
47
- require_relative 'gateway/Parsers/trailer_parser'
48
-
49
- require_relative 'gateway/Person/buyer'
50
- require_relative 'gateway/Person/person'
51
-
52
- require_relative 'gateway/Recurrency/recurrency'
53
-
54
- require_relative 'gateway/Sale/create_sale_request'
55
- require_relative 'gateway/Sale/manage_sale_request'
56
- require_relative 'gateway/Sale/query_sale_request'
57
- require_relative 'gateway/Sale/request_data'
58
- require_relative 'gateway/Sale/retry_sale_options'
59
- require_relative 'gateway/Sale/retry_sale_request'
60
- require_relative 'gateway/Sale/sale_data'
61
-
62
- require_relative 'gateway/ShoppingCart/shopping_cart'
63
- require_relative 'gateway/ShoppingCart/shopping_cart_item'
64
-
65
- require_relative 'gateway/SalesOption'
66
- require_relative 'gateway/post_notification'
67
- require_relative 'gateway/Gateway'
68
- require_relative 'gateway/header'
69
- require_relative 'gateway/Trailer'
70
- require_relative 'gateway/transaction_report_file'
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 'gateway/address'
11
+ require_relative 'gateway/Address/billing_address'
12
+ require_relative 'gateway/Address/buyer_address'
13
+ require_relative 'gateway/Address/delivery_address'
14
+
15
+ require_relative 'gateway/AntiFraud/anti_fraud_analysis_result'
16
+ require_relative 'gateway/AntiFraud/query_sale_anti_fraud_analysis_data'
17
+ require_relative 'gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data'
18
+
19
+ require_relative 'gateway/BoletoTransaction/boleto_transaction'
20
+ require_relative 'gateway/BoletoTransaction/boleto_transaction_data'
21
+ require_relative 'gateway/BoletoTransaction/boleto_transaction_options'
22
+ require_relative 'gateway/BoletoTransaction/boleto_transaction_result'
23
+ require_relative 'gateway/BoletoTransaction/boleto_transaction_report_file'
24
+
25
+ require_relative 'gateway/CreditCardTransaction/credit_card'
26
+ require_relative 'gateway/CreditCardTransaction/credit_card_transaction'
27
+ require_relative 'gateway/CreditCardTransaction/credit_card_transaction_data'
28
+ require_relative 'gateway/CreditCardTransaction/credit_card_transaction_options'
29
+ require_relative 'gateway/CreditCardTransaction/manage_credit_card_transaction'
30
+ require_relative 'gateway/CreditCardTransaction/retry_sale_credit_card_transaction'
31
+ require_relative 'gateway/CreditCardTransaction/credit_card_transaction_report_file'
32
+
33
+ require_relative 'gateway/InstantBuy/credit_card_data'
34
+ require_relative 'gateway/InstantBuy/get_instant_buy_data_response'
35
+
36
+ require_relative 'gateway/Merchant/merchant'
37
+
38
+ require_relative 'gateway/Order/order'
39
+ require_relative 'gateway/Order/order_transaction_report_file'
40
+
41
+ require_relative 'gateway/OnlineDebit/online_debit_transaction_report_file'
42
+
43
+ require_relative 'gateway/Parsers/boleto_transaction_parser'
44
+ require_relative 'gateway/Parsers/credit_card_transaction_parser'
45
+ require_relative 'gateway/Parsers/online_debit_transaction_parser'
46
+ require_relative 'gateway/Parsers/header_parser'
47
+ require_relative 'gateway/Parsers/trailer_parser'
48
+
49
+ require_relative 'gateway/Person/buyer'
50
+ require_relative 'gateway/Person/person'
51
+
52
+ require_relative 'gateway/Recurrency/recurrency'
53
+
54
+ require_relative 'gateway/Sale/create_sale_request'
55
+ require_relative 'gateway/Sale/manage_sale_request'
56
+ require_relative 'gateway/Sale/query_sale_request'
57
+ require_relative 'gateway/Sale/request_data'
58
+ require_relative 'gateway/Sale/retry_sale_options'
59
+ require_relative 'gateway/Sale/retry_sale_request'
60
+ require_relative 'gateway/Sale/sale_data'
61
+
62
+ require_relative 'gateway/ShoppingCart/shopping_cart'
63
+ require_relative 'gateway/ShoppingCart/shopping_cart_item'
64
+
65
+ require_relative 'gateway/SalesOption'
66
+ require_relative 'gateway/post_notification'
67
+ require_relative 'gateway/Gateway'
68
+ require_relative 'gateway/header'
69
+ require_relative 'gateway/Trailer'
70
+ require_relative 'gateway/transaction_report_file'
@@ -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.2' # 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'
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
19
  end
@@ -1,651 +1,733 @@
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
- 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 do a retry method with only order key' 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 = 22
320
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
321
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
322
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
323
- creditCardTransactionItem.TransactionReference = 'RubySDK-RetryTest'
324
-
325
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
326
- createSaleRequest.Order.OrderReference = 'RubySDK-RetryTest'
327
-
328
- # cria o pedido que sera usado para retentativa
329
- responseCreate = gateway.CreateSale(createSaleRequest)
330
-
331
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a retentativa
332
- orderKey = responseCreate["OrderResult"]["OrderKey"]
333
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
334
-
335
- retrySaleRequest = RetrySaleRequest.new
336
-
337
- # monta o objeto de retentativa
338
- retrySaleRequest.OrderKey = orderKey
339
-
340
- # faz a requisicao de retentativa
341
- response = gateway.Retry(retrySaleRequest)
342
-
343
- expect(response['ErrorReport']).to eq nil
344
-
345
- end
346
-
347
- it 'should cancel a transaction' do
348
- createSaleRequest = CreateSaleRequest.new
349
- creditCardTransactionItem = CreditCardTransaction.new
350
- creditCardTransactionItem.AmountInCents = 100
351
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
352
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
353
- creditCardTransactionItem.CreditCard.ExpMonth = 10
354
- creditCardTransactionItem.CreditCard.ExpYear = 19
355
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
356
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
357
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
358
- creditCardTransactionItem.InstallmentCount = 1
359
- creditCardTransactionItem.Options.CurrencyIso = 'BRL'
360
- creditCardTransactionItem.Options.PaymentMethodCode = 1
361
- creditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
362
-
363
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
364
- createSaleRequest.Order.OrderReference = 'RubySDK-CancelTest'
365
-
366
- # cria o pedido que sera usado para cancelamento
367
- responseCreate = gateway.CreateSale(createSaleRequest)
368
-
369
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer o cancelamento
370
- orderKey = responseCreate["OrderResult"]["OrderKey"]
371
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
372
-
373
- # itens necessarios para cancelamento da transacao de cartao de credito
374
- cancelCreditCardTransactionItem = ManageCreditCardTransaction.new
375
- cancelCreditCardTransactionItem.AmountInCents = 100
376
- cancelCreditCardTransactionItem.TransactionKey = transactionKey
377
- cancelCreditCardTransactionItem.TransactionReference = 'RubySDK-CancelTest'
378
-
379
- # monta o objeto para cancelamento de transacao
380
- cancelSaleRequest = ManageSaleRequest.new
381
- cancelSaleRequest.OrderKey = orderKey
382
- cancelSaleRequest.CreditCardTransactionCollection << cancelCreditCardTransactionItem
383
-
384
- response = gateway.Cancel(cancelSaleRequest)
385
-
386
- expect(response[:ErrorReport]).to eq nil
387
- end
388
-
389
- it 'should capture a transaction' do
390
- createSaleRequest = CreateSaleRequest.new
391
- creditCardTransactionItem = CreditCardTransaction.new
392
- creditCardTransactionItem.AmountInCents = 100
393
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
394
- creditCardTransactionItem.CreditCard.CreditCardNumber = '41111111111111'
395
- creditCardTransactionItem.CreditCard.ExpMonth = 10
396
- creditCardTransactionItem.CreditCard.ExpYear = 19
397
- creditCardTransactionItem.CreditCard.HolderName = 'Maria do Carmo'
398
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
399
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
400
- creditCardTransactionItem.InstallmentCount = 1
401
- creditCardTransactionItem.Options.CurrencyIso = 'BRL'
402
- creditCardTransactionItem.Options.PaymentMethodCode = 1
403
- creditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
404
-
405
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
406
- createSaleRequest.Order.OrderReference = 'RubySDK-CaptureTest'
407
-
408
- # cria o pedido que sera usado para captura
409
- responseCreate = gateway.CreateSale(createSaleRequest)
410
-
411
- # pega o orderkey e o transaction key da resposta que sao necessarios para fazer a captura
412
- orderKey = responseCreate["OrderResult"]["OrderKey"]
413
- transactionKey = responseCreate['CreditCardTransactionResultCollection'][0]['TransactionKey']
414
-
415
- # itens necessarios para captura da transacao de cartao de credito
416
- captureCreditCardTransactionItem = ManageCreditCardTransaction.new
417
- captureCreditCardTransactionItem.AmountInCents = 100
418
- captureCreditCardTransactionItem.TransactionKey = transactionKey
419
- captureCreditCardTransactionItem.TransactionReference = 'RubySDK-CaptureTest'
420
-
421
- # monta o objeto para cancelamento de transacao
422
- captureSaleRequest = ManageSaleRequest.new
423
- captureSaleRequest.OrderKey = orderKey
424
- captureSaleRequest.CreditCardTransactionCollection << captureCreditCardTransactionItem
425
-
426
- response = gateway.Capture(captureSaleRequest)
427
-
428
- # espera que o ErrorReport seja nulo, significa que foi tudo ok na transação
429
- expect(response['ErrorReport']).to eq nil
430
- end
431
-
432
- it 'should do a parse xml to notification interpretation' do
433
- creditCardTransactionItem = CreditCardTransaction.new
434
- creditCardTransactionItem.AmountInCents = 100
435
- creditCardTransactionItem.TransactionReference = 'Ruby PostNotification Test'
436
- creditCardTransactionItem.InstallmentCount = 1
437
- creditCardTransactionItem.CreditCardOperation = 'AuthAndCapture'
438
- creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
439
- creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
440
- creditCardTransactionItem.CreditCard.HolderName = 'Bruce Wayne'
441
- creditCardTransactionItem.CreditCard.SecurityCode = '123'
442
- creditCardTransactionItem.CreditCard.ExpMonth = 5
443
- creditCardTransactionItem.CreditCard.ExpYear = 20
444
- creditCardTransactionItem.Options.PaymentMethodCode = 1
445
-
446
- createSaleRequest = CreateSaleRequest.new
447
- createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
448
-
449
- response_hash = gateway.CreateSale(createSaleRequest)
450
-
451
- credit_card_result = response_hash['CreditCardTransactionResultCollection'][0]
452
-
453
- expect(credit_card_result['Success']).to eq true
454
- # expect(credit_card_result['CreditCardOperation']).to eq 'AuthOnly'
455
- # expect(credit_card_result['CreditCardTransactionStatus']).to eq 'AuthorizedPendingCapture'
456
-
457
- captureCreditCardTransactionItem = ManageCreditCardTransaction.new
458
- captureCreditCardTransactionItem.AmountInCents = creditCardTransactionItem.AmountInCents
459
- captureCreditCardTransactionItem.TransactionKey = credit_card_result['TransactionKey']
460
- captureCreditCardTransactionItem.TransactionReference = creditCardTransactionItem.TransactionReference
461
-
462
- captureSale = ManageSaleRequest.new
463
- captureSale.OrderKey = response_hash['OrderResult']['OrderKey']
464
- captureSale.CreditCardTransactionCollection << captureCreditCardTransactionItem
465
-
466
- captureResponse = gateway.Capture(captureSale)
467
-
468
- expect(captureResponse['ErrorReport']).to eq nil
469
-
470
-
471
- xml = TestHelper.CreateFakePostNotification(response_hash, captureResponse)
472
-
473
- response = gateway.ParseXmlToNotification(xml)
474
-
475
- expect(response.nil?).to eq false
476
- end
477
-
478
- it 'should do a parse on online debit xml' do
479
- xml = '<StatusNotification xmlns="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract"
480
- xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
481
- i:schemaLocation="http://schemas.datacontract.org/2004/07/Gateway.NotificationService.DataContract StatusNotificationXmlSchema.xsd">
482
- <AmountInCents>500</AmountInCents>
483
- <AmountPaidInCents>0</AmountPaidInCents>
484
- <BoletoTransaction>
485
- <AmountInCents>500</AmountInCents>
486
- <AmountPaidInCents>0</AmountPaidInCents>
487
- <BoletoExpirationDate>2013-02-08T00:00:00</BoletoExpirationDate>
488
- <NossoNumero>0123456789</NossoNumero>
489
- <StatusChangedDate>2012-11-06T08:55:49.753</StatusChangedDate>
490
- <TransactionKey>4111D523-9A83-4BE3-94D2-160F1BC9C4BD</TransactionKey>
491
- <TransactionReference>B2E32108</TransactionReference>
492
- <PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
493
- <BoletoTransactionStatus>Paid</BoletoTransactionStatus>
494
- </BoletoTransaction>
495
- <CreditCardTransaction>
496
- <Acquirer>Simulator</Acquirer>
497
- <AmountInCents>2000</AmountInCents>
498
- <AuthorizedAmountInCents>2000</AuthorizedAmountInCents>
499
- <CapturedAmountInCents>2000</CapturedAmountInCents>
500
- <CreditCardBrand>Visa</CreditCardBrand>
501
- <RefundedAmountInCents i:nil="true"/>
502
- <StatusChangedDate>2012-11-06T10:52:55.93</StatusChangedDate>
503
- <TransactionIdentifier>123456</TransactionIdentifier>
504
- <TransactionKey>351FC96A-7F42-4269-AF3C-1E3C179C1CD0</TransactionKey>
505
- <TransactionReference>24de0432</TransactionReference>
506
- <UniqueSequentialNumber>123456</UniqueSequentialNumber>
507
- <VoidedAmountInCents i:nil="true"/>
508
- <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
509
- <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
510
- </CreditCardTransaction>
511
-
512
- <OnlineDebitTransaction>
513
- <AmountInCents>100</AmountInCents>
514
- <AmountPaidInCents>0</AmountPaidInCents>
515
- <StatusChangedDate>2013-06-27T19:46:46.87</StatusChangedDate>
516
- <TransactionKey>fb3f158a-0309-4ae3-b8ef-3c5ac2d603d2</TransactionKey>
517
- <TransactionReference>30bfee13-c908-4e3b-9f70-1f84dbe79fbf</TransactionReference>
518
- <PreviousOnlineDebitTransactionStatus>OpenedPendingPayment</PreviousOnlineDebitTransactionStatus>
519
- <OnlineDebitTransactionStatus>NotPaid</OnlineDebitTransactionStatus>
520
- </OnlineDebitTransaction>
521
-
522
- <MerchantKey>B1B1092C-8681-40C2-A734-500F22683D9B</MerchantKey>
523
- <OrderKey>18471F05-9F6D-4497-9C24-D60D5BBB6BBE</OrderKey>
524
- <OrderReference>64a85875</OrderReference>
525
- <OrderStatus>Paid</OrderStatus>
526
- </StatusNotification>'
527
-
528
- response = gateway.ParseXmlToNotification(xml)
529
-
530
- expect(response.nil?).to eq false
531
- end
532
-
533
- it 'should bring the transaction report file' do
534
- date = Date.new(2015, 9, 19)
535
- result = gateway.TransactionReportFile(date)
536
- split_commas = result.split(',')
537
-
538
- expect(split_commas[1]).to eq '20150919'
539
- end
540
-
541
- it 'should parse the transaction report file received' do
542
- date = Date.new(2015, 9, 19)
543
- request_to_parse = gateway.TransactionReportFile(date)
544
- result = gateway.TransactionReportFileParser(request_to_parse)
545
-
546
- expect(result['Header'].TransactionProcessedDate).to eq '20150919'
547
- end
548
-
549
- it 'should save the transaction report file at selected path' do
550
- date = Date.new(2015, 9, 19)
551
-
552
- file = Tempfile.new('Test')
553
- gateway.TransactionReportFileDownloader(date, 'Test', file.path)
554
-
555
- file_path = file.path.to_s + 'Test.txt'
556
- file_exist = File.exist?(file_path)
557
-
558
- file.close
559
- file.unlink
560
-
561
- expect(file_exist).to eq true
562
- end
563
-
564
- it 'should consult transaction with instant buy key' do
565
- credit_card_transaction = CreditCardTransaction.new
566
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
567
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
568
- credit_card_transaction.CreditCard.ExpMonth = 10
569
- credit_card_transaction.CreditCard.ExpYear = 2018
570
- credit_card_transaction.CreditCard.SecurityCode = '123'
571
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
572
- credit_card_transaction.AmountInCents = 100
573
-
574
- sale_request = CreateSaleRequest.new
575
- sale_request.CreditCardTransactionCollection << credit_card_transaction
576
-
577
- sale_response = gateway.CreateSale(sale_request)
578
-
579
- expect(sale_response['ErrorReport']).to eq nil
580
-
581
- instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
582
-
583
- response = gateway.InstantBuyKey(instant_buy_key)
584
-
585
- expect(response['ErrorReport']).to eq nil
586
- end
587
-
588
- it 'should consult transaction with buyer key' do
589
-
590
- credit_card_transaction = CreditCardTransaction.new
591
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
592
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
593
- credit_card_transaction.CreditCard.ExpMonth = 10
594
- credit_card_transaction.CreditCard.ExpYear = 2018
595
- credit_card_transaction.CreditCard.SecurityCode = '123'
596
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
597
- credit_card_transaction.AmountInCents = 100
598
-
599
- sale_request = CreateSaleRequest.new
600
- sale_request.Buyer.Name = 'Anakin Skywalker'
601
- sale_request.Buyer.Birthdate = Date.new(1994, 9, 26).strftime("%Y-%m-%dT%H:%M:%S")
602
- sale_request.Buyer.DocumentNumber = '12345678901'
603
- sale_request.Buyer.DocumentType = 'CPF'
604
- sale_request.Buyer.PersonType = 'Person'
605
- sale_request.Buyer.Gender = 'M'
606
- sale_request.CreditCardTransactionCollection << credit_card_transaction
607
-
608
- sale_response = gateway.CreateSale(sale_request)
609
-
610
- expect(sale_response['ErrorReport']).to eq nil
611
-
612
- response = gateway.BuyerKey(sale_response['BuyerKey'])
613
-
614
- expect(response['ErrorReport']).to eq nil
615
- end
616
-
617
- it 'should do a credit card transaction with instant buy key' do
618
- credit_card_transaction = CreditCardTransaction.new
619
- credit_card_transaction.CreditCard.CreditCardNumber = '4111111111111111'
620
- credit_card_transaction.CreditCard.CreditCardBrand = 'Visa'
621
- credit_card_transaction.CreditCard.ExpMonth = 10
622
- credit_card_transaction.CreditCard.ExpYear = 2018
623
- credit_card_transaction.CreditCard.SecurityCode = '123'
624
- credit_card_transaction.CreditCard.HolderName = 'Luke Skywalker'
625
- credit_card_transaction.AmountInCents = 100
626
-
627
- sale_request = CreateSaleRequest.new
628
- sale_request.CreditCardTransactionCollection << credit_card_transaction
629
-
630
- sale_response = gateway.CreateSale(sale_request)
631
-
632
- expect(sale_response['ErrorReport']).to eq nil
633
-
634
- instant_buy_key = sale_response['CreditCardTransactionResultCollection'][0]['CreditCard']['InstantBuyKey']
635
-
636
- # coleta dados do cartao
637
- creditCardTransaction = CreditCardTransaction.new
638
- creditCardTransaction.AmountInCents = 100
639
- creditCardTransaction.CreditCard.InstantBuyKey = instant_buy_key
640
-
641
- # cria a transacao
642
- createSaleRequest = CreateSaleRequest.new
643
- createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
644
-
645
- # faz a requisicao de criação de transacao, retorna um hash com a resposta
646
- response = gateway.CreateSale(createSaleRequest)
647
-
648
- expect(response['ErrorReport']).to eq nil
649
- end
650
-
651
- end
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