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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +78 -0
- data/Gemfile.lock +14 -14
- data/README.md +78 -0
- data/VERSION +1 -1
- data/lib/genesis_ruby/api/constants/currencies/iso4217.rb +6 -0
- data/lib/genesis_ruby/api/constants/non_financial/kyc/document_types.rb +49 -0
- data/lib/genesis_ruby/api/constants/non_financial/kyc/genders.rb +22 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/african_mobile_operators.rb +37 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_owner.rb +24 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_subtype.rb +24 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_type.rb +63 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/digital_asset_types.rb +31 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/externally_processed.rb +22 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/processing_type.rb +22 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/sca_exemptions.rb +25 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/iframe_targets.rb +26 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/purpose_of_payment.rb +136 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/source_of_funds.rb +34 -0
- data/lib/genesis_ruby/api/mixins/requests/digital_asset_type_attributes.rb +26 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/african_mobile_attributes.rb +30 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/beneficiary_attributes.rb +38 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_params_attributes.rb +36 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/customer_account_attributes.rb +21 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/customer_identification_attributes.rb +82 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/gift_cards_attributes.rb +26 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/payer_attributes.rb +65 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/preauthorization_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/purpose_of_payment_attributes.rb +29 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/source_of_funds_attributes.rb +38 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +1 -1
- data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/id_attributes.rb +28 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/tier_id_attributes.rb +28 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/customer_information_attributes.rb +62 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/mode_attributes.rb +24 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/card_data_attributes.rb +62 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/token_attributes.rb +23 -0
- data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/tokenization_attributes.rb +51 -0
- data/lib/genesis_ruby/api/request.rb +7 -0
- data/lib/genesis_ruby/api/requests/base/consumer.rb +24 -0
- data/lib/genesis_ruby/api/requests/base/financial.rb +10 -1
- data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +9 -9
- data/lib/genesis_ruby/api/requests/base/financials/south_american_payments.rb +11 -14
- data/lib/genesis_ruby/api/requests/base/non_financial/kyc/base.rb +33 -0
- data/lib/genesis_ruby/api/requests/base/reference.rb +3 -3
- data/lib/genesis_ruby/api/requests/financial/Preauthorizations/incremental_authorize.rb +24 -0
- data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +5 -1
- data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +5 -1
- data/lib/genesis_ruby/api/requests/financial/cards/bancontact.rb +8 -9
- data/lib/genesis_ruby/api/requests/financial/cards/credit.rb +39 -0
- data/lib/genesis_ruby/api/requests/financial/cards/payout.rb +72 -0
- data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cash_payments/cash.rb +13 -14
- data/lib/genesis_ruby/api/requests/financial/cash_payments/pix.rb +23 -25
- data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/payout.rb +52 -0
- data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/refund.rb +36 -0
- data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/sale.rb +55 -0
- data/lib/genesis_ruby/api/requests/financial/gift_cards/fashioncheque.rb +47 -0
- data/lib/genesis_ruby/api/requests/financial/gift_cards/intersolve.rb +46 -0
- data/lib/genesis_ruby/api/requests/financial/gift_cards/tcs.rb +47 -0
- data/lib/genesis_ruby/api/requests/financial/mobile/african_mobile_sale.rb +81 -0
- data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +18 -20
- data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +20 -24
- data/lib/genesis_ruby/api/requests/financial/mobile/russian_mobile_sale.rb +55 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/banco_do_brasil.rb +11 -14
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/eps.rb +9 -10
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/idebit/pay_in.rb +11 -18
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_in.rb +61 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_out.rb +24 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/multibanco.rb +48 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/my_bank.rb +47 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +17 -18
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_out.rb +33 -38
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/pay_u.rb +61 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/post_finance.rb +53 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/safety_pay.rb +57 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/sofort.rb +63 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/trustly_sale.rb +75 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/upi.rb +54 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/wechat.rb +11 -14
- data/lib/genesis_ruby/api/requests/financial/sdd/sale.rb +13 -17
- data/lib/genesis_ruby/api/requests/financial/void.rb +12 -5
- data/lib/genesis_ruby/api/requests/financial/vouchers/neosurf.rb +61 -0
- data/lib/genesis_ruby/api/requests/financial/wallets/alipay.rb +10 -13
- data/lib/genesis_ruby/api/requests/financial/wallets/pay_pal.rb +18 -20
- data/lib/genesis_ruby/api/requests/non_financial/consumers/create.rb +44 -0
- data/lib/genesis_ruby/api/requests/non_financial/consumers/disable.rb +40 -0
- data/lib/genesis_ruby/api/requests/non_financial/consumers/enable.rb +40 -0
- data/lib/genesis_ruby/api/requests/non_financial/consumers/get_cards.rb +40 -0
- data/lib/genesis_ruby/api/requests/non_financial/consumers/retrieve.rb +40 -0
- data/lib/genesis_ruby/api/requests/non_financial/consumers/update.rb +45 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/date_range.rb +82 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/transaction.rb +52 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/date_range.rb +108 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/transaction.rb +52 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/date_range.rb +81 -0
- data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/transaction.rb +52 -0
- data/lib/genesis_ruby/api/requests/non_financial/fx/get_rate.rb +55 -0
- data/lib/genesis_ruby/api/requests/non_financial/fx/get_rates.rb +53 -0
- data/lib/genesis_ruby/api/requests/non_financial/fx/get_tier.rb +53 -0
- data/lib/genesis_ruby/api/requests/non_financial/fx/get_tiers.rb +35 -0
- data/lib/genesis_ruby/api/requests/non_financial/fx/search_rate.rb +61 -0
- data/lib/genesis_ruby/api/requests/non_financial/kyc/consumer_registration/create.rb +99 -0
- data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/date_range.rb +68 -0
- data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/post_date_range.rb +72 -0
- data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/transaction.rb +48 -0
- data/lib/genesis_ruby/api/requests/non_financial/sca/checker.rb +77 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/cryptogram.rb +46 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/delete_token.rb +43 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/detokenize.rb +43 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/get_card.rb +43 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/tokenize.rb +45 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/update_token.rb +45 -0
- data/lib/genesis_ruby/api/requests/non_financial/tokenization/validate_token.rb +43 -0
- data/lib/genesis_ruby/api/requests/wpf/create.rb +3 -1
- data/lib/genesis_ruby/configuration.rb +4 -0
- data/lib/genesis_ruby/dependencies.rb +2 -0
- data/lib/genesis_ruby/utils/country.rb +272 -0
- data/lib/genesis_ruby/utils/formatters/response/formats/timestamp.rb +1 -1
- data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +1 -4
- data/lib/genesis_ruby/version.rb +1 -1
- metadata +87 -2
data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/customer_information_attributes.rb
ADDED
@@ -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
|
data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/tokenization_attributes.rb
ADDED
@@ -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
|
-
|
42
|
-
|
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
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|