genesis_ruby 0.1.7 → 0.1.9
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 +41 -0
- data/Gemfile.lock +45 -39
- data/README.md +246 -0
- data/VERSION +1 -1
- data/lib/genesis_ruby/api/constants/transactions/parameters/cash_payments/company_types.rb +45 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/cash_payments/genders.rb +27 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/cash_payments/marital_statuses.rb +39 -0
- 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/constants/transactions/parameters/wallets/pay_pal/payment_types.rb +31 -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/billing_info_attributes.rb +11 -10
- data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +1 -1
- data/lib/genesis_ruby/api/mixins/requests/customer_address/shipping_info_attributes.rb +11 -10
- 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/consumer_identifier_attributes.rb +26 -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/financials/south_american_payments.rb +59 -0
- data/lib/genesis_ruby/api/requests/base/reference.rb +3 -2
- data/lib/genesis_ruby/api/requests/financial/cards/argencard.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/aura.rb +26 -0
- 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/cabal.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/cencosud.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/elo.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/naranja.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/nativa.rb +26 -0
- 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/tarjeta_shopping.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb +2 -2
- data/lib/genesis_ruby/api/requests/financial/cash_payments/baloto.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/banco_de_occidente.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/boleto.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/efecty.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/oxxo.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/pago_facil.rb +26 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/pix.rb +92 -0
- data/lib/genesis_ruby/api/requests/financial/cash_payments/redpagos.rb +26 -0
- 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/bancomer.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/bradesco.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/davivienda.rb +34 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/itau.rb +33 -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/online_banking_payments/pse.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/rapi_pago.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/santander.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/webpay.rb +33 -0
- data/lib/genesis_ruby/api/requests/financial/void.rb +2 -2
- data/lib/genesis_ruby/api/requests/financial/wallets/pay_pay.rb +65 -0
- 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/dependencies.rb +1 -0
- data/lib/genesis_ruby/utils/common.rb +26 -0
- data/lib/genesis_ruby/version.rb +1 -1
- metadata +46 -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
|
|
@@ -7,21 +7,22 @@ module GenesisRuby
|
|
|
7
7
|
module BillingInfoAttributes
|
|
8
8
|
|
|
9
9
|
attr_accessor :billing_first_name, :billing_last_name, :billing_address1, :billing_address2,
|
|
10
|
-
:billing_zip_code, :billing_city, :billing_state, :billing_country
|
|
10
|
+
:billing_zip_code, :billing_city, :billing_state, :billing_country, :billing_neighborhood
|
|
11
11
|
|
|
12
12
|
protected
|
|
13
13
|
|
|
14
14
|
# Build Hash with all parameters
|
|
15
|
-
def billing_address_parameters_structure
|
|
15
|
+
def billing_address_parameters_structure # rubocop:disable Metrics/MethodLength
|
|
16
16
|
{
|
|
17
|
-
first_name:
|
|
18
|
-
last_name:
|
|
19
|
-
address1:
|
|
20
|
-
address2:
|
|
21
|
-
zip_code:
|
|
22
|
-
city:
|
|
23
|
-
state:
|
|
24
|
-
|
|
17
|
+
first_name: billing_first_name,
|
|
18
|
+
last_name: billing_last_name,
|
|
19
|
+
address1: billing_address1,
|
|
20
|
+
address2: billing_address2,
|
|
21
|
+
zip_code: billing_zip_code,
|
|
22
|
+
city: billing_city,
|
|
23
|
+
state: billing_state,
|
|
24
|
+
neighborhood: billing_neighborhood,
|
|
25
|
+
country: billing_country
|
|
25
26
|
}
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -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
|
|
@@ -7,21 +7,22 @@ module GenesisRuby
|
|
|
7
7
|
module ShippingInfoAttributes
|
|
8
8
|
|
|
9
9
|
attr_accessor :shipping_first_name, :shipping_last_name, :shipping_address1, :shipping_address2,
|
|
10
|
-
:shipping_zip_code, :shipping_city, :shipping_state, :shipping_country
|
|
10
|
+
:shipping_zip_code, :shipping_city, :shipping_state, :shipping_country, :shipping_neighborhood
|
|
11
11
|
|
|
12
12
|
protected
|
|
13
13
|
|
|
14
14
|
# Build Hash with all parameters
|
|
15
|
-
def shipping_address_parameters_structure
|
|
15
|
+
def shipping_address_parameters_structure # rubocop:disable Metrics/MethodLength
|
|
16
16
|
{
|
|
17
|
-
first_name:
|
|
18
|
-
last_name:
|
|
19
|
-
address1:
|
|
20
|
-
address2:
|
|
21
|
-
zip_code:
|
|
22
|
-
city:
|
|
23
|
-
state:
|
|
24
|
-
|
|
17
|
+
first_name: shipping_first_name,
|
|
18
|
+
last_name: shipping_last_name,
|
|
19
|
+
address1: shipping_address1,
|
|
20
|
+
address2: shipping_address2,
|
|
21
|
+
zip_code: shipping_zip_code,
|
|
22
|
+
city: shipping_city,
|
|
23
|
+
state: shipping_state,
|
|
24
|
+
neighborhood: shipping_neighborhood,
|
|
25
|
+
country: shipping_country
|
|
25
26
|
}
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -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,26 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Consumer Identifier Attributes
|
|
7
|
+
module ConsumerIdentifierAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :consumer_reference, :national_id
|
|
10
|
+
|
|
11
|
+
# Consumer reference is a unique consumer identifier
|
|
12
|
+
def consumer_reference=(value)
|
|
13
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 20
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# National Id of the consumer
|
|
17
|
+
def national_id=(value)
|
|
18
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 20
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -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
|