genesis_ruby 0.2.4 → 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 +38 -0
- data/Gemfile.lock +14 -14
- data/README.md +38 -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/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/cards/tokenization_params_attributes.rb +36 -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/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/request.rb +7 -0
- data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +4 -2
- data/lib/genesis_ruby/api/requests/base/non_financial/kyc/base.rb +33 -0
- data/lib/genesis_ruby/api/requests/base/reference.rb +1 -2
- 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/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/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/russian_mobile_sale.rb +55 -0
- data/lib/genesis_ruby/api/requests/financial/vouchers/neosurf.rb +61 -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/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/tokenization/cryptogram.rb +5 -2
- 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 +1 -0
- data/lib/genesis_ruby/utils/country.rb +272 -0
- data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +1 -4
- data/lib/genesis_ruby/version.rb +1 -1
- metadata +46 -2
@@ -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,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
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Requests
|
4
|
+
module NonFinancial
|
5
|
+
module Fx
|
6
|
+
# This call is used to return all rates for Tier
|
7
|
+
class GetRates < Base::Versioned
|
8
|
+
|
9
|
+
include Api::Mixins::Requests::NonFinancial::Fx::TierIdAttributes
|
10
|
+
|
11
|
+
# Get Rates initialization
|
12
|
+
def initialize(configuration, _builder_interface = nil)
|
13
|
+
super configuration
|
14
|
+
|
15
|
+
self.request_path = 'fx/tiers/:tier_id/rates'
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
# Override default Versioned Network configuration
|
21
|
+
def init_configuration
|
22
|
+
super
|
23
|
+
|
24
|
+
init_get_configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
# Fetch request field validations
|
28
|
+
def init_field_validations
|
29
|
+
super
|
30
|
+
|
31
|
+
required_fields.push *tier_id_required_fields
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get Rates request structure
|
35
|
+
def request_structure
|
36
|
+
{}
|
37
|
+
end
|
38
|
+
|
39
|
+
# Override API endpoint with provided ID
|
40
|
+
def process_request_parameters
|
41
|
+
super
|
42
|
+
|
43
|
+
request_path.sub!(':tier_id', tier_id)
|
44
|
+
|
45
|
+
init_api_gateway_configuration request_path: "#{version}/#{request_path}", include_token: false
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,53 @@
|
|
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 Tier for your merchant
|
7
|
+
class GetTier < Base::Versioned
|
8
|
+
|
9
|
+
include Api::Mixins::Requests::NonFinancial::Fx::IdAttributes
|
10
|
+
|
11
|
+
# Get Tier initialization
|
12
|
+
def initialize(configuration, _builder_interface = nil)
|
13
|
+
super configuration
|
14
|
+
|
15
|
+
self.request_path = 'fx/tiers/:id'
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
# Override default Versioned Network configuration
|
21
|
+
def init_configuration
|
22
|
+
super
|
23
|
+
|
24
|
+
init_get_configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
# Fetch request field validations
|
28
|
+
def init_field_validations
|
29
|
+
super
|
30
|
+
|
31
|
+
required_fields.push *id_required_fields
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get Tier request structure
|
35
|
+
def request_structure
|
36
|
+
{}
|
37
|
+
end
|
38
|
+
|
39
|
+
# Override API endpoint with provided ID
|
40
|
+
def process_request_parameters
|
41
|
+
super
|
42
|
+
|
43
|
+
request_path.sub!(':id', id)
|
44
|
+
|
45
|
+
init_api_gateway_configuration request_path: "#{version}/#{request_path}", include_token: false
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Requests
|
4
|
+
module NonFinancial
|
5
|
+
module Fx
|
6
|
+
# This call is used to return all Tiers that are related to your account
|
7
|
+
class GetTiers < Base::Versioned
|
8
|
+
|
9
|
+
# Get Tiers initialization
|
10
|
+
def initialize(configuration, _builder_interface = nil)
|
11
|
+
super configuration
|
12
|
+
|
13
|
+
self.request_path = 'fx/tiers'
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
# Override default Versioned Network configuration
|
19
|
+
def init_configuration
|
20
|
+
super
|
21
|
+
|
22
|
+
init_get_configuration
|
23
|
+
end
|
24
|
+
|
25
|
+
# Get Tiers request structure
|
26
|
+
def request_structure
|
27
|
+
{}
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,61 @@
|
|
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 by currency pair
|
7
|
+
class SearchRate < Base::Versioned
|
8
|
+
|
9
|
+
include Api::Mixins::Requests::NonFinancial::Fx::TierIdAttributes
|
10
|
+
|
11
|
+
attr_writer :source_currency, :target_currency
|
12
|
+
|
13
|
+
# Search Rate initialization
|
14
|
+
def initialize(configuration, _builder_interface = nil)
|
15
|
+
super configuration
|
16
|
+
|
17
|
+
self.request_path = 'fx/tiers/:tier_id/rates/search'
|
18
|
+
end
|
19
|
+
|
20
|
+
# Source currency
|
21
|
+
def source_currency
|
22
|
+
@source_currency.to_s.upcase
|
23
|
+
end
|
24
|
+
|
25
|
+
# Target currency
|
26
|
+
def target_currency
|
27
|
+
@target_currency.to_s.upcase
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
# Fetch request field validations
|
33
|
+
def init_field_validations
|
34
|
+
super
|
35
|
+
|
36
|
+
required_fields.push *tier_id_required_fields, *%i[source_currency target_currency]
|
37
|
+
end
|
38
|
+
|
39
|
+
# Search Rate request structure
|
40
|
+
def request_structure
|
41
|
+
{
|
42
|
+
source_currency: source_currency,
|
43
|
+
target_currency: target_currency
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
# Override API endpoint with provided ID
|
48
|
+
def process_request_parameters
|
49
|
+
super
|
50
|
+
|
51
|
+
request_path.sub!(':tier_id', tier_id)
|
52
|
+
|
53
|
+
init_api_gateway_configuration request_path: "#{version}/#{request_path}", include_token: false
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Requests
|
4
|
+
module NonFinancial
|
5
|
+
module Kyc
|
6
|
+
module ConsumerRegistration
|
7
|
+
# Create Consumer Registration Request class for KYC Non-Financial API services
|
8
|
+
class Create < Api::Requests::Base::NonFinancial::Kyc::Base
|
9
|
+
|
10
|
+
include Api::Mixins::Requests::NonFinancial::Kyc::CustomerInformationAttributes
|
11
|
+
|
12
|
+
attr_accessor :session_id, :customer_unique_id, :transaction_unique_id, :customer_phone_number,
|
13
|
+
:service_language, :security_code, :service_type, :customer_username,
|
14
|
+
:customer_registration_date, :customer_registration_ip_address,
|
15
|
+
:customer_registration_device_id, :third_party_device_id, :device_fingerprint,
|
16
|
+
:bonus_code, :bonus_submission_date, :bonus_amount, :merchant_website,
|
17
|
+
:how_did_you_hear, :affiliate_id, :rule_context
|
18
|
+
attr_writer :profile_action_type, :device_fingerprint_type, :profile_current_status, :industry_type
|
19
|
+
|
20
|
+
# Initializes the Create Consumer Registration Request
|
21
|
+
def initialize(configuration, _builder_interface = nil)
|
22
|
+
super configuration
|
23
|
+
|
24
|
+
self.request_path = 'create_consumer'
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns device_fingerprint_type as an integer
|
28
|
+
def device_fingerprint_type
|
29
|
+
@device_fingerprint_type&.to_i
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns profile_action_type as an integer
|
33
|
+
def profile_action_type
|
34
|
+
@profile_action_type&.to_i
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns profile_current_status as an integer
|
38
|
+
def profile_current_status
|
39
|
+
@profile_current_status&.to_i
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns industry_type as an integer
|
43
|
+
def industry_type
|
44
|
+
@industry_type&.to_i
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
# Sets the request field validations
|
50
|
+
def init_field_validations # rubocop:disable Metrics/MethodLength
|
51
|
+
super
|
52
|
+
|
53
|
+
required_fields.push *%i[
|
54
|
+
customer_information_structure
|
55
|
+
customer_unique_id
|
56
|
+
customer_registration_date
|
57
|
+
customer_registration_ip_address
|
58
|
+
] + customer_information_required_fields
|
59
|
+
|
60
|
+
field_values.merge! device_fingerprint_type: [1, 2, 3],
|
61
|
+
profile_action_type: [1, 2],
|
62
|
+
profile_current_status: [0, 1, 2, 3],
|
63
|
+
industry_type: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
64
|
+
field_values.merge! customer_information_required_field_values
|
65
|
+
end
|
66
|
+
|
67
|
+
# Defines the request structure
|
68
|
+
def request_structure # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
69
|
+
{
|
70
|
+
session_id: session_id,
|
71
|
+
customer_username: customer_username,
|
72
|
+
customer_unique_id: customer_unique_id,
|
73
|
+
customer_registration_date: customer_registration_date,
|
74
|
+
customer_registration_ip_address: customer_registration_ip_address,
|
75
|
+
customer_registration_device_id: customer_registration_device_id,
|
76
|
+
customer_information: customer_information_structure,
|
77
|
+
third_party_device_id: third_party_device_id,
|
78
|
+
device_fingerprint: device_fingerprint,
|
79
|
+
device_fingerprint_type: device_fingerprint_type,
|
80
|
+
profile_action_type: profile_action_type,
|
81
|
+
profile_current_status: profile_current_status,
|
82
|
+
bonus_code: bonus_code,
|
83
|
+
bonus_submission_date: bonus_submission_date,
|
84
|
+
bonus_amount: bonus_amount,
|
85
|
+
merchant_website: merchant_website,
|
86
|
+
industry_type: industry_type,
|
87
|
+
how_did_you_hear: how_did_you_hear,
|
88
|
+
affiliate_id: affiliate_id,
|
89
|
+
rule_context: rule_context
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -9,6 +9,8 @@ module GenesisRuby
|
|
9
9
|
include Api::Mixins::Requests::NonFinancial::Tokenization::TokenAttributes
|
10
10
|
include Api::Mixins::Requests::NonFinancial::Tokenization::TokenizationAttributes
|
11
11
|
|
12
|
+
attr_accessor :transaction_reference
|
13
|
+
|
12
14
|
def initialize(configuration, builder_interface = Builder::XML)
|
13
15
|
super configuration, builder_interface
|
14
16
|
|
@@ -21,7 +23,7 @@ module GenesisRuby
|
|
21
23
|
def init_field_validations
|
22
24
|
super
|
23
25
|
|
24
|
-
required_fields.push *tokenization_required_fields, *%i[token]
|
26
|
+
required_fields.push *tokenization_required_fields, *%i[token transaction_reference]
|
25
27
|
end
|
26
28
|
|
27
29
|
# API Request structure
|
@@ -29,7 +31,8 @@ module GenesisRuby
|
|
29
31
|
{
|
30
32
|
cryptogram_request: tokenization_attributes_structure.merge(
|
31
33
|
{
|
32
|
-
token:
|
34
|
+
token: token,
|
35
|
+
transaction_reference: transaction_reference
|
33
36
|
}
|
34
37
|
)
|
35
38
|
}
|
@@ -11,6 +11,7 @@ module GenesisRuby
|
|
11
11
|
class Create < Request # rubocop:disable Metrics/ClassLength
|
12
12
|
|
13
13
|
include Mixins::Requests::AddressInfoAttributes
|
14
|
+
include Mixins::Requests::DigitalAssetTypeAttributes
|
14
15
|
include Mixins::Requests::Financial::AsyncAttributes
|
15
16
|
include Mixins::Requests::Financial::Business::BusinessAttributes
|
16
17
|
include Mixins::Requests::Financial::Cards::AccountOwnerAttributes
|
@@ -171,7 +172,8 @@ module GenesisRuby
|
|
171
172
|
account_owner: account_owner_attributes_structure,
|
172
173
|
pay_later: pay_later,
|
173
174
|
reminders: pay_later ? reminders_structure : [],
|
174
|
-
funding: funding_attributes_structure
|
175
|
+
funding: funding_attributes_structure,
|
176
|
+
digital_asset_type: digital_asset_type
|
175
177
|
}
|
176
178
|
}
|
177
179
|
end
|
@@ -196,6 +196,10 @@ module GenesisRuby
|
|
196
196
|
api_service: {
|
197
197
|
GenesisRuby::Api::Constants::Environments::PRODUCTION => 'prod.api.',
|
198
198
|
GenesisRuby::Api::Constants::Environments::STAGING => 'staging.api.'
|
199
|
+
},
|
200
|
+
kyc_service: {
|
201
|
+
GenesisRuby::Api::Constants::Environments::PRODUCTION => 'prod.kyc.',
|
202
|
+
GenesisRuby::Api::Constants::Environments::STAGING => 'staging.kyc.'
|
199
203
|
}
|
200
204
|
}
|
201
205
|
end
|
@@ -25,6 +25,7 @@ require 'genesis_ruby/api/requests/base/consumer'
|
|
25
25
|
require 'genesis_ruby/api/requests/financial/sdd/sale'
|
26
26
|
require 'genesis_ruby/api/requests/base/graphql'
|
27
27
|
require 'genesis_ruby/api/notification'
|
28
|
+
require 'genesis_ruby/api/requests/base/non_financial/kyc/base'
|
28
29
|
|
29
30
|
# Load Financial and Non Financial API Requests
|
30
31
|
Dir["#{File.dirname(__FILE__)}/api/requests/*financial/**/*.rb"].sort.each { |file| require file }
|