mundipagg_sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +191 -0
  3. data/README.md +63 -0
  4. data/lib/gateway/Address/billing_address.rb +32 -0
  5. data/lib/gateway/Address/buyer_address.rb +36 -0
  6. data/lib/gateway/Address/delivery_address.rb +32 -0
  7. data/lib/gateway/AntiFraud/anti_fraud_analysis_result.rb +47 -0
  8. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_data.rb +51 -0
  9. data/lib/gateway/AntiFraud/query_sale_anti_fraud_analysis_history_data.rb +41 -0
  10. data/lib/gateway/BaseRequest.rb +11 -0
  11. data/lib/gateway/BaseResponse.rb +17 -0
  12. data/lib/gateway/BoletoTransaction/boleto_transaction.rb +43 -0
  13. data/lib/gateway/BoletoTransaction/boleto_transaction_data.rb +44 -0
  14. data/lib/gateway/BoletoTransaction/boleto_transaction_options.rb +14 -0
  15. data/lib/gateway/BoletoTransaction/boleto_transaction_report_file.rb +20 -0
  16. data/lib/gateway/BoletoTransaction/boleto_transaction_result.rb +35 -0
  17. data/lib/gateway/CreditCardTransaction/credit_card.rb +30 -0
  18. data/lib/gateway/CreditCardTransaction/credit_card_transaction.rb +32 -0
  19. data/lib/gateway/CreditCardTransaction/credit_card_transaction_data.rb +104 -0
  20. data/lib/gateway/CreditCardTransaction/credit_card_transaction_options.rb +27 -0
  21. data/lib/gateway/CreditCardTransaction/credit_card_transaction_report_file.rb +29 -0
  22. data/lib/gateway/CreditCardTransaction/manage_credit_card_transaction.rb +12 -0
  23. data/lib/gateway/CreditCardTransaction/retry_sale_credit_card_transaction.rb +13 -0
  24. data/lib/gateway/ErrorItem.rb +17 -0
  25. data/lib/gateway/ErrorReport.rb +18 -0
  26. data/lib/gateway/Gateway.rb +416 -0
  27. data/lib/gateway/InstantBuy/credit_card_data.rb +41 -0
  28. data/lib/gateway/InstantBuy/get_instant_buy_data_response.rb +18 -0
  29. data/lib/gateway/Merchant/merchant.rb +11 -0
  30. data/lib/gateway/OnlineDebit/online_debit_transaction_report_file.rb +18 -0
  31. data/lib/gateway/Order/order.rb +11 -0
  32. data/lib/gateway/Order/order_transaction_report_file.rb +6 -0
  33. data/lib/gateway/Parsers/boleto_transaction_parser.rb +31 -0
  34. data/lib/gateway/Parsers/credit_card_transaction_parser.rb +40 -0
  35. data/lib/gateway/Parsers/header_parser.rb +14 -0
  36. data/lib/gateway/Parsers/online_debit_transaction_parser.rb +30 -0
  37. data/lib/gateway/Parsers/trailer_parser.rb +15 -0
  38. data/lib/gateway/Person/buyer.rb +33 -0
  39. data/lib/gateway/Person/person.rb +47 -0
  40. data/lib/gateway/Recurrency/recurrency.rb +23 -0
  41. data/lib/gateway/Sale/create_sale_request.rb +36 -0
  42. data/lib/gateway/Sale/create_sale_response.rb +25 -0
  43. data/lib/gateway/Sale/manage_sale_request.rb +17 -0
  44. data/lib/gateway/Sale/manage_sale_response.rb +15 -0
  45. data/lib/gateway/Sale/query_sale_request.rb +36 -0
  46. data/lib/gateway/Sale/query_sale_response.rb +18 -0
  47. data/lib/gateway/Sale/request_data.rb +20 -0
  48. data/lib/gateway/Sale/retry_sale_options.rb +14 -0
  49. data/lib/gateway/Sale/retry_sale_request.rb +22 -0
  50. data/lib/gateway/Sale/retry_sale_response.rb +14 -0
  51. data/lib/gateway/Sale/sale_data.rb +33 -0
  52. data/lib/gateway/Sale/sale_order_data.rb +17 -0
  53. data/lib/gateway/SalesOption.rb +17 -0
  54. data/lib/gateway/ShoppingCart/shopping_cart.rb +26 -0
  55. data/lib/gateway/ShoppingCart/shopping_cart_item.rb +23 -0
  56. data/lib/gateway/Trailer.rb +6 -0
  57. data/lib/gateway/address.rb +25 -0
  58. data/lib/gateway/header.rb +5 -0
  59. data/lib/gateway/post_notification.rb +29 -0
  60. data/lib/gateway/transaction_report_file.rb +45 -0
  61. data/lib/mundipagg_sdk.rb +70 -0
  62. data/mundipagg_sdk.gemspec +19 -0
  63. data/spec/integration/gateway_spec.rb +612 -0
  64. data/spec/integration/test_helper.rb +69 -0
  65. data/spec/spec_helper.rb +96 -0
  66. metadata +247 -0
@@ -0,0 +1,36 @@
1
+ class QuerySaleRequest
2
+ attr_accessor :OrderKey
3
+
4
+ attr_accessor :OrderReference
5
+
6
+ attr_accessor :CreditCardTransactionKey
7
+
8
+ attr_accessor :CreditCardTransactionReference
9
+
10
+ attr_accessor :BoletoTransactionKey
11
+
12
+ attr_accessor :BoletoTransactionReference
13
+
14
+ attr_accessor :QuerySaleRequestEnum
15
+
16
+ # Enum feito para as chamadas do m�todo query
17
+ @@QuerySaleRequestEnum = {
18
+ :OrderKey => 'OrderKey',
19
+ :OrderReference => 'OrderReference',
20
+ :CreditCardTransactionKey => 'CreditCardTransactionKey',
21
+ :CreditCardTransactionReference => 'CreditCardTransactionReference',
22
+ :BoletoTransactionKey => 'BoletoTransactionKey',
23
+ :BoletoTransactionReference => 'BoletoTransactionReference'
24
+ }
25
+
26
+ def self.QuerySaleRequestEnum
27
+ @@QuerySaleRequestEnum
28
+ end
29
+
30
+ def to_json
31
+ hash = {}
32
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
33
+ hash
34
+ end
35
+
36
+ end
@@ -0,0 +1,18 @@
1
+ class QuerySaleResponse
2
+ # Lista de vendas
3
+ attr_accessor :SaleDataCollection
4
+
5
+ # Indicador do total de vendas
6
+ attr_accessor :SaleDataCount
7
+
8
+ def initialize
9
+ @SaleDataCollection = Array.new
10
+ end
11
+
12
+ def to_json
13
+ hash = {}
14
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
15
+ hash
16
+ end
17
+
18
+ end
@@ -0,0 +1,20 @@
1
+ class RequestData
2
+ # Identificador da origem de venda na loja
3
+ attr_accessor :Origin
4
+
5
+ # Identificador da sess�o do usu�rio no sistema da loja (utilizado pelo servi�o de antifraude)
6
+ attr_accessor :SessionId
7
+
8
+ # Endere�o IP do cliente da loja
9
+ attr_accessor :IpAddress
10
+
11
+ # Categoria da venda e-commerce. B2B ou B2C
12
+ attr_accessor :EcommerceCategory
13
+
14
+ def to_json
15
+ hash = {}
16
+ instance_variables.each { |var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
17
+ hash
18
+ end
19
+
20
+ end
@@ -0,0 +1,14 @@
1
+ class RetrySaleOptions
2
+ # Indica se o limite extendido est� habilitado
3
+ attr_accessor :ExtendedLimitEnabled
4
+
5
+ # C�digo do limite extendido
6
+ attr_accessor :ExtendedLimitCode
7
+
8
+ def to_json
9
+ hash = {}
10
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
11
+ hash
12
+ end
13
+
14
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'retry_sale_options'
2
+
3
+ class RetrySaleRequest
4
+
5
+ attr_accessor :Options
6
+
7
+ attr_accessor :OrderKey
8
+
9
+ attr_accessor :RetrySaleCreditCardTransactionCollection
10
+
11
+ def initialize
12
+ @RetrySaleCreditCardTransactionCollection = Array.new
13
+ @Options = RetrySaleOptions.new
14
+ end
15
+
16
+ def to_json
17
+ hash = {}
18
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
19
+ hash
20
+ end
21
+
22
+ end
@@ -0,0 +1,14 @@
1
+ class RetrySaleResponse
2
+ attr_accessor :CreditCardTransactionResultCollection
3
+
4
+ def initialize
5
+ @CreditCardTransactionResultCollection = Array.new
6
+ end
7
+
8
+ def to_json
9
+ hash = {}
10
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
11
+ hash
12
+ end
13
+
14
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'sale_order_data'
2
+ require_relative '../../gateway/AntiFraud/query_sale_anti_fraud_analysis_data'
3
+
4
+ class SaleData
5
+ # Lista transa��es de cart�o de cr�dito
6
+ attr_accessor :CreditCardTransactionDataCollection
7
+
8
+ # Lista as transa��es de boleto
9
+ attr_accessor :BoletoTransactionDataCollection
10
+
11
+ # Dados do pedido
12
+ attr_accessor :OrderData
13
+
14
+ # Chave do comprador. Utilzada para identificar um comprador no gateway
15
+ attr_accessor :BuyerKey
16
+
17
+ # Dados de servi�o do antifraude
18
+ attr_accessor :AntiFraudAnalysisData
19
+
20
+ def initialize
21
+ @CreditCardTransactionDataCollection = Array.new
22
+ @BoletoTransactionDataCollection = Array.new
23
+ @OrderData = SaleOrderData.new
24
+ @AntiFraudAnalysisData = QuerySaleAntiFraudAnalysisData.new
25
+ end
26
+
27
+ def to_json
28
+ hash = {}
29
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
30
+ hash
31
+ end
32
+
33
+ end
@@ -0,0 +1,17 @@
1
+ class SaleOrderData
2
+ # N�mero do pedido no sistema da loja
3
+ attr_accessor :OrderReference
4
+
5
+ # Chave do pedido. Utilizado para identificar o pedido no Gateway
6
+ attr_accessor :OrderKey
7
+
8
+ # Data de cria��o do pedido no Gateway
9
+ attr_accessor :CreateDate
10
+
11
+ def to_json
12
+ hash = {}
13
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
14
+ hash
15
+ end
16
+
17
+ end
@@ -0,0 +1,17 @@
1
+ class SalesOption
2
+
3
+ attr_accessor :IsAntiFraudEnabled
4
+
5
+ attr_accessor :AntiFraudServiceCode
6
+
7
+ attr_accessor :Retries
8
+
9
+ attr_accessor :CurrencyIso
10
+
11
+ def to_json
12
+ hash = {}
13
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
14
+ hash
15
+ end
16
+
17
+ end
@@ -0,0 +1,26 @@
1
+ class ShoppingCartCollection
2
+
3
+ attr_accessor :FreighCostInCents
4
+
5
+ attr_accessor :EstimatedDeliveryDate
6
+
7
+ attr_accessor :DeliveryDeadline
8
+
9
+ attr_accessor :ShippingCompany
10
+
11
+ attr_accessor :DeliveryAddress
12
+
13
+ attr_accessor :ShoppingCartItemCollection
14
+
15
+ def initialize
16
+ @ShoppingCartItemCollection = Array.new
17
+ @DeliveryAddress = DeliveryAddress.new
18
+ end
19
+
20
+ def to_json
21
+ hash = {}
22
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
23
+ hash
24
+ end
25
+
26
+ end
@@ -0,0 +1,23 @@
1
+ class ShoppingCartItemCollection
2
+
3
+ attr_accessor :ItemReference
4
+
5
+ attr_accessor :Quantity
6
+
7
+ attr_accessor :UnitCostInCents
8
+
9
+ attr_accessor :TotalCostInCents
10
+
11
+ attr_accessor :Name
12
+
13
+ attr_accessor :Description
14
+
15
+ attr_accessor :DiscountAmountInCents
16
+
17
+ def to_json
18
+ hash = {}
19
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
20
+ hash
21
+ end
22
+
23
+ end
@@ -0,0 +1,6 @@
1
+ class Trailer
2
+ attr_accessor :OrderDataCount
3
+ attr_accessor :CreditCardTransactionDataCount
4
+ attr_accessor :BoletoTransactionDataCount
5
+ attr_accessor :OnlineDebitTransactionDataCount
6
+ end
@@ -0,0 +1,25 @@
1
+ class Address
2
+
3
+ attr_accessor :Country
4
+
5
+ attr_accessor :State
6
+
7
+ attr_accessor :City
8
+
9
+ attr_accessor :District
10
+
11
+ attr_accessor :Street
12
+
13
+ attr_accessor :Number
14
+
15
+ attr_accessor :Complement
16
+
17
+ attr_accessor :ZipCode
18
+
19
+ def to_json
20
+ hash = {}
21
+ instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) }
22
+ hash
23
+ end
24
+
25
+ end
@@ -0,0 +1,5 @@
1
+ class Header
2
+ attr_accessor :TransactionProcessedDate
3
+ attr_accessor :ReportFileCreateDate
4
+ attr_accessor :Version
5
+ end
@@ -0,0 +1,29 @@
1
+ require 'nori'
2
+
3
+ # Class who handles 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
+ end
@@ -0,0 +1,45 @@
1
+ class TransactionReportFile
2
+ def TransactionReportFileParser(file_to_parse)
3
+ response = {}
4
+ response['CreditCardTransaction'] = []
5
+ response['OnlineDebitTransaction'] = []
6
+ response['BoletoTransaction'] = []
7
+
8
+ header_parser = HeaderParser.new
9
+ credit_card_parser = CreditCardTransactionParser.new
10
+ boleto_parser = BoletoTransactionParser.new
11
+ online_debit_parser = OnlineDebitTransactionParser.new
12
+ trailer_parser = TrailerParser.new
13
+
14
+ begin
15
+ response_splited = file_to_parse.split("\n")
16
+
17
+ response_splited.each do |item|
18
+
19
+ to_parse_item = item.split(',')
20
+ if to_parse_item[0] == '01'
21
+ response['Header'] = header_parser.Parse(to_parse_item)
22
+ end
23
+
24
+ if to_parse_item[0] == '20'
25
+ response['CreditCardTransaction'] << credit_card_parser.Parse(to_parse_item)
26
+ end
27
+
28
+ if to_parse_item[0] == '40'
29
+ response['OnlineDebitTransaction'] << online_debit_parser.Parse(to_parse_item)
30
+ end
31
+
32
+ if to_parse_item[0] == '30'
33
+ response['BoletoTransaction'] << boleto_parser.Parse(to_parse_item)
34
+ end
35
+
36
+ if to_parse_item[0] == '99'
37
+ response['Trailer'] = trailer_parser.Parse(to_parse_item)
38
+ end
39
+ end
40
+ rescue Exception=>err
41
+ return err
42
+ end
43
+ return response
44
+ end
45
+ end
@@ -0,0 +1,70 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'json'
5
+ require 'rest-client'
6
+ require 'nori'
7
+ require 'rspec'
8
+ require 'rexml/document'
9
+
10
+ require_relative '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'