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,62 @@
1
+ require 'genesis_ruby/api/constants/non_financial/kyc/document_types'
2
+ require 'genesis_ruby/api/constants/non_financial/kyc/genders'
3
+
4
+ module GenesisRuby
5
+ module Api
6
+ module Mixins
7
+ module Requests
8
+ module NonFinancial
9
+ module Kyc
10
+ # Customer Information Attributes mixin
11
+ module CustomerInformationAttributes
12
+
13
+ include Api::Mixins::Requests::BirthDateAttributes
14
+
15
+ attr_accessor :first_name, :middle_name, :last_name, :customer_email,
16
+ :address1, :address2, :city, :zip_code, :country,
17
+ :province, :phone1, :phone2, :document_number, :document_type, :gender
18
+
19
+ protected
20
+
21
+ # Sets the request field validations
22
+ def customer_information_required_fields
23
+ %i[first_name last_name customer_email address1 city province zip_code country]
24
+ end
25
+
26
+ # Sets the request field values validations
27
+ def customer_information_required_field_values
28
+ {
29
+ gender: Api::Constants::NonFinancial::Kyc::Genders.all,
30
+ document_type: Api::Constants::NonFinancial::Kyc::DocumentTypes.all
31
+ }
32
+ end
33
+
34
+ # Returns the customer information structure as a hash
35
+ def customer_information_structure # rubocop:disable Metrics/MethodLength
36
+ {
37
+ first_name: first_name,
38
+ middle_name: middle_name,
39
+ last_name: last_name,
40
+ customer_email: customer_email,
41
+ address1: address1,
42
+ address2: address2,
43
+ city: city,
44
+ province: province,
45
+ zip_code: zip_code,
46
+ country: country,
47
+ phone1: phone1,
48
+ phone2: phone2,
49
+ birth_date: birth_date,
50
+ document_type: document_type,
51
+ document_number: document_number,
52
+ gender: gender
53
+ }
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,24 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Mixins
4
+ module Requests
5
+ module NonFinancial
6
+ # Mode Attributes mixin
7
+ module ModeAttributes
8
+
9
+ attr_reader :mode
10
+
11
+ # Mode
12
+ def mode=(value)
13
+ allowed_options attribute: __method__,
14
+ allowed: %w(list),
15
+ value: value.to_s.downcase,
16
+ allow_empty: true
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,62 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Mixins
4
+ module Requests
5
+ module NonFinancial
6
+ module Tokenization
7
+ # Card Data Attributes mixin
8
+ module CardDataAttributes
9
+
10
+ attr_accessor :card_holder
11
+ attr_reader :card_number, :expiration_month, :expiration_year
12
+
13
+ # Complete credit/debit card number of customer
14
+ def card_number=(value)
15
+ limited_string attribute: __method__, value: value.to_s, min: 13, max: 19
16
+ end
17
+
18
+ # Expiration month as printed on credit card
19
+ def expiration_month=(value)
20
+ error_message = format(
21
+ 'Invalid value "%{value}" given for %{attribute}, should be in MM format',
22
+ value: value,
23
+ attribute: __method__
24
+ )
25
+
26
+ raise GenesisRuby::ParameterError, error_message unless value.nil? || value =~ /^(0[1-9]|1[0-2])$/
27
+
28
+ @expiration_month = value
29
+ end
30
+
31
+ # Expiration year as printed on credit card
32
+ def expiration_year=(value)
33
+ error_message = format(
34
+ 'Invalid value "%{value}" given for %{attribute}, should be in YYYY format',
35
+ value: value,
36
+ attribute: __method__
37
+ )
38
+
39
+ raise GenesisRuby::ParameterError, error_message unless value.nil? || value =~ /^(20)\d{2}$/
40
+
41
+ @expiration_year = value
42
+ end
43
+
44
+ protected
45
+
46
+ # Card Data Attributes Structure
47
+ def card_data_attributes_structure
48
+ {
49
+ card_number: card_number,
50
+ card_holder: card_holder,
51
+ expiration_month: expiration_month,
52
+ expiration_year: expiration_year
53
+ }
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,23 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Mixins
4
+ module Requests
5
+ module NonFinancial
6
+ module Tokenization
7
+ # Token Attributes mixin
8
+ module TokenAttributes
9
+
10
+ attr_reader :token
11
+
12
+ # Plain-text token value
13
+ def token=(value)
14
+ limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 36
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Mixins
4
+ module Requests
5
+ module NonFinancial
6
+ module Tokenization
7
+ # Common Tokenization API Attributes mixin
8
+ module TokenizationAttributes
9
+
10
+ attr_accessor :token_type
11
+ attr_reader :consumer_id, :email
12
+
13
+ # Consumer unique reference
14
+ def consumer_id=(value)
15
+ limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 10
16
+ end
17
+
18
+ # Consumer e-mail address
19
+ def email=(value)
20
+ error_message = format(
21
+ 'Invalid value given for %{attribute}',
22
+ attribute: __method__
23
+ )
24
+
25
+ raise GenesisRuby::ParameterError, error_message unless value.nil? || value =~ /\A.+@.+\..+\Z/
26
+
27
+ @email = value
28
+ end
29
+
30
+ protected
31
+
32
+ def tokenization_required_fields
33
+ %i[consumer_id email token_type]
34
+ end
35
+
36
+ # Tokenization Attributes Structure
37
+ def tokenization_attributes_structure
38
+ {
39
+ consumer_id: consumer_id,
40
+ email: email,
41
+ token_type: token_type
42
+ }
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -116,6 +116,13 @@ module GenesisRuby
116
116
  api_config.url = build_request_url({ subdomain: 'api_service', path: request_path })
117
117
  end
118
118
 
119
+ # Initializes KYC Service Configuration
120
+ def init_kyc_service_configuration(options = { request_path: '' })
121
+ request_path = options.fetch :request_path, ''
122
+
123
+ api_config.url = build_request_url({ subdomain: 'kyc_service', path: request_path })
124
+ end
125
+
119
126
  # Process Everything the variables set previously
120
127
  #
121
128
  # Step 1: Execute per-field actions
@@ -0,0 +1,24 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Base
5
+ # Consumers API base request class
6
+ class Consumer < Versioned
7
+
8
+ def initialize(configuration, builder_interface = Builder::XML)
9
+ super configuration, builder_interface
10
+ end
11
+
12
+ protected
13
+
14
+ def populate_structure
15
+ super
16
+
17
+ @tree_structure = Hash["#{request_path}_request", request_structure]
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -6,6 +6,7 @@ module GenesisRuby
6
6
  class Financial < Request
7
7
 
8
8
  include Mixins::Requests::Financial::BaseAttributes
9
+ include Mixins::Requests::Financial::PaymentAttributes
9
10
 
10
11
  # Use Smart Router endpoint for the current request
11
12
  def use_smart_router
@@ -48,6 +49,7 @@ module GenesisRuby
48
49
  super
49
50
  end
50
51
 
52
+ # Populate the request structure
51
53
  def populate_structure
52
54
  self.tree_structure = {
53
55
  payment_transaction: {
@@ -55,7 +57,7 @@ module GenesisRuby
55
57
  transaction_id: transaction_id,
56
58
  usage: usage,
57
59
  remote_ip: remote_ip
58
- }.merge(payment_transaction_structure)
60
+ }.merge(payment_attributes_structure, payment_transaction_structure)
59
61
  }
60
62
  end
61
63
 
@@ -64,6 +66,13 @@ module GenesisRuby
64
66
  api_config.url = build_request_url({ subdomain: 'smart_router', path: 'transactions' })
65
67
  end
66
68
 
69
+ # Initialize Financial class validations
70
+ def init_field_validations
71
+ super
72
+
73
+ field_values.merge! currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase)
74
+ end
75
+
67
76
  end
68
77
  end
69
78
  end
@@ -10,8 +10,8 @@ module GenesisRuby
10
10
  include Mixins::Requests::Financial::Cards::CredentialOnFileAttributes
11
11
  include Mixins::Requests::Financial::Cards::CreditCardAttributes
12
12
  include Mixins::Requests::Financial::Cards::TokenizationAttributes
13
+ include Mixins::Requests::Financial::Cards::TokenizationParamsAttributes
13
14
  include Mixins::Requests::Financial::Cards::UcofAttributes
14
- include Mixins::Requests::Financial::PaymentAttributes
15
15
 
16
16
  attr_reader :scheme_tokenized
17
17
 
@@ -29,23 +29,23 @@ module GenesisRuby
29
29
 
30
30
  # Request Field validations
31
31
  def init_field_validations
32
+ super
33
+
32
34
  required_fields.push *%i[transaction_id amount currency]
33
- field_values.merge!(
34
- { currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase) },
35
- credential_on_file_field_validations
36
- )
35
+ field_values.merge! credential_on_file_field_validations
37
36
  end
38
37
 
39
38
  # Credit Card attributes
40
- def payment_transaction_structure
41
- payment_attributes_structure.merge(
42
- credit_card_attributes_structure, tokenization_attributes_structure,
39
+ def payment_transaction_structure # rubocop:disable Metrics/MethodLength
40
+ credit_card_attributes_structure.merge(
41
+ tokenization_attributes_structure,
43
42
  {
44
43
  account_owner: account_owner_attributes_structure,
45
44
  credential_on_file: credential_on_file,
46
45
  credential_on_file_transaction_identifier: credential_on_file_transaction_identifier,
47
46
  credential_on_file_settlement_date: credential_on_file_settlement_date,
48
- scheme_tokenized: scheme_tokenized
47
+ scheme_tokenized: scheme_tokenized,
48
+ tokenization_params: tokenization_params_attributes_structure
49
49
  }
50
50
  )
51
51
  end
@@ -9,7 +9,6 @@ module GenesisRuby
9
9
  include Api::Mixins::Requests::AddressInfoAttributes
10
10
  include Api::Mixins::Requests::Financial::AsyncAttributes
11
11
  include Api::Mixins::Requests::BirthDateAttributes
12
- include Api::Mixins::Requests::Financial::PaymentAttributes
13
12
  include Api::Mixins::Requests::Financial::ConsumerIdentifierAttributes
14
13
 
15
14
  # Billing Country custom accessor
@@ -36,19 +35,17 @@ module GenesisRuby
36
35
  end
37
36
 
38
37
  # South American payments
39
- def payment_transaction_structure # rubocop:disable Metrics/MethodLength
40
- payment_attributes_structure.merge(
41
- {
42
- return_success_url: return_success_url,
43
- return_failure_url: return_failure_url,
44
- consumer_reference: consumer_reference,
45
- national_id: national_id,
46
- birth_date: birth_date,
47
- customer_email: customer_email,
48
- billing_address: billing_address_parameters_structure,
49
- shipping_address: shipping_address_parameters_structure
50
- }
51
- )
38
+ def payment_transaction_structure
39
+ {
40
+ return_success_url: return_success_url,
41
+ return_failure_url: return_failure_url,
42
+ consumer_reference: consumer_reference,
43
+ national_id: national_id,
44
+ birth_date: birth_date,
45
+ customer_email: customer_email,
46
+ billing_address: billing_address_parameters_structure,
47
+ shipping_address: shipping_address_parameters_structure
48
+ }
52
49
  end
53
50
 
54
51
  end
@@ -0,0 +1,33 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Base
5
+ module NonFinancial
6
+ module Kyc
7
+ # Base Request class for KYC Non-Financial API services
8
+ class Base < Api::Requests::Base::Versioned
9
+
10
+ # Constructor for the KYC Base Request
11
+ def initialize(configuration, builder_interface = Builder::JSON)
12
+ super(configuration, builder_interface)
13
+ end
14
+
15
+ # Initializes the request path and version
16
+ def init_configuration
17
+ super
18
+
19
+ init_kyc_service_configuration request_path: "api/#{version}/#{request_path}"
20
+ end
21
+
22
+ # Empty request structure
23
+ def request_structure
24
+ {}
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -5,14 +5,14 @@ module GenesisRuby
5
5
  # Base class used in the Reference transaction requests
6
6
  class Reference < Financial
7
7
 
8
- include Mixins::Requests::Financial::PaymentAttributes
9
8
  include Mixins::Requests::Financial::ReferenceAttributes
10
9
 
11
10
  protected
12
11
 
13
12
  def init_field_validations
13
+ super
14
+
14
15
  required_fields.push *%i[transaction_id reference_id amount currency]
15
- field_values.merge! currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase)
16
16
  end
17
17
 
18
18
  # Reference transaction request structure
@@ -24,7 +24,7 @@ module GenesisRuby
24
24
  def payment_transaction_structure
25
25
  {
26
26
  reference_id: reference_id
27
- }.merge payment_attributes_structure, reference_transaction_structure
27
+ }.merge reference_transaction_structure
28
28
  end
29
29
 
30
30
  end
@@ -0,0 +1,24 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Preauthorizations
6
+ # Incremental Authorize transaction type
7
+ class IncrementalAuthorize < Base::Reference
8
+
9
+ # Incremental Authorize transaction type
10
+ def transaction_type
11
+ Constants::Transactions::INCREMENTAL_AUTHORIZE
12
+ end
13
+
14
+ # Returns the transaction structure
15
+ def reference_transaction_structure
16
+ {}
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -10,6 +10,7 @@ module GenesisRuby
10
10
  class Authorize < Requests::Base::Financials::CreditCard
11
11
 
12
12
  include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::DigitalAssetTypeAttributes
13
14
  include Mixins::Requests::DocumentAttributes
14
15
  include Mixins::Requests::Financial::Business::BusinessAttributes
15
16
  include Mixins::Requests::Financial::Cards::FxRateAttributes
@@ -22,6 +23,7 @@ module GenesisRuby
22
23
  include Mixins::Requests::Financial::FundingAttributes
23
24
  include Mixins::Requests::Financial::GamingAttributes
24
25
  include Mixins::Requests::Financial::MotoAttributes
26
+ include Mixins::Requests::Financial::PreauthorizationAttributes
25
27
  include Mixins::Requests::Financial::ReferenceAttributes
26
28
  include Mixins::Requests::Financial::RiskAttributes
27
29
  include Mixins::Requests::Financial::ScaAttributes
@@ -53,6 +55,7 @@ module GenesisRuby
53
55
  super.merge(
54
56
  gaming: gaming,
55
57
  moto: moto,
58
+ preauthorization: preauthorization,
56
59
  crypto: crypto,
57
60
  customer_email: customer_email,
58
61
  customer_phone: customer_phone,
@@ -71,7 +74,8 @@ module GenesisRuby
71
74
  travel: travel_data_attributes_structure,
72
75
  funding: funding_attributes_structure,
73
76
  installment_plan_id: installment_plan_id,
74
- installment_plan_reference: installment_plan_reference
77
+ installment_plan_reference: installment_plan_reference,
78
+ digital_asset_type: digital_asset_type
75
79
  )
76
80
  end
77
81
 
@@ -10,6 +10,7 @@ module GenesisRuby
10
10
  class Authorize3d < Requests::Base::Financials::CreditCard
11
11
 
12
12
  include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::DigitalAssetTypeAttributes
13
14
  include Mixins::Requests::DocumentAttributes
14
15
  include Mixins::Requests::Financial::AsyncAttributes
15
16
  include Mixins::Requests::Financial::Business::BusinessAttributes
@@ -25,6 +26,7 @@ module GenesisRuby
25
26
  include Mixins::Requests::Financial::GamingAttributes
26
27
  include Mixins::Requests::Financial::MotoAttributes
27
28
  include Mixins::Requests::Financial::NotificationAttributes
29
+ include Mixins::Requests::Financial::PreauthorizationAttributes
28
30
  include Mixins::Requests::Financial::RiskAttributes
29
31
  include Mixins::Requests::Financial::ScaAttributes
30
32
  include Mixins::Requests::Financial::Threeds::Version2::CommonAttributes
@@ -67,6 +69,7 @@ module GenesisRuby
67
69
  return_failure_url: return_failure_url,
68
70
  gaming: gaming,
69
71
  moto: moto,
72
+ preauthorization: preauthorization,
70
73
  crypto: crypto,
71
74
  customer_email: customer_email,
72
75
  customer_phone: customer_phone,
@@ -86,7 +89,8 @@ module GenesisRuby
86
89
  travel: travel_data_attributes_structure,
87
90
  funding: funding_attributes_structure,
88
91
  installment_plan_id: installment_plan_id,
89
- installment_plan_reference: installment_plan_reference
92
+ installment_plan_reference: installment_plan_reference,
93
+ digital_asset_type: digital_asset_type
90
94
  )
91
95
  end
92
96
 
@@ -10,7 +10,6 @@ module GenesisRuby
10
10
  include Api::Mixins::Requests::CustomerAddress::BillingInfoAttributes
11
11
  include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
12
12
  include Api::Mixins::Requests::Financial::AsyncAttributes
13
- include Api::Mixins::Requests::Financial::PaymentAttributes
14
13
 
15
14
  protected
16
15
 
@@ -21,6 +20,8 @@ module GenesisRuby
21
20
 
22
21
  # Bancontact field validations
23
22
  def init_field_validations
23
+ super
24
+
24
25
  required_fields.push *%i[transaction_id amount currency return_success_url return_failure_url
25
26
  billing_country]
26
27
  field_values.merge! currency: 'EUR',
@@ -29,14 +30,12 @@ module GenesisRuby
29
30
 
30
31
  # Bancontact transaction structure
31
32
  def payment_transaction_structure
32
- payment_attributes_structure.merge(
33
- {
34
- return_success_url: return_success_url,
35
- return_failure_url: return_failure_url,
36
- billing_address: billing_address_parameters_structure,
37
- shipping_address: shipping_address_parameters_structure
38
- }
39
- )
33
+ {
34
+ return_success_url: return_success_url,
35
+ return_failure_url: return_failure_url,
36
+ billing_address: billing_address_parameters_structure,
37
+ shipping_address: shipping_address_parameters_structure
38
+ }
40
39
  end
41
40
 
42
41
  end
@@ -0,0 +1,39 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Cards
6
+ # Credits (also known as Credit Fund Transfer a.k.a. CFT) can be done with an initial reference transaction.
7
+ class Credit < Requests::Base::Reference
8
+
9
+ include Mixins::Requests::Financial::Cards::AccountOwnerAttributes
10
+ include Mixins::Requests::Financial::CustomerIdentificationAttributes
11
+ include Mixins::Requests::Financial::PurposeOfPaymentAttributes
12
+ include Mixins::Requests::Financial::SourceOfFundsAttributes
13
+ include Mixins::Requests::Financial::CryptoAttributes
14
+ include Mixins::Requests::DigitalAssetTypeAttributes
15
+
16
+ protected
17
+
18
+ # Credit transaction type
19
+ def transaction_type
20
+ Api::Constants::Transactions::CREDIT
21
+ end
22
+
23
+ # Reference transaction structure
24
+ def reference_transaction_structure
25
+ {
26
+ 'crypto' => crypto,
27
+ 'digital_asset_type' => digital_asset_type,
28
+ 'customer_identification' => customer_identification_attributes_structure,
29
+ 'account_owner' => account_owner_attributes_structure,
30
+ 'purpose_of_payment' => purpose_of_payment
31
+ }.merge source_of_funds_attributes_structure
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end