genesis_ruby 0.1.7 → 0.1.8
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 +10 -0
- data/Gemfile.lock +44 -38
- data/README.md +217 -0
- data/VERSION +1 -1
- data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/apple_pay/payment_subtypes.rb +29 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/google_pay/payment_subtypes.rb +29 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/bank_code_currencies.rb +128 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/bank_codes.rb +600 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/payment_types.rb +36 -0
- data/lib/genesis_ruby/api/mixins/requests/attribute_validation.rb +138 -4
- data/lib/genesis_ruby/api/mixins/requests/birth_date_attributes.rb +22 -0
- data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +1 -1
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/credit_card_attributes.rb +7 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb +21 -20
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_indian_card_attributes.rb +15 -39
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb +15 -9
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_attributes.rb +9 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/mobile/apple_pay_token_attributes.rb +51 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/mobile/google_pay_token_attributes.rb +50 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/virtual_payment_address_attributes.rb +27 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/browser.rb +11 -22
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account.rb +81 -49
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/common_attributes.rb +23 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/control.rb +13 -26
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk.rb +21 -58
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase.rb +8 -11
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb +10 -10
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb +9 -0
- data/lib/genesis_ruby/api/request.rb +4 -2
- data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +6 -4
- data/lib/genesis_ruby/api/requests/base/reference.rb +3 -2
- data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +10 -2
- data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +19 -10
- data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +10 -2
- data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +19 -10
- data/lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb +2 -2
- data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +91 -0
- data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +108 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +157 -0
- data/lib/genesis_ruby/api/requests/financial/void.rb +2 -2
- data/lib/genesis_ruby/api/requests/non_financial/reconcile/date_range.rb +2 -2
- data/lib/genesis_ruby/api/requests/wpf/create.rb +11 -15
- data/lib/genesis_ruby/api/requests/wpf/reconcile.rb +2 -2
- data/lib/genesis_ruby/utils/common.rb +26 -0
- data/lib/genesis_ruby/version.rb +1 -1
- metadata +15 -3
@@ -6,13 +6,15 @@ module GenesisRuby
|
|
6
6
|
module Requests
|
7
7
|
# Request Class attribute validations
|
8
8
|
# Reads the pre-set `validation_<attribute>` and perform validation on the fields
|
9
|
-
module AttributeValidation
|
9
|
+
module AttributeValidation # rubocop:disable Metrics/ModuleLength
|
10
10
|
|
11
11
|
protected
|
12
12
|
|
13
13
|
# Perform validation
|
14
14
|
def validate
|
15
|
-
validate_required_fields
|
15
|
+
validate_required_fields required_fields
|
16
|
+
validate_field_values field_values
|
17
|
+
validate_field_value_dependencies field_value_dependencies
|
16
18
|
end
|
17
19
|
|
18
20
|
# Required Fields Accessor
|
@@ -22,15 +24,41 @@ module GenesisRuby
|
|
22
24
|
|
23
25
|
# Required Fields Accessor
|
24
26
|
def required_fields=(value)
|
25
|
-
raise RequestError, 'Invalid value given for Required Fields! Allowed
|
27
|
+
raise RequestError, 'Invalid value given for Required Fields! Allowed: Array.' unless value.is_a? Array
|
26
28
|
|
27
29
|
@required_fields = value
|
28
30
|
end
|
29
31
|
|
32
|
+
# Field Values Accessor
|
33
|
+
def field_values
|
34
|
+
@field_values ||= {}
|
35
|
+
end
|
36
|
+
|
37
|
+
# Field Values Accessor
|
38
|
+
def field_values=(value)
|
39
|
+
raise RequestError, 'Invalid value given for Field Values! Allowed: Hash.' unless value.is_a? Hash
|
40
|
+
|
41
|
+
@field_values = value
|
42
|
+
end
|
43
|
+
|
44
|
+
# Field Value Dependencies Accessor
|
45
|
+
def field_value_dependencies
|
46
|
+
@field_value_dependencies ||= {}
|
47
|
+
end
|
48
|
+
|
49
|
+
# Field Value Dependencies Accessor
|
50
|
+
def field_value_dependencies=(value)
|
51
|
+
unless value.is_a? Hash
|
52
|
+
raise RequestError, 'Invalid value given for Required Field Conditional! Allowed: Hash.'
|
53
|
+
end
|
54
|
+
|
55
|
+
@field_value_dependencies = value
|
56
|
+
end
|
57
|
+
|
30
58
|
private
|
31
59
|
|
32
60
|
# Validated Required fields
|
33
|
-
def validate_required_fields
|
61
|
+
def validate_required_fields(required_fields)
|
34
62
|
required_fields.each do |field_name|
|
35
63
|
if null_or_empty_field?(field_name)
|
36
64
|
raise ParameterError, "Empty (nil) for required parameter: #{field_name}"
|
@@ -38,6 +66,41 @@ module GenesisRuby
|
|
38
66
|
end
|
39
67
|
end
|
40
68
|
|
69
|
+
# Validate Required Field Values
|
70
|
+
def validate_field_values(field_values)
|
71
|
+
field_values.each do |field_name, field_value|
|
72
|
+
# Allow optional attributes by bypassing null or empty field values
|
73
|
+
next if null_or_empty_field? field_name
|
74
|
+
|
75
|
+
# Validate against Array set of values
|
76
|
+
next if allowed_array field_name, field_value
|
77
|
+
|
78
|
+
# Validate against a value
|
79
|
+
allowed_value field_name, field_value
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Validate Required Field Conditional
|
84
|
+
# Validates if given field
|
85
|
+
def validate_field_value_dependencies(required_field_conditional) # rubocop:disable Metrics/MethodLength
|
86
|
+
required_field_conditional.each do |field_name, value_dependencies|
|
87
|
+
# Allow optional attributes
|
88
|
+
next if null_or_empty_field? field_name
|
89
|
+
|
90
|
+
unless value_dependencies.is_a?(Hash) || value_dependencies.is_a?(Array)
|
91
|
+
raise RequestError, 'Invalid value given for Required Field Conditional Dependencies! Allowed: Hash.'
|
92
|
+
end
|
93
|
+
|
94
|
+
if value_dependencies.is_a? Array
|
95
|
+
group_field_dependencies field_name, value_dependencies
|
96
|
+
|
97
|
+
next
|
98
|
+
end
|
99
|
+
|
100
|
+
loop_field_value_dependencies field_name, value_dependencies
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
41
104
|
# Validate if the given field_name is null or empty
|
42
105
|
def null_or_empty_field?(field_name)
|
43
106
|
field_value = __send__ field_name.to_sym
|
@@ -47,6 +110,77 @@ module GenesisRuby
|
|
47
110
|
field_value.nil? || field_value.empty?
|
48
111
|
end
|
49
112
|
|
113
|
+
# Validates Field accessor against allowed values
|
114
|
+
def allowed_array(field_name, allowed_values)
|
115
|
+
return nil unless allowed_values.is_a? Array
|
116
|
+
|
117
|
+
unless allowed_values.include?(__send__(field_name))
|
118
|
+
raise ParameterError, format(
|
119
|
+
'Parameter %{field} is set to %{field_value}, but expected to be one of (%{allowed})',
|
120
|
+
field: field_name,
|
121
|
+
field_value: __send__(field_name),
|
122
|
+
allowed: allowed_values.join(', ')
|
123
|
+
)
|
124
|
+
end
|
125
|
+
|
126
|
+
true
|
127
|
+
end
|
128
|
+
|
129
|
+
# Validates Field accessor against allowed value
|
130
|
+
def allowed_value(field_name, allowed_value)
|
131
|
+
return nil if __send__(field_name) == allowed_value
|
132
|
+
|
133
|
+
raise ParameterError, format(
|
134
|
+
'Required parameter %{field_name} is set to %{field_value}, but expected to be %{allowed_value}',
|
135
|
+
field_name: field_name,
|
136
|
+
field_value: __send__(field_name),
|
137
|
+
allowed_value: allowed_value
|
138
|
+
)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Validate if given dependencies based on the field value satisfy the request
|
142
|
+
def loop_field_value_dependencies(field_name, value_dependencies)
|
143
|
+
value_dependencies.each do |value_depend, dependencies|
|
144
|
+
next if __send__(field_name).to_s != value_depend.to_s
|
145
|
+
|
146
|
+
group_field_dependencies field_name, dependencies if dependencies.is_a? Array
|
147
|
+
group_field_value_dependencies field_name, dependencies if dependencies.is_a? Hash
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# Validates Group field dependencies
|
152
|
+
# Check if all of the given array of attributes are set (not null or empty fields)
|
153
|
+
def group_field_dependencies(field_name, fields)
|
154
|
+
fields.each do |field|
|
155
|
+
next unless null_or_empty_field? field
|
156
|
+
|
157
|
+
raise ParameterError, format(
|
158
|
+
'%{field_name} is depending on: %{field}, which is empty (null)!',
|
159
|
+
field_name: field_name,
|
160
|
+
field: field
|
161
|
+
)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
# Validates Group of attributes against given allowed values
|
166
|
+
def group_field_value_dependencies(field_name, dependencies) # rubocop:disable Metrics/MethodLength
|
167
|
+
dependencies.each do |field_depend, allowed_values|
|
168
|
+
next if null_or_empty_field? field_depend
|
169
|
+
|
170
|
+
next if allowed_values.include? __send__(field_depend)
|
171
|
+
|
172
|
+
raise ParameterError, format(
|
173
|
+
'%{field} with value %{field_value} is depending on: %{field_depend}, which is ' \
|
174
|
+
'expected to be one of (%{allowed})! Please refer the official documentation for %{trx_type} type.',
|
175
|
+
field: field_name,
|
176
|
+
field_value: __send__(field_name),
|
177
|
+
field_depend: field_depend,
|
178
|
+
allowed: allowed_values.join(', '),
|
179
|
+
trx_type: self.class.name
|
180
|
+
)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
50
184
|
end
|
51
185
|
end
|
52
186
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
# Birth Date Attributes mixin
|
6
|
+
module BirthDateAttributes
|
7
|
+
|
8
|
+
# Birth Date Accessor
|
9
|
+
def birth_date
|
10
|
+
@birth_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
11
|
+
end
|
12
|
+
|
13
|
+
# Birth Date Accessor
|
14
|
+
def birth_date=(value)
|
15
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -13,7 +13,7 @@ module GenesisRuby
|
|
13
13
|
|
14
14
|
# Email of the customer
|
15
15
|
def customer_email=(value)
|
16
|
-
raise GenesisRuby::ParameterError unless value =~ /\A.+@.+\..+\Z/
|
16
|
+
raise GenesisRuby::ParameterError unless value.nil? || value =~ /\A.+@.+\..+\Z/
|
17
17
|
|
18
18
|
@customer_email = value
|
19
19
|
end
|
@@ -11,6 +11,13 @@ module GenesisRuby
|
|
11
11
|
|
12
12
|
protected
|
13
13
|
|
14
|
+
# Credit Card Fields validation structure
|
15
|
+
def required_cc_fields_conditional
|
16
|
+
{
|
17
|
+
card_number: %i[card_holder expiration_month expiration_year]
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
14
21
|
# Credit Card Attributes Structure
|
15
22
|
def credit_card_attributes_structure
|
16
23
|
{
|
data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb
CHANGED
@@ -15,26 +15,8 @@ module GenesisRuby
|
|
15
15
|
|
16
16
|
include Recurring::ManagedRecurringIndianCardAttributes
|
17
17
|
|
18
|
-
attr_reader :
|
19
|
-
|
20
|
-
attr_accessor :managed_recurring_amount
|
21
|
-
|
22
|
-
# This indicates that the gateway will automatically manage the subsequent recurring transactions.
|
23
|
-
def managed_recurring_mode=(value)
|
24
|
-
allowed_options attribute: __method__,
|
25
|
-
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ManagedRecurring::
|
26
|
-
Modes.all,
|
27
|
-
value: value
|
28
|
-
end
|
29
|
-
|
30
|
-
# The interval type for the period: days or months. The default value is days
|
31
|
-
def managed_recurring_interval=(value)
|
32
|
-
allowed_options attribute: __method__,
|
33
|
-
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ManagedRecurring::
|
34
|
-
Intervals.all,
|
35
|
-
value: value,
|
36
|
-
allow_empty: true
|
37
|
-
end
|
18
|
+
attr_reader :managed_recurring_time_of_day, :managed_recurring_period, :managed_recurring_max_count
|
19
|
+
attr_accessor :managed_recurring_amount, :managed_recurring_mode, :managed_recurring_interval
|
38
20
|
|
39
21
|
# Specifies the date of the first recurring event in the future
|
40
22
|
# default value is date of creation + period.
|
@@ -67,6 +49,25 @@ module GenesisRuby
|
|
67
49
|
|
68
50
|
protected
|
69
51
|
|
52
|
+
# Managed Recurring field values validation structure
|
53
|
+
def managed_recurring_field_values
|
54
|
+
{
|
55
|
+
managed_recurring_mode: Api::Constants::Transactions::Parameters::ManagedRecurring::Modes.all,
|
56
|
+
managed_recurring_interval: Api::Constants::Transactions::Parameters::ManagedRecurring::Intervals
|
57
|
+
.all
|
58
|
+
}.merge managed_recurring_indian_card_field_values
|
59
|
+
end
|
60
|
+
|
61
|
+
# Managed Recurring Field validation structure
|
62
|
+
def required_recurring_managed_type_field_conditional
|
63
|
+
{
|
64
|
+
recurring_type: Hash[
|
65
|
+
Api::Constants::Transactions::Parameters::Recurring::Types::MANAGED,
|
66
|
+
%i[managed_recurring_mode]
|
67
|
+
]
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
70
71
|
# Managed Recurring attributes structure
|
71
72
|
def managed_recurring_attributes_structure
|
72
73
|
amount = managed_recurring_amount
|
@@ -14,49 +14,25 @@ module GenesisRuby
|
|
14
14
|
# India (RBI) regulations.
|
15
15
|
module ManagedRecurringIndianCardAttributes
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
attr_accessor :managed_recurring_registration_reference_number, :managed_recurring_max_amount,
|
18
|
+
:managed_recurring_payment_type, :managed_recurring_amount_type,
|
19
|
+
:managed_recurring_frequency, :managed_recurring_validated
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
# Payment Type of the current recurring transaction
|
23
|
-
def managed_recurring_payment_type=(value)
|
24
|
-
allowed_options attribute: __method__,
|
25
|
-
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ManagedRecurring::
|
26
|
-
PaymentTypes.all,
|
27
|
-
value: value.to_s,
|
28
|
-
allow_empty: true
|
29
|
-
end
|
30
|
-
|
31
|
-
# Amount Type of the current recurring transaction
|
32
|
-
def managed_recurring_amount_type=(value)
|
33
|
-
allowed_options attribute: __method__,
|
34
|
-
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ManagedRecurring::
|
35
|
-
AmountTypes.all,
|
36
|
-
value: value.to_s,
|
37
|
-
allow_empty: true
|
38
|
-
end
|
39
|
-
|
40
|
-
# Frequencies of the Frequency of the subsequent transactions
|
41
|
-
def managed_recurring_frequency=(value)
|
42
|
-
allowed_options attribute: __method__,
|
43
|
-
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ManagedRecurring::
|
44
|
-
Frequencies.all,
|
45
|
-
value: value.to_s,
|
46
|
-
allow_empty: true
|
47
|
-
end
|
21
|
+
protected
|
48
22
|
|
49
|
-
#
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
23
|
+
# Managed Recurring Indian Card field values validation structure
|
24
|
+
def managed_recurring_indian_card_field_values
|
25
|
+
{
|
26
|
+
managed_recurring_payment_type: Api::Constants::Transactions::Parameters::ManagedRecurring::
|
27
|
+
PaymentTypes.all,
|
28
|
+
managed_recurring_amount_type: Api::Constants::Transactions::Parameters::ManagedRecurring::
|
29
|
+
AmountTypes.all,
|
30
|
+
managed_recurring_frequency: Api::Constants::Transactions::Parameters::ManagedRecurring::
|
31
|
+
Frequencies.all,
|
32
|
+
managed_recurring_validated: [true, false]
|
33
|
+
}
|
56
34
|
end
|
57
35
|
|
58
|
-
protected
|
59
|
-
|
60
36
|
# Managed Recurring Indian Card attributes structure
|
61
37
|
def managed_recurring_indian_card_attributes_structure
|
62
38
|
max_amount = managed_recurring_max_amount
|
data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb
CHANGED
@@ -10,18 +10,24 @@ module GenesisRuby
|
|
10
10
|
# Recurring Type Attributes
|
11
11
|
module RecurringTypeAttributes
|
12
12
|
|
13
|
-
|
13
|
+
attr_accessor :recurring_type
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
protected
|
16
|
+
|
17
|
+
# Recurring Type for Initial transaction types validation structure
|
18
|
+
def recurring_type_initial_field_values_validation_structure
|
19
|
+
{
|
20
|
+
recurring_type: Api::Constants::Transactions::Parameters::Recurring::Types.all -
|
21
|
+
[Api::Constants::Transactions::Parameters::Recurring::Types::SUBSEQUENT]
|
22
|
+
}
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
+
# Recurring Type Field Value validation structure
|
26
|
+
def recurring_type_field_values_validation_structure
|
27
|
+
{
|
28
|
+
recurring_type: Api::Constants::Transactions::Parameters::Recurring::Types.all
|
29
|
+
}
|
30
|
+
end
|
25
31
|
|
26
32
|
# Minimum required fields with recurring_type subsequent request
|
27
33
|
def recurring_type_subsequent_required_request_attributes
|
@@ -21,6 +21,15 @@ module GenesisRuby
|
|
21
21
|
|
22
22
|
protected
|
23
23
|
|
24
|
+
# Tokenization Attributes validation structure
|
25
|
+
def required_tokenization_fields_conditional
|
26
|
+
{
|
27
|
+
token: %i[consumer_id customer_email],
|
28
|
+
remember_card: { true => %i[customer_email card_number] },
|
29
|
+
consumer_id: %i[customer_email]
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
24
33
|
# Tokenization Attributes Structure
|
25
34
|
def tokenization_attributes_structure
|
26
35
|
{
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module Mobile
|
9
|
+
# Apple Pay Token Attributes mixin
|
10
|
+
module ApplePayTokenAttributes
|
11
|
+
|
12
|
+
attr_accessor :token_version, :token_data, :token_signature,
|
13
|
+
:token_ephemeral_public_key, :token_public_key_hash, :token_transaction_id,
|
14
|
+
:token_display_name, :token_network, :token_type, :token_transaction_identifier,
|
15
|
+
:token_application_data, :token_wrapped_key
|
16
|
+
|
17
|
+
# Apple Pay token structure
|
18
|
+
def payment_token_structure # rubocop:disable Metrics/MethodLength
|
19
|
+
structure = {
|
20
|
+
paymentData: {
|
21
|
+
version: token_version,
|
22
|
+
data: token_data,
|
23
|
+
signature: token_signature,
|
24
|
+
header: {
|
25
|
+
applicationData: token_application_data,
|
26
|
+
ephemeralPublicKey: token_ephemeral_public_key,
|
27
|
+
wrappedKey: token_wrapped_key,
|
28
|
+
publicKeyHash: token_public_key_hash,
|
29
|
+
transactionId: token_transaction_id
|
30
|
+
}
|
31
|
+
},
|
32
|
+
paymentMethod: {
|
33
|
+
displayName: token_display_name,
|
34
|
+
network: token_network,
|
35
|
+
type: token_type
|
36
|
+
},
|
37
|
+
transactionIdentifier: token_transaction_identifier
|
38
|
+
}
|
39
|
+
|
40
|
+
GenesisRuby::Utils::Common.deep_compact!(structure)
|
41
|
+
|
42
|
+
structure.to_json
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module Mobile
|
9
|
+
# Google Pay Token Attributes
|
10
|
+
module GooglePayTokenAttributes
|
11
|
+
|
12
|
+
attr_accessor :token_signature, :token_signed_key, :token_protocol_version, :token_signed_message
|
13
|
+
|
14
|
+
# Google Pay Token Signatures accessor
|
15
|
+
def token_signatures
|
16
|
+
@token_signatures ||= []
|
17
|
+
end
|
18
|
+
|
19
|
+
# Google Pay Token Signatures accessor
|
20
|
+
def token_signatures=(value)
|
21
|
+
if !value.is_a?(Array) && !value.nil?
|
22
|
+
raise InvalidArgumentError, 'Invalid value given for Token Signatures. Accept array'
|
23
|
+
end
|
24
|
+
|
25
|
+
@token_signatures = value
|
26
|
+
end
|
27
|
+
|
28
|
+
def google_pay_token_structure # rubocop:disable Metrics/MethodLength
|
29
|
+
structure = {
|
30
|
+
signature: token_signature,
|
31
|
+
protocolVersion: token_protocol_version,
|
32
|
+
signedMessage: token_signed_message,
|
33
|
+
intermediateSigningKey: {
|
34
|
+
signedKey: token_signed_key,
|
35
|
+
signatures: token_signatures
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
GenesisRuby::Utils::Common.deep_compact!(structure)
|
40
|
+
|
41
|
+
structure.to_json
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
module Financial
|
6
|
+
module OnlineBankingPayments
|
7
|
+
# Virtual Payment Address Attributes
|
8
|
+
module VirtualPaymentAddressAttributes
|
9
|
+
|
10
|
+
attr_reader :virtual_payment_address
|
11
|
+
|
12
|
+
# Virtual Payment Address (VPA) of the customer, format: someone@bank
|
13
|
+
def virtual_payment_address=(value)
|
14
|
+
@virtual_payment_address = value.to_s
|
15
|
+
|
16
|
+
return if value.to_s.empty? || value =~ /\A.+@.+\Z/
|
17
|
+
|
18
|
+
raise InvalidArgumentError, 'Virtual Payment Address has invalid format. Correct format: someone@bank'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -11,10 +11,10 @@ module GenesisRuby
|
|
11
11
|
# Mixin ThreedsV2 Browser Attributes
|
12
12
|
module Browser
|
13
13
|
|
14
|
-
attr_reader :threeds_v2_browser_accept_header, :
|
15
|
-
:threeds_v2_browser_language, :threeds_v2_browser_color_depth,
|
14
|
+
attr_reader :threeds_v2_browser_accept_header, :threeds_v2_browser_language,
|
16
15
|
:threeds_v2_browser_screen_height, :threeds_v2_browser_screen_width,
|
17
16
|
:threeds_v2_browser_time_zone_offset, :threeds_v2_browser_user_agent
|
17
|
+
attr_accessor :threeds_v2_browser_color_depth, :threeds_v2_browser_java_enabled
|
18
18
|
|
19
19
|
# Exact content of the HTTP accept headers as sent to the 3DS Requester from the Cardholder browser
|
20
20
|
def threeds_v2_browser_accept_header=(value)
|
@@ -26,17 +26,6 @@ module GenesisRuby
|
|
26
26
|
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 8
|
27
27
|
end
|
28
28
|
|
29
|
-
# Value representing the bit depth of the colour palette for displaying images, in bits per pixel
|
30
|
-
def threeds_v2_browser_color_depth=(value)
|
31
|
-
allowed_depths = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
32
|
-
Browser::ColorDepths.all
|
33
|
-
|
34
|
-
allowed_options attribute: __method__,
|
35
|
-
allowed: allowed_depths,
|
36
|
-
value: value.to_s.empty? ? nil : value.to_i,
|
37
|
-
allow_empty: true
|
38
|
-
end
|
39
|
-
|
40
29
|
# Total height of the Cardholder's screen in pixels
|
41
30
|
def threeds_v2_browser_screen_height=(value)
|
42
31
|
parse_int attribute: __method__, value: value, allow_empty: true
|
@@ -47,15 +36,6 @@ module GenesisRuby
|
|
47
36
|
parse_int attribute: __method__, value: value, allow_empty: true
|
48
37
|
end
|
49
38
|
|
50
|
-
# Boolean that represents the ability of the cardholder browser to execute Java
|
51
|
-
def threeds_v2_browser_java_enabled=(value)
|
52
|
-
allowed_options attribute: __method__,
|
53
|
-
allowed: [true, false],
|
54
|
-
value: value,
|
55
|
-
allow_empty: true,
|
56
|
-
error_message: 'Accepts only boolean values'
|
57
|
-
end
|
58
|
-
|
59
39
|
# Time difference between UTC time and the Cardholder browser local time, in minutes
|
60
40
|
def threeds_v2_browser_time_zone_offset=(value)
|
61
41
|
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 5
|
@@ -68,6 +48,15 @@ module GenesisRuby
|
|
68
48
|
|
69
49
|
protected
|
70
50
|
|
51
|
+
# Browser filed validations structure
|
52
|
+
def threeds_browser_field_validations
|
53
|
+
{
|
54
|
+
threeds_v2_browser_color_depth: Api::Constants::Transactions::Parameters::Threeds::Version2::
|
55
|
+
Browser::ColorDepths.all,
|
56
|
+
threeds_v2_browser_java_enabled: [true, false]
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
71
60
|
# Request Browser Attributes structure
|
72
61
|
def browser_attributes
|
73
62
|
{
|