mundipagg_sdk 1.0.2 → 1.0.3

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