genesis_ruby 0.2.3 → 0.2.5

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -0
  3. data/Gemfile.lock +14 -14
  4. data/README.md +78 -0
  5. data/VERSION +1 -1
  6. data/lib/genesis_ruby/api/constants/currencies/iso4217.rb +6 -0
  7. data/lib/genesis_ruby/api/constants/non_financial/kyc/document_types.rb +49 -0
  8. data/lib/genesis_ruby/api/constants/non_financial/kyc/genders.rb +22 -0
  9. data/lib/genesis_ruby/api/constants/transactions/parameters/african_mobile_operators.rb +37 -0
  10. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_owner.rb +24 -0
  11. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_subtype.rb +24 -0
  12. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_type.rb +63 -0
  13. data/lib/genesis_ruby/api/constants/transactions/parameters/digital_asset_types.rb +31 -0
  14. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/externally_processed.rb +22 -0
  15. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/processing_type.rb +22 -0
  16. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/sca_exemptions.rb +25 -0
  17. data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/iframe_targets.rb +26 -0
  18. data/lib/genesis_ruby/api/constants/transactions/parameters/purpose_of_payment.rb +136 -0
  19. data/lib/genesis_ruby/api/constants/transactions/parameters/source_of_funds.rb +34 -0
  20. data/lib/genesis_ruby/api/mixins/requests/digital_asset_type_attributes.rb +26 -0
  21. data/lib/genesis_ruby/api/mixins/requests/financial/african_mobile_attributes.rb +30 -0
  22. data/lib/genesis_ruby/api/mixins/requests/financial/beneficiary_attributes.rb +38 -0
  23. data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_params_attributes.rb +36 -0
  24. data/lib/genesis_ruby/api/mixins/requests/financial/customer_account_attributes.rb +21 -0
  25. data/lib/genesis_ruby/api/mixins/requests/financial/customer_identification_attributes.rb +82 -0
  26. data/lib/genesis_ruby/api/mixins/requests/financial/gift_cards_attributes.rb +26 -0
  27. data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/payer_attributes.rb +65 -0
  28. data/lib/genesis_ruby/api/mixins/requests/financial/preauthorization_attributes.rb +25 -0
  29. data/lib/genesis_ruby/api/mixins/requests/financial/purpose_of_payment_attributes.rb +29 -0
  30. data/lib/genesis_ruby/api/mixins/requests/financial/source_of_funds_attributes.rb +38 -0
  31. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +1 -1
  32. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/id_attributes.rb +28 -0
  33. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/tier_id_attributes.rb +28 -0
  34. data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/customer_information_attributes.rb +62 -0
  35. data/lib/genesis_ruby/api/mixins/requests/non_financial/mode_attributes.rb +24 -0
  36. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/card_data_attributes.rb +62 -0
  37. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/token_attributes.rb +23 -0
  38. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/tokenization_attributes.rb +51 -0
  39. data/lib/genesis_ruby/api/request.rb +7 -0
  40. data/lib/genesis_ruby/api/requests/base/consumer.rb +24 -0
  41. data/lib/genesis_ruby/api/requests/base/financial.rb +10 -1
  42. data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +9 -9
  43. data/lib/genesis_ruby/api/requests/base/financials/south_american_payments.rb +11 -14
  44. data/lib/genesis_ruby/api/requests/base/non_financial/kyc/base.rb +33 -0
  45. data/lib/genesis_ruby/api/requests/base/reference.rb +3 -3
  46. data/lib/genesis_ruby/api/requests/financial/Preauthorizations/incremental_authorize.rb +24 -0
  47. data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +5 -1
  48. data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +5 -1
  49. data/lib/genesis_ruby/api/requests/financial/cards/bancontact.rb +8 -9
  50. data/lib/genesis_ruby/api/requests/financial/cards/credit.rb +39 -0
  51. data/lib/genesis_ruby/api/requests/financial/cards/payout.rb +72 -0
  52. data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +3 -1
  53. data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +3 -1
  54. data/lib/genesis_ruby/api/requests/financial/cash_payments/cash.rb +13 -14
  55. data/lib/genesis_ruby/api/requests/financial/cash_payments/pix.rb +23 -25
  56. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/payout.rb +52 -0
  57. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/refund.rb +36 -0
  58. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/sale.rb +55 -0
  59. data/lib/genesis_ruby/api/requests/financial/gift_cards/fashioncheque.rb +47 -0
  60. data/lib/genesis_ruby/api/requests/financial/gift_cards/intersolve.rb +46 -0
  61. data/lib/genesis_ruby/api/requests/financial/gift_cards/tcs.rb +47 -0
  62. data/lib/genesis_ruby/api/requests/financial/mobile/african_mobile_sale.rb +81 -0
  63. data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +18 -20
  64. data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +20 -24
  65. data/lib/genesis_ruby/api/requests/financial/mobile/russian_mobile_sale.rb +55 -0
  66. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/banco_do_brasil.rb +11 -14
  67. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/eps.rb +9 -10
  68. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/idebit/pay_in.rb +11 -18
  69. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_in.rb +61 -0
  70. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_out.rb +24 -0
  71. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/multibanco.rb +48 -0
  72. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/my_bank.rb +47 -0
  73. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +17 -18
  74. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_out.rb +33 -38
  75. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/pay_u.rb +61 -0
  76. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/post_finance.rb +53 -0
  77. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/safety_pay.rb +57 -0
  78. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/sofort.rb +63 -0
  79. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/trustly_sale.rb +75 -0
  80. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/upi.rb +54 -0
  81. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/wechat.rb +11 -14
  82. data/lib/genesis_ruby/api/requests/financial/sdd/sale.rb +13 -17
  83. data/lib/genesis_ruby/api/requests/financial/void.rb +12 -5
  84. data/lib/genesis_ruby/api/requests/financial/vouchers/neosurf.rb +61 -0
  85. data/lib/genesis_ruby/api/requests/financial/wallets/alipay.rb +10 -13
  86. data/lib/genesis_ruby/api/requests/financial/wallets/pay_pal.rb +18 -20
  87. data/lib/genesis_ruby/api/requests/non_financial/consumers/create.rb +44 -0
  88. data/lib/genesis_ruby/api/requests/non_financial/consumers/disable.rb +40 -0
  89. data/lib/genesis_ruby/api/requests/non_financial/consumers/enable.rb +40 -0
  90. data/lib/genesis_ruby/api/requests/non_financial/consumers/get_cards.rb +40 -0
  91. data/lib/genesis_ruby/api/requests/non_financial/consumers/retrieve.rb +40 -0
  92. data/lib/genesis_ruby/api/requests/non_financial/consumers/update.rb +45 -0
  93. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/date_range.rb +82 -0
  94. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/transaction.rb +52 -0
  95. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/date_range.rb +108 -0
  96. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/transaction.rb +52 -0
  97. data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/date_range.rb +81 -0
  98. data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/transaction.rb +52 -0
  99. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rate.rb +55 -0
  100. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rates.rb +53 -0
  101. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tier.rb +53 -0
  102. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tiers.rb +35 -0
  103. data/lib/genesis_ruby/api/requests/non_financial/fx/search_rate.rb +61 -0
  104. data/lib/genesis_ruby/api/requests/non_financial/kyc/consumer_registration/create.rb +99 -0
  105. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/date_range.rb +68 -0
  106. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/post_date_range.rb +72 -0
  107. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/transaction.rb +48 -0
  108. data/lib/genesis_ruby/api/requests/non_financial/sca/checker.rb +77 -0
  109. data/lib/genesis_ruby/api/requests/non_financial/tokenization/cryptogram.rb +46 -0
  110. data/lib/genesis_ruby/api/requests/non_financial/tokenization/delete_token.rb +43 -0
  111. data/lib/genesis_ruby/api/requests/non_financial/tokenization/detokenize.rb +43 -0
  112. data/lib/genesis_ruby/api/requests/non_financial/tokenization/get_card.rb +43 -0
  113. data/lib/genesis_ruby/api/requests/non_financial/tokenization/tokenize.rb +45 -0
  114. data/lib/genesis_ruby/api/requests/non_financial/tokenization/update_token.rb +45 -0
  115. data/lib/genesis_ruby/api/requests/non_financial/tokenization/validate_token.rb +43 -0
  116. data/lib/genesis_ruby/api/requests/wpf/create.rb +3 -1
  117. data/lib/genesis_ruby/configuration.rb +4 -0
  118. data/lib/genesis_ruby/dependencies.rb +2 -0
  119. data/lib/genesis_ruby/utils/country.rb +272 -0
  120. data/lib/genesis_ruby/utils/formatters/response/formats/timestamp.rb +1 -1
  121. data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +1 -4
  122. data/lib/genesis_ruby/version.rb +1 -1
  123. metadata +87 -2
@@ -0,0 +1,40 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Enable consumer that was disabled in the past.
7
+ class Enable < Base::Consumer
8
+
9
+ attr_accessor :email, :consumer_id
10
+
11
+ # Enable Consumer constructor
12
+ def initialize(configuration, _builder_interface = nil)
13
+ super configuration
14
+
15
+ self.request_path = 'enable_consumer'
16
+ end
17
+
18
+ protected
19
+
20
+ # Enable consumer field validations
21
+ def init_field_validations
22
+ super
23
+
24
+ required_fields.push *%i[email consumer_id]
25
+ end
26
+
27
+ # Enable Consumer request structure
28
+ def request_structure
29
+ {
30
+ email: email,
31
+ consumer_id: consumer_id
32
+ }
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Get previously tokenized card details for a consumer.
7
+ class GetCards < Base::Consumer
8
+
9
+ attr_accessor :email, :consumer_id
10
+
11
+ # GetCards Consumer constructor
12
+ def initialize(configuration, _builder_interface = nil)
13
+ super configuration
14
+
15
+ self.request_path = 'get_consumer_cards'
16
+ end
17
+
18
+ protected
19
+
20
+ # GetCards consumer field validations
21
+ def init_field_validations
22
+ super
23
+
24
+ required_fields.push *%i[email consumer_id]
25
+ end
26
+
27
+ # GetCards Consumer request structure
28
+ def request_structure
29
+ {
30
+ email: email,
31
+ consumer_id: consumer_id
32
+ }
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Retrieves consumer details based on consumer id or email
7
+ class Retrieve < Base::Consumer
8
+
9
+ attr_accessor :email, :consumer_id
10
+
11
+ # Retrieve Consumer constructor
12
+ def initialize(configuration, _builder_interface = nil)
13
+ super configuration
14
+
15
+ self.request_path = 'retrieve_consumer'
16
+ end
17
+
18
+ protected
19
+
20
+ # Retrieve Consumer custom field validations
21
+ def check_requirements
22
+ raise ParameterError, 'Either email or consumer_id field has to be set.' if email.nil? && consumer_id.nil?
23
+
24
+ super
25
+ end
26
+
27
+ # Retrieve Consumer request structure
28
+ def request_structure
29
+ {
30
+ email: email,
31
+ consumer_id: consumer_id
32
+ }
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,45 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Updates consumer email and addresses.
7
+ class Update < Base::Consumer
8
+
9
+ include Api::Mixins::Requests::CustomerAddress::BillingInfoAttributes
10
+ include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
11
+
12
+ attr_accessor :email, :consumer_id
13
+
14
+ # Update Consumer constructor
15
+ def initialize(configuration, _builder_interface = nil)
16
+ super configuration
17
+
18
+ self.request_path = 'update_consumer'
19
+ end
20
+
21
+ protected
22
+
23
+ # Update Consumer field validations
24
+ def init_field_validations
25
+ super
26
+
27
+ required_fields.push *%i[email consumer_id]
28
+ end
29
+
30
+ # Update Consumer request structure
31
+ def request_structure
32
+ {
33
+ email: email,
34
+ consumer_id: consumer_id,
35
+ billing_address: billing_address_parameters_structure,
36
+ shipping_address: shipping_address_parameters_structure
37
+ }
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,82 @@
1
+ require 'genesis_ruby/api/constants/transactions/parameters/non_financial/externally_processed'
2
+ require 'genesis_ruby/api/constants/transactions/parameters/non_financial/processing_type'
3
+
4
+ module GenesisRuby
5
+ module Api
6
+ module Requests
7
+ module NonFinancial
8
+ module Fraud
9
+ module Chargeback
10
+ # Date range based chargeback retrieval allows you to fetch information for all
11
+ # chargebacks for a given merchant within a given date range
12
+ class DateRange < Api::Request
13
+
14
+ include Api::Mixins::Requests::NonFinancial::DateAttributes
15
+ include Api::Mixins::Requests::NonFinancial::PagingAttributes
16
+
17
+ attr_accessor :externally_processed, :processing_type
18
+
19
+ # Start of the requested date range
20
+ def start_date
21
+ @start_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
22
+ end
23
+
24
+ # End of the requested date range
25
+ def end_date
26
+ @end_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
27
+ end
28
+
29
+ # Date of import in the system
30
+ def import_date
31
+ @import_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
32
+ end
33
+
34
+ # Date of import in the system
35
+ def import_date=(value)
36
+ parse_date attribute: __method__, value: value, allow_empty: true
37
+ end
38
+
39
+ protected
40
+
41
+ # Set Gateway API configuration
42
+ def init_configuration
43
+ init_xml_configuration
44
+ init_api_gateway_configuration request_path: 'chargebacks/by_date', include_token: false
45
+ @api_config.parser_skip_root_node = false
46
+ end
47
+
48
+ # Field Validations
49
+ def init_field_validations
50
+ super
51
+
52
+ constant_values = {
53
+ externally_processed: Constants::Transactions::Parameters::NonFinancial::ExternallyProcessed.all,
54
+ processing_type: Constants::Transactions::Parameters::NonFinancial::ProcessingType.all
55
+ }
56
+
57
+ required_fields.push *%i[start_date]
58
+ field_values.merge! constant_values
59
+ end
60
+
61
+ # API Request structure
62
+ def populate_structure # rubocop:disable Metrics/MethodLength
63
+ @tree_structure = {
64
+ chargeback_request: {
65
+ start_date: start_date,
66
+ end_date: end_date,
67
+ import_date: import_date,
68
+ page: page,
69
+ per_page: per_page,
70
+ externally_processed: externally_processed,
71
+ processing_type: processing_type
72
+ }
73
+ }
74
+ end
75
+
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,52 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Fraud
6
+ module Chargeback
7
+ # Retrieve a single chargeback or a list of chargebacks by ARN or by passing the unique ID
8
+ # of the original transaction
9
+ class Transaction < Api::Request
10
+
11
+ include Api::Mixins::Requests::NonFinancial::ModeAttributes
12
+
13
+ attr_accessor :arn, :original_transaction_unique_id
14
+
15
+ protected
16
+
17
+ # Set Gateway API configuration
18
+ def init_configuration
19
+ init_xml_configuration
20
+ init_api_gateway_configuration request_path: 'chargebacks', include_token: false
21
+ end
22
+
23
+ # Chargeback custom field validations
24
+ def check_requirements
25
+ unless arn.nil? ^ original_transaction_unique_id.nil?
26
+ raise(
27
+ ParameterError,
28
+ 'Either arn or original_transaction_unique_id field has to be set, not both.'
29
+ )
30
+ end
31
+
32
+ super
33
+ end
34
+
35
+ # API Request structure
36
+ def populate_structure
37
+ @tree_structure = {
38
+ chargeback_request: {
39
+ arn: arn,
40
+ original_transaction_unique_id: original_transaction_unique_id,
41
+ mode: mode
42
+ }
43
+ }
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,108 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Fraud
6
+ module Reports
7
+ # Date range based SAFE/TC40 retrieval allows you to fetch information for
8
+ # all SAFE/TC40 reports for a given merchant within a given date range
9
+ class DateRange < Api::Request
10
+
11
+ include Api::Mixins::Requests::NonFinancial::DateAttributes
12
+ include Api::Mixins::Requests::NonFinancial::PagingAttributes
13
+
14
+ # Start of the requested date range
15
+ def start_date
16
+ @start_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
17
+ end
18
+
19
+ # End of the requested date range
20
+ def end_date
21
+ @end_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
22
+ end
23
+
24
+ # Date of import in the system
25
+ def import_date
26
+ @import_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
27
+ end
28
+
29
+ # Date of import in the system
30
+ def import_date=(value)
31
+ parse_date attribute: __method__, value: value, allow_empty: true
32
+ end
33
+
34
+ # Start of the requested date range for the date when the fraud was reported
35
+ def report_start_date
36
+ @report_start_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
37
+ end
38
+
39
+ # Start of the requested date range for the date when the fraud was reported
40
+ def report_start_date=(value)
41
+ parse_date attribute: __method__, value: value, allow_empty: true
42
+ end
43
+
44
+ # End of the requested date range for the date when the fraud was reported
45
+ def report_end_date
46
+ @report_end_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
47
+ end
48
+
49
+ # End of the requested date range for the date when the fraud was reported
50
+ def report_end_date=(value)
51
+ parse_date attribute: __method__, value: value, allow_empty: true
52
+ end
53
+
54
+ protected
55
+
56
+ # Set Gateway API configuration
57
+ def init_configuration
58
+ init_xml_configuration
59
+ init_api_gateway_configuration request_path: 'fraud_reports/by_date', include_token: false
60
+ @api_config.parser_skip_root_node = false
61
+ end
62
+
63
+ # Field Validations
64
+ def init_field_validations
65
+ super
66
+
67
+ field_value_dependencies.merge!(
68
+ {
69
+ start_date: %i[end_date],
70
+ report_start_date: %i[report_end_date]
71
+ }
72
+ )
73
+ end
74
+
75
+ # Custom field validations
76
+ def check_requirements
77
+ fields = [start_date, import_date, report_start_date]
78
+ error_message =
79
+ 'Either start_date/end_date, import_date or report_start_date/report_end_date' \
80
+ ' fields have to be set, do not mix'
81
+
82
+ raise ParameterError, error_message if fields.compact.size != 1
83
+
84
+ super
85
+ end
86
+
87
+ # API Request structure
88
+ def populate_structure # rubocop:disable Metrics/MethodLength
89
+ @tree_structure = {
90
+ fraud_report_request: {
91
+ start_date: start_date,
92
+ end_date: end_date,
93
+ import_date: import_date,
94
+ report_start_date: report_start_date,
95
+ report_end_date: report_end_date,
96
+ page: page,
97
+ per_page: per_page
98
+ }
99
+ }
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,52 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Fraud
6
+ module Reports
7
+ # Retrieve a single SAFE/TC40 or a list of SAFE/TC40 by ARN or by passing
8
+ # the unique ID of the original transaction
9
+ class Transaction < Api::Request
10
+
11
+ include Api::Mixins::Requests::NonFinancial::ModeAttributes
12
+
13
+ attr_accessor :arn, :original_transaction_unique_id
14
+
15
+ protected
16
+
17
+ # Set Gateway API configuration
18
+ def init_configuration
19
+ init_xml_configuration
20
+ init_api_gateway_configuration request_path: 'fraud_reports', include_token: false
21
+ end
22
+
23
+ # Report custom field validations
24
+ def check_requirements
25
+ unless arn.nil? ^ original_transaction_unique_id.nil?
26
+ raise(
27
+ ParameterError,
28
+ 'Either arn or original_transaction_unique_id field has to be set, not both.'
29
+ )
30
+ end
31
+
32
+ super
33
+ end
34
+
35
+ # API Request structure
36
+ def populate_structure
37
+ @tree_structure = {
38
+ fraud_report_request: {
39
+ arn: arn,
40
+ original_transaction_unique_id: original_transaction_unique_id,
41
+ mode: mode
42
+ }
43
+ }
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,81 @@
1
+ require 'genesis_ruby/api/constants/transactions/parameters/non_financial/externally_processed'
2
+ require 'genesis_ruby/api/constants/transactions/parameters/non_financial/processing_type'
3
+
4
+ module GenesisRuby
5
+ module Api
6
+ module Requests
7
+ module NonFinancial
8
+ module Fraud
9
+ module Retrieval
10
+ # Date range based retrieval request retrieval allows you to fetch information
11
+ # for all retrieval requests for a given merchant within a given date range
12
+ class DateRange < Api::Request
13
+
14
+ include Api::Mixins::Requests::NonFinancial::DateAttributes
15
+ include Api::Mixins::Requests::NonFinancial::PagingAttributes
16
+
17
+ attr_accessor :externally_processed, :processing_type
18
+
19
+ # Start of the requested date range
20
+ def start_date
21
+ @start_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
22
+ end
23
+
24
+ # End of the requested date range
25
+ def end_date
26
+ @end_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
27
+ end
28
+
29
+ # Date of import in the system
30
+ def import_date
31
+ @import_date&.strftime Api::Constants::DateTimeFormats::YYYY_MM_DD_ISO_8601
32
+ end
33
+
34
+ def import_date=(value)
35
+ parse_date attribute: __method__, value: value, allow_empty: true
36
+ end
37
+
38
+ protected
39
+
40
+ # Set Gateway API configuration
41
+ def init_configuration
42
+ init_xml_configuration
43
+ init_api_gateway_configuration request_path: 'retrieval_requests/by_date', include_token: false
44
+ @api_config.parser_skip_root_node = false
45
+ end
46
+
47
+ # Field Validations
48
+ def init_field_validations
49
+ super
50
+
51
+ constant_values = {
52
+ externally_processed: Constants::Transactions::Parameters::NonFinancial::ExternallyProcessed.all,
53
+ processing_type: Constants::Transactions::Parameters::NonFinancial::ProcessingType.all
54
+ }
55
+
56
+ required_fields.push *%i[start_date]
57
+ field_values.merge! constant_values
58
+ end
59
+
60
+ # API Request structure
61
+ def populate_structure # rubocop:disable Metrics/MethodLength
62
+ @tree_structure = {
63
+ retrieval_request_request: {
64
+ start_date: start_date,
65
+ end_date: end_date,
66
+ import_date: import_date,
67
+ page: page,
68
+ per_page: per_page,
69
+ externally_processed: externally_processed,
70
+ processing_type: processing_type
71
+ }
72
+ }
73
+ end
74
+
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,52 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Fraud
6
+ module Retrieval
7
+ # Retrieve a single retrieval request or a list of requests by ARN or by passing the unique ID
8
+ # of the original transaction.
9
+ class Transaction < Api::Request
10
+
11
+ include Api::Mixins::Requests::NonFinancial::ModeAttributes
12
+
13
+ attr_accessor :arn, :original_transaction_unique_id
14
+
15
+ protected
16
+
17
+ # Set Gateway API configuration
18
+ def init_configuration
19
+ init_xml_configuration
20
+ init_api_gateway_configuration request_path: 'retrieval_requests', include_token: false
21
+ end
22
+
23
+ # Retrieval custom field validations
24
+ def check_requirements
25
+ unless arn.nil? ^ original_transaction_unique_id.nil?
26
+ raise(
27
+ ParameterError,
28
+ 'Either arn or original_transaction_unique_id field has to be set, not both.'
29
+ )
30
+ end
31
+
32
+ super
33
+ end
34
+
35
+ # API Request structure
36
+ def populate_structure
37
+ @tree_structure = {
38
+ retrieval_request_request: {
39
+ arn: arn,
40
+ original_transaction_unique_id: original_transaction_unique_id,
41
+ mode: mode
42
+ }
43
+ }
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,55 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Fx
6
+ # This call is used to return information about selected Rate for merchant
7
+ class GetRate < Base::Versioned
8
+
9
+ include Api::Mixins::Requests::NonFinancial::Fx::IdAttributes
10
+ include Api::Mixins::Requests::NonFinancial::Fx::TierIdAttributes
11
+
12
+ # Get Rate initialization
13
+ def initialize(configuration, _builder_interface = nil)
14
+ super configuration
15
+
16
+ self.request_path = 'fx/tiers/:tier_id/rates/:id'
17
+ end
18
+
19
+ protected
20
+
21
+ # Override default Versioned Network configuration
22
+ def init_configuration
23
+ super
24
+
25
+ init_get_configuration
26
+ end
27
+
28
+ # Fetch request field validations
29
+ def init_field_validations
30
+ super
31
+
32
+ required_fields.push *id_required_fields, *tier_id_required_fields
33
+ end
34
+
35
+ # Get Rate request structure
36
+ def request_structure
37
+ {}
38
+ end
39
+
40
+ # Override API endpoint with provided IDs
41
+ def process_request_parameters
42
+ super
43
+
44
+ request_path.sub!(':tier_id', tier_id)
45
+ request_path.sub!(':id', id)
46
+
47
+ init_api_gateway_configuration request_path: "#{version}/#{request_path}", include_token: false
48
+ end
49
+
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end