genesis_ruby 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +11 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +158 -0
- data/LICENSE +21 -0
- data/README.md +343 -0
- data/Rakefile +12 -0
- data/VERSION +1 -0
- data/genesis_ruby.gemspec +43 -0
- data/lib/genesis_ruby/api/constants/currencies/iso4217.rb +1106 -0
- data/lib/genesis_ruby/api/constants/date_time_formats.rb +45 -0
- data/lib/genesis_ruby/api/constants/endpoints.rb +18 -0
- data/lib/genesis_ruby/api/constants/environments.rb +17 -0
- data/lib/genesis_ruby/api/constants/states/state.rb +43 -0
- data/lib/genesis_ruby/api/constants/states.rb +86 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/business/payment_types.rb +24 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/recurring/categories.rb +24 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/recurring/types.rb +28 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/sca_exemptions.rb +34 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/browser/color_depths.rb +46 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/password_change_indicators.rb +37 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/registration_indicators.rb +37 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/shipping_address_usage_indicators.rb +34 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/suspicious_activity_indicators.rb +28 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/update_indicators.rb +34 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_indicators.rb +34 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_window_sizes.rb +37 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/device_types.rb +28 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/delivery_timeframes.rb +34 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/pre_order_purchase_indicators.rb +28 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/reorder_item_indicators.rb +28 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/shipping_indicators.rb +46 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/purchase/categories.rb +43 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/interfaces.rb +31 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/ui_types.rb +37 -0
- data/lib/genesis_ruby/api/constants/transactions.rb +371 -0
- data/lib/genesis_ruby/api/mixins/constants/common.rb +27 -0
- data/lib/genesis_ruby/api/mixins/requests/address_info_attributes.rb +20 -0
- data/lib/genesis_ruby/api/mixins/requests/customer_address/billing_info_attributes.rb +33 -0
- data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +26 -0
- data/lib/genesis_ruby/api/mixins/requests/customer_address/shipping_info_attributes.rb +33 -0
- data/lib/genesis_ruby/api/mixins/requests/document_attributes.rb +14 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/async_attributes.rb +34 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/base_attributes.rb +16 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/airlines_air_carriers_attributes.rb +60 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/business_attributes.rb +56 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/car_plane_and_boat_rentals_attributes.rb +53 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/cruise_lines_attributes.rb +50 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/event_management_attributes.rb +54 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/furniture_attributes.rb +53 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/hotels_and_real_estate_rentals_attributes.rb +53 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/business/travel_agencies_attributes.rb +88 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/credit_card_attributes.rb +31 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/fx_rate_attributes.rb +18 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_category_attributes.rb +31 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb +31 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_attributes.rb +39 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/crypto_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/dynamic_descriptor_attributes.rb +114 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/gaming_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/moto_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/notification_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/payment_attributes.rb +32 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/pending_payment_attributes.rb +25 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/reference_attributes.rb +16 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/risk_attributes.rb +47 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/sca_attributes.rb +37 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/browser.rb +92 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account.rb +183 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/common_attributes.rb +52 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/control.rb +61 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk.rb +114 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/method.rb +44 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase.rb +42 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/recurring.rb +49 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb +107 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb +61 -0
- data/lib/genesis_ruby/api/mixins/requests/restricted_setter.rb +75 -0
- data/lib/genesis_ruby/api/request.rb +171 -0
- data/lib/genesis_ruby/api/requests/base/financial.rb +44 -0
- data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +27 -0
- data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +60 -0
- data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +76 -0
- data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +59 -0
- data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +75 -0
- data/lib/genesis_ruby/api/requests/wpf/create.rb +142 -0
- data/lib/genesis_ruby/api/response.rb +91 -0
- data/lib/genesis_ruby/builder.rb +42 -0
- data/lib/genesis_ruby/builders/base.rb +18 -0
- data/lib/genesis_ruby/builders/xml.rb +95 -0
- data/lib/genesis_ruby/configuration.rb +177 -0
- data/lib/genesis_ruby/connection.rb +20 -0
- data/lib/genesis_ruby/dependencies.rb +19 -0
- data/lib/genesis_ruby/errors/builder_error.rb +14 -0
- data/lib/genesis_ruby/errors/endpoint_not_set_error.rb +14 -0
- data/lib/genesis_ruby/errors/error.rb +18 -0
- data/lib/genesis_ruby/errors/invalid_argument_error.rb +14 -0
- data/lib/genesis_ruby/errors/network_error.rb +14 -0
- data/lib/genesis_ruby/errors/object_formatter_error.rb +14 -0
- data/lib/genesis_ruby/errors/parameter_error.rb +12 -0
- data/lib/genesis_ruby/errors/parser_error.rb +14 -0
- data/lib/genesis_ruby/errors/response_error.rb +14 -0
- data/lib/genesis_ruby/network/adapter/base_adapter.rb +31 -0
- data/lib/genesis_ruby/network/adapter/net_http_adapter.rb +92 -0
- data/lib/genesis_ruby/network/base_network.rb +83 -0
- data/lib/genesis_ruby/network/net_http.rb +28 -0
- data/lib/genesis_ruby/parser.rb +44 -0
- data/lib/genesis_ruby/parsers/base.rb +25 -0
- data/lib/genesis_ruby/parsers/xml.rb +120 -0
- data/lib/genesis_ruby/utils/common.rb +108 -0
- data/lib/genesis_ruby/utils/formatters/base.rb +40 -0
- data/lib/genesis_ruby/utils/formatters/response/definitions.rb +21 -0
- data/lib/genesis_ruby/utils/formatters/response/formats/amount.rb +34 -0
- data/lib/genesis_ruby/utils/formatters/response/formats/timestamp.rb +29 -0
- data/lib/genesis_ruby/utils/formatters/response/loader.rb +42 -0
- data/lib/genesis_ruby/utils/money/base/strategy.rb +38 -0
- data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +22 -0
- data/lib/genesis_ruby/utils/money/conversions/exponent_to_amount.rb +22 -0
- data/lib/genesis_ruby/utils/money/format.rb +34 -0
- data/lib/genesis_ruby/utils/money_format.rb +39 -0
- data/lib/genesis_ruby/utils/object_formatter.rb +67 -0
- data/lib/genesis_ruby/utils/options/api_config.rb +36 -0
- data/lib/genesis_ruby/utils/options/base.rb +35 -0
- data/lib/genesis_ruby/utils/options/network_adapter_config.rb +41 -0
- data/lib/genesis_ruby/utils/transactions/financial_types.rb +50 -0
- data/lib/genesis_ruby/utils/transactions/references/capturable_types.rb +52 -0
- data/lib/genesis_ruby/utils/transactions/references/refundable_types.rb +70 -0
- data/lib/genesis_ruby/utils/transactions/references/voidable_types.rb +49 -0
- data/lib/genesis_ruby/utils/transactions/wpf_types.rb +43 -0
- data/lib/genesis_ruby/version.rb +5 -0
- data/lib/genesis_ruby.rb +57 -0
- metadata +372 -0
@@ -0,0 +1,183 @@
|
|
1
|
+
# rubocop:disable Layout/LineLength
|
2
|
+
require 'genesis_ruby/api/constants/date_time_formats'
|
3
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/update_indicators'
|
4
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/password_change_indicators'
|
5
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/shipping_address_usage_indicators'
|
6
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/suspicious_activity_indicators'
|
7
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/registration_indicators'
|
8
|
+
# rubocop:enable Layout/LineLength
|
9
|
+
|
10
|
+
module GenesisRuby
|
11
|
+
module Api
|
12
|
+
module Mixins
|
13
|
+
module Requests
|
14
|
+
module Financial
|
15
|
+
module Threeds
|
16
|
+
module Version2
|
17
|
+
# Mixin ThreedsV2 Card holder Account
|
18
|
+
module CardHolderAccount # rubocop:disable Metrics/ModuleLength
|
19
|
+
|
20
|
+
attr_reader :threeds_v2_card_holder_account_update_indicator,
|
21
|
+
:threeds_v2_card_holder_account_password_change_indicator,
|
22
|
+
:threeds_v2_card_holder_account_shipping_address_usage_indicator,
|
23
|
+
:threeds_v2_card_holder_account_transactions_activity_last24_hours,
|
24
|
+
:threeds_v2_card_holder_account_transactions_activity_previous_year,
|
25
|
+
:threeds_v2_card_holder_account_provision_attempts_last24_hours,
|
26
|
+
:threeds_v2_card_holder_account_purchases_count_last6_months,
|
27
|
+
:threeds_v2_card_holder_account_suspicious_activity_indicator,
|
28
|
+
:threeds_v2_card_holder_account_registration_indicator
|
29
|
+
|
30
|
+
# Date that the cardholder opened the account with the 3DS Requester.
|
31
|
+
def threeds_v2_card_holder_account_creation_date
|
32
|
+
@threeds_v2_card_holder_account_creation_date&.strftime(
|
33
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Date that the cardholder opened the account with the 3DS Requester.
|
38
|
+
def threeds_v2_card_holder_account_creation_date=(value)
|
39
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
40
|
+
end
|
41
|
+
|
42
|
+
# Length of time since the cardholder’s account information with the 3DS Requester was last changed
|
43
|
+
def threeds_v2_card_holder_account_update_indicator=(value)
|
44
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
45
|
+
CardHolderAccount::UpdateIndicators.all
|
46
|
+
|
47
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
48
|
+
end
|
49
|
+
|
50
|
+
# Date that the cardholder’s account with the 3DS Requester was last changed
|
51
|
+
def threeds_v2_card_holder_account_last_change_date
|
52
|
+
@threeds_v2_card_holder_account_last_change_date&.strftime(
|
53
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Date that the cardholder’s account with the 3DS Requester was last changed
|
58
|
+
def threeds_v2_card_holder_account_last_change_date=(value)
|
59
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
60
|
+
end
|
61
|
+
|
62
|
+
# Length of time since the cardholder account with the 3DS Requester had a password change or
|
63
|
+
# account reset
|
64
|
+
def threeds_v2_card_holder_account_password_change_indicator=(value)
|
65
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
66
|
+
CardHolderAccount::PasswordChangeIndicators.all
|
67
|
+
|
68
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
69
|
+
end
|
70
|
+
|
71
|
+
# Date that cardholder’s account with the 3DS Requester had a password change or account reset
|
72
|
+
def threeds_v2_card_holder_account_password_change_date
|
73
|
+
@threeds_v2_card_holder_account_password_change_date&.strftime(
|
74
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Date that cardholder’s account with the 3DS Requester had a password change or account reset
|
79
|
+
def threeds_v2_card_holder_account_password_change_date=(value)
|
80
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
81
|
+
end
|
82
|
+
|
83
|
+
# Indicates when the shipping address used for this transaction was first used with the 3DS Requester
|
84
|
+
def threeds_v2_card_holder_account_shipping_address_usage_indicator=(value)
|
85
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
86
|
+
CardHolderAccount::ShippingAddressUsageIndicators.all
|
87
|
+
|
88
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
89
|
+
end
|
90
|
+
|
91
|
+
# Date when the shipping address used for this transaction was first used with the 3DS Requester
|
92
|
+
def threeds_v2_card_holder_account_shipping_address_date_first_used
|
93
|
+
@threeds_v2_card_holder_account_shipping_address_date_first_used&.strftime(
|
94
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Date when the shipping address used for this transaction was first used with the 3DS Requester
|
99
|
+
def threeds_v2_card_holder_account_shipping_address_date_first_used=(value)
|
100
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
101
|
+
end
|
102
|
+
|
103
|
+
# Number of transactions (successful and abandoned) for this cardholder account
|
104
|
+
def threeds_v2_card_holder_account_transactions_activity_last24_hours=(value)
|
105
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
106
|
+
end
|
107
|
+
|
108
|
+
# Number of transactions (successful and abandoned) for this cardholder account
|
109
|
+
def threeds_v2_card_holder_account_transactions_activity_previous_year=(value)
|
110
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
111
|
+
end
|
112
|
+
|
113
|
+
# Number of Add Card attempts in the last 24 hours
|
114
|
+
def threeds_v2_card_holder_account_provision_attempts_last24_hours=(value)
|
115
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
116
|
+
end
|
117
|
+
|
118
|
+
# Number of purchases with this cardholder account during the previous six months
|
119
|
+
def threeds_v2_card_holder_account_purchases_count_last6_months=(value)
|
120
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
121
|
+
end
|
122
|
+
|
123
|
+
# Indicates whether the 3DS Requester has experienced suspicious activity (including previous fraud)
|
124
|
+
def threeds_v2_card_holder_account_suspicious_activity_indicator=(value)
|
125
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
126
|
+
CardHolderAccount::SuspiciousActivityIndicators.all
|
127
|
+
|
128
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
129
|
+
end
|
130
|
+
|
131
|
+
# Indicates the length of time that the payment account was enrolled in the
|
132
|
+
# cardholder’s account with the 3DS Requester
|
133
|
+
def threeds_v2_card_holder_account_registration_indicator=(value)
|
134
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
135
|
+
CardHolderAccount::RegistrationIndicators.all
|
136
|
+
|
137
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
138
|
+
end
|
139
|
+
|
140
|
+
# Date that the cardholder opened the account with the 3DS Requester.
|
141
|
+
def threeds_v2_card_holder_account_registration_date
|
142
|
+
@threeds_v2_card_holder_account_registration_date&.strftime(
|
143
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
144
|
+
)
|
145
|
+
end
|
146
|
+
|
147
|
+
# Date that the payment account was enrolled in the cardholder’s account with the 3DS Requester
|
148
|
+
def threeds_v2_card_holder_account_registration_date=(value)
|
149
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
150
|
+
end
|
151
|
+
|
152
|
+
protected
|
153
|
+
|
154
|
+
# Request CardHolder Account Attributes structure
|
155
|
+
# rubocop:disable Layout/LineLength, Metrics/MethodLength
|
156
|
+
def card_holder_account_attributes
|
157
|
+
{
|
158
|
+
creation_date: threeds_v2_card_holder_account_creation_date,
|
159
|
+
update_indicator: threeds_v2_card_holder_account_update_indicator,
|
160
|
+
last_change_date: threeds_v2_card_holder_account_last_change_date,
|
161
|
+
password_change_indicator: threeds_v2_card_holder_account_password_change_indicator,
|
162
|
+
password_change_date: threeds_v2_card_holder_account_password_change_date,
|
163
|
+
shipping_address_usage_indicator: threeds_v2_card_holder_account_shipping_address_usage_indicator,
|
164
|
+
shipping_address_date_first_used: threeds_v2_card_holder_account_shipping_address_date_first_used,
|
165
|
+
transactions_activity_last_24_hours: threeds_v2_card_holder_account_transactions_activity_last24_hours,
|
166
|
+
transactions_activity_previous_year: threeds_v2_card_holder_account_transactions_activity_previous_year,
|
167
|
+
provision_attempts_last_24_hours: threeds_v2_card_holder_account_provision_attempts_last24_hours,
|
168
|
+
purchases_count_last_6_months: threeds_v2_card_holder_account_purchases_count_last6_months,
|
169
|
+
suspicious_activity_indicator: threeds_v2_card_holder_account_suspicious_activity_indicator,
|
170
|
+
registration_indicator: threeds_v2_card_holder_account_registration_indicator,
|
171
|
+
registration_date: threeds_v2_card_holder_account_registration_date
|
172
|
+
}
|
173
|
+
end
|
174
|
+
# rubocop:enable Layout/LineLength, Metrics/MethodLength
|
175
|
+
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/browser'
|
2
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account'
|
3
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/control'
|
4
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk'
|
5
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/method'
|
6
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase'
|
7
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/recurring'
|
8
|
+
require 'genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk'
|
9
|
+
|
10
|
+
module GenesisRuby
|
11
|
+
module Api
|
12
|
+
module Mixins
|
13
|
+
module Requests
|
14
|
+
module Financial
|
15
|
+
module Threeds
|
16
|
+
module Version2
|
17
|
+
# Threeds Version 2 Common Attributes
|
18
|
+
module CommonAttributes
|
19
|
+
|
20
|
+
include Browser
|
21
|
+
include CardHolderAccount
|
22
|
+
include Control
|
23
|
+
include MerchantRisk
|
24
|
+
include Method
|
25
|
+
include Purchase
|
26
|
+
include Recurring
|
27
|
+
include Sdk
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
# Threeds V2 Web Payment Form Attributes
|
32
|
+
def threeds_v2_common_attributes_structure
|
33
|
+
{
|
34
|
+
method: method_attributes,
|
35
|
+
control: control_attributes,
|
36
|
+
purchase: purchase_attributes,
|
37
|
+
merchant_risk: merchant_risk_attributes,
|
38
|
+
card_holder_account: card_holder_account_attributes,
|
39
|
+
recurring: recurring_attributes,
|
40
|
+
browser: browser_attributes,
|
41
|
+
sdk: sdk_attributes
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/device_types'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_window_sizes'
|
3
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_indicators'
|
4
|
+
|
5
|
+
module GenesisRuby
|
6
|
+
module Api
|
7
|
+
module Mixins
|
8
|
+
module Requests
|
9
|
+
module Financial
|
10
|
+
module Threeds
|
11
|
+
module Version2
|
12
|
+
# Mixin ThreedsV2 Control
|
13
|
+
module Control
|
14
|
+
|
15
|
+
attr_reader :threeds_v2_control_device_type, :threeds_v2_control_challenge_window_size,
|
16
|
+
:threeds_v2_control_challenge_indicator
|
17
|
+
|
18
|
+
# Identifies the device channel of the consumer
|
19
|
+
def threeds_v2_control_device_type=(value)
|
20
|
+
allowed_types = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Control::
|
21
|
+
DeviceTypes.all
|
22
|
+
|
23
|
+
allowed_options attribute: __method__, allowed: allowed_types, value: value, allow_empty: true
|
24
|
+
end
|
25
|
+
|
26
|
+
# Identifies the size of the challenge window for the consumer
|
27
|
+
def threeds_v2_control_challenge_window_size=(value)
|
28
|
+
allowed_sizes = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Control::
|
29
|
+
ChallengeWindowSizes.all
|
30
|
+
|
31
|
+
allowed_options attribute: __method__, allowed: allowed_sizes, value: value, allow_empty: true
|
32
|
+
end
|
33
|
+
|
34
|
+
# The value has weight and might impact the decision whether a challenge will be required for the
|
35
|
+
# transaction or not
|
36
|
+
def threeds_v2_control_challenge_indicator=(value)
|
37
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
38
|
+
Control::ChallengeIndicators.all
|
39
|
+
|
40
|
+
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
# Request Control Attributes structure
|
46
|
+
def control_attributes
|
47
|
+
{
|
48
|
+
device_type: threeds_v2_control_device_type,
|
49
|
+
challenge_window_size: threeds_v2_control_challenge_window_size,
|
50
|
+
challenge_indicator: threeds_v2_control_challenge_indicator
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/shipping_indicators'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/delivery_timeframes'
|
3
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/reorder_item_indicators'
|
4
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/pre_order_purchase_indicators' # rubocop: disable Layout/LineLength
|
5
|
+
|
6
|
+
module GenesisRuby
|
7
|
+
module Api
|
8
|
+
module Mixins
|
9
|
+
module Requests
|
10
|
+
module Financial
|
11
|
+
module Threeds
|
12
|
+
module Version2
|
13
|
+
# Mixin ThreedsV2 MerchantRisk
|
14
|
+
module MerchantRisk
|
15
|
+
|
16
|
+
attr_reader :threeds_v2_merchant_risk_shipping_indicator, :threeds_v2_merchant_risk_delivery_timeframe,
|
17
|
+
:threeds_v2_merchant_risk_reorder_items_indicator,
|
18
|
+
:threeds_v2_merchant_risk_pre_order_purchase_indicator, :threeds_v2_merchant_risk_gift_card,
|
19
|
+
:threeds_v2_merchant_risk_gift_card_count
|
20
|
+
|
21
|
+
# Indicator code that most accurately describes the shipping method
|
22
|
+
def threeds_v2_merchant_risk_shipping_indicator=(value)
|
23
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
24
|
+
MerchantRisk::ShippingIndicators.all
|
25
|
+
|
26
|
+
allowed_options attribute: __method__,
|
27
|
+
allowed: allowed_indicators,
|
28
|
+
value: value.to_s,
|
29
|
+
allow_empty: true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Indicates the merchandise delivery timeframe
|
33
|
+
def threeds_v2_merchant_risk_delivery_timeframe=(value)
|
34
|
+
allowed_timeframes = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
35
|
+
MerchantRisk::DeliveryTimeframes.all
|
36
|
+
|
37
|
+
allowed_options attribute: __method__,
|
38
|
+
allowed: allowed_timeframes,
|
39
|
+
value: value.to_s,
|
40
|
+
allow_empty: true
|
41
|
+
end
|
42
|
+
|
43
|
+
# Indicates whether the cardholder is reordering previously purchased merchandise
|
44
|
+
def threeds_v2_merchant_risk_reorder_items_indicator=(value)
|
45
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
46
|
+
MerchantRisk::ReorderItemIndicators.all
|
47
|
+
|
48
|
+
allowed_options attribute: __method__,
|
49
|
+
allowed: allowed_indicators,
|
50
|
+
value: value.to_s,
|
51
|
+
allow_empty: true
|
52
|
+
end
|
53
|
+
|
54
|
+
# Indicates whether cardholder is placing an order for merchandise with a future-availability
|
55
|
+
# or release date
|
56
|
+
def threeds_v2_merchant_risk_pre_order_purchase_indicator=(value)
|
57
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
58
|
+
MerchantRisk::PreOrderPurchaseIndicators.all
|
59
|
+
|
60
|
+
allowed_options attribute: __method__,
|
61
|
+
allowed: allowed_indicators,
|
62
|
+
value: value.to_s,
|
63
|
+
allow_empty: true
|
64
|
+
end
|
65
|
+
|
66
|
+
# For a pre-ordered purchase, the expected date that the merchandise will be available
|
67
|
+
def threeds_v2_merchant_risk_pre_order_date
|
68
|
+
@threeds_v2_merchant_risk_pre_order_date&.strftime(
|
69
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
70
|
+
)
|
71
|
+
end
|
72
|
+
|
73
|
+
# For a pre-ordered purchase, the expected date that the merchandise will be available
|
74
|
+
def threeds_v2_merchant_risk_pre_order_date=(value)
|
75
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
76
|
+
end
|
77
|
+
|
78
|
+
# Prepaid or gift card purchase
|
79
|
+
def threeds_v2_merchant_risk_gift_card=(value)
|
80
|
+
allowed_options attribute: __method__,
|
81
|
+
allowed: [true, false],
|
82
|
+
value: value,
|
83
|
+
allow_empty: true,
|
84
|
+
error_message: 'Accepts only boolean values'
|
85
|
+
end
|
86
|
+
|
87
|
+
# For prepaid or gift card purchase, total count of individual prepaid or gift cards/codes purchased
|
88
|
+
def threeds_v2_merchant_risk_gift_card_count=(value)
|
89
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
90
|
+
end
|
91
|
+
|
92
|
+
protected
|
93
|
+
|
94
|
+
# Request Merchant Risk Attributes structure
|
95
|
+
def merchant_risk_attributes
|
96
|
+
{
|
97
|
+
shipping_indicator: threeds_v2_merchant_risk_shipping_indicator,
|
98
|
+
delivery_timeframe: threeds_v2_merchant_risk_delivery_timeframe,
|
99
|
+
reorder_items_indicator: threeds_v2_merchant_risk_reorder_items_indicator,
|
100
|
+
pre_order_purchase_indicator: threeds_v2_merchant_risk_pre_order_purchase_indicator,
|
101
|
+
pre_order_date: threeds_v2_merchant_risk_pre_order_date,
|
102
|
+
gift_card: threeds_v2_merchant_risk_gift_card,
|
103
|
+
gift_card_count: threeds_v2_merchant_risk_gift_card_count
|
104
|
+
}
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'genesis_ruby/utils/common'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module Threeds
|
9
|
+
module Version2
|
10
|
+
# Mixin ThreedsV2 Mehtod
|
11
|
+
module Method
|
12
|
+
|
13
|
+
attr_reader :threeds_v2_method_callback_url
|
14
|
+
|
15
|
+
# 3DS-Method related parameters for any callbacks and notifications
|
16
|
+
def threeds_v2_method_callback_url=(value)
|
17
|
+
@threeds_v2_method_callback_url = nil
|
18
|
+
|
19
|
+
return if value.to_s.empty?
|
20
|
+
|
21
|
+
unless GenesisRuby::Utils::Common.valid_url?(value)
|
22
|
+
raise InvalidArgumentError, "Invalid URL given for #{__method__}"
|
23
|
+
end
|
24
|
+
|
25
|
+
@threeds_v2_method_callback_url = value
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
# Request Method Attributes structure
|
31
|
+
def method_attributes
|
32
|
+
{
|
33
|
+
callback_url: threeds_v2_method_callback_url
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/purchase/categories'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module Threeds
|
9
|
+
module Version2
|
10
|
+
# Mixin ThreedsV2 Purchase
|
11
|
+
module Purchase
|
12
|
+
|
13
|
+
attr_reader :threeds_v2_purchase_category
|
14
|
+
|
15
|
+
# Identifies the type of transaction being authenticated
|
16
|
+
def threeds_v2_purchase_category=(value)
|
17
|
+
allowed_indicators = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::
|
18
|
+
Purchase::Categories.all
|
19
|
+
|
20
|
+
allowed_options attribute: __method__,
|
21
|
+
allowed: allowed_indicators,
|
22
|
+
value: value.to_s,
|
23
|
+
allow_empty: true
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
|
28
|
+
# Request Purchase Attributes structure
|
29
|
+
def purchase_attributes
|
30
|
+
{
|
31
|
+
category: threeds_v2_purchase_category
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
module Financial
|
6
|
+
module Threeds
|
7
|
+
module Version2
|
8
|
+
# Mixin ThreedsV2 Recurring
|
9
|
+
module Recurring
|
10
|
+
|
11
|
+
attr_reader :threeds_v2_recurring_frequency
|
12
|
+
|
13
|
+
# A future date indicating the end date for any further subsequent transactions
|
14
|
+
def threeds_v2_recurring_expiration_date
|
15
|
+
@threeds_v2_recurring_expiration_date&.strftime(
|
16
|
+
GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
# A future date indicating the end date for any further subsequent transactions
|
21
|
+
def threeds_v2_recurring_expiration_date=(value)
|
22
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
23
|
+
end
|
24
|
+
|
25
|
+
# Indicates the minimum number of days between subsequent transactions
|
26
|
+
def threeds_v2_recurring_frequency=(value)
|
27
|
+
limited_string attribute: __method__,
|
28
|
+
value: value.to_s.empty? || !value.to_i.positive? ? nil : value.to_i,
|
29
|
+
max: 4
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
# Request Recurring Attributes structure
|
35
|
+
def recurring_attributes
|
36
|
+
{
|
37
|
+
expiration_date: threeds_v2_recurring_expiration_date,
|
38
|
+
frequency: threeds_v2_recurring_frequency
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/interfaces'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/ui_types'
|
3
|
+
require 'genesis_ruby/errors/invalid_argument_error'
|
4
|
+
|
5
|
+
module GenesisRuby
|
6
|
+
module Api
|
7
|
+
module Mixins
|
8
|
+
module Requests
|
9
|
+
module Financial
|
10
|
+
module Threeds
|
11
|
+
module Version2
|
12
|
+
# Mixin ThreedsV2 SDK
|
13
|
+
module Sdk
|
14
|
+
|
15
|
+
attr_reader :threeds_v2_sdk_interface, :threeds_v2_sdk_application_id, :threeds_v2_sdk_encrypted_data,
|
16
|
+
:threeds_v2_sdk_ephemeral_public_key_pair, :threeds_v2_sdk_max_timeout,
|
17
|
+
:threeds_v2_sdk_reference_number
|
18
|
+
|
19
|
+
# SDK Interface types that the device of the consumer supports for displaying specific challenge
|
20
|
+
# interfaces within the SDK
|
21
|
+
def threeds_v2_sdk_interface=(value)
|
22
|
+
allowed_interfaces = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Sdk::
|
23
|
+
Interfaces.all
|
24
|
+
|
25
|
+
allowed_options attribute: __method__, allowed: allowed_interfaces, value: value, allow_empty: true
|
26
|
+
end
|
27
|
+
|
28
|
+
# UI type that the device of the consumer supports for displaying specific challenge interface
|
29
|
+
def threeds_v2_sdk_ui_types
|
30
|
+
@threeds_v2_sdk_ui_types ||= []
|
31
|
+
end
|
32
|
+
|
33
|
+
# UI type that the device of the consumer supports for displaying specific challenge interface
|
34
|
+
def threeds_v2_sdk_ui_types=(value)
|
35
|
+
ui_types = GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Sdk::UiTypes
|
36
|
+
|
37
|
+
unless ui_types.valid?(value)
|
38
|
+
raise InvalidArgumentError, format(
|
39
|
+
'Invalid value given for %{method}. Allowed values: %{allowed}',
|
40
|
+
method: __method__,
|
41
|
+
allowed: ui_types.all
|
42
|
+
)
|
43
|
+
end
|
44
|
+
|
45
|
+
threeds_v2_sdk_ui_types.push value.to_s.downcase
|
46
|
+
end
|
47
|
+
|
48
|
+
# Universally unique ID created upon all installations and updates of the 3DS Requester APP on
|
49
|
+
# a Customer Device
|
50
|
+
def threeds_v2_sdk_application_id=(value)
|
51
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value, max: 36
|
52
|
+
end
|
53
|
+
|
54
|
+
# JWE Object as defined Section 6.2.2.1 containing data encrypted by the SDK for the DS to decrypt
|
55
|
+
def threeds_v2_sdk_encrypted_data=(value)
|
56
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value, max: 64_000
|
57
|
+
end
|
58
|
+
|
59
|
+
# Public key component of the ephemeral key pair generated by the 3DS SDK and used to
|
60
|
+
# establish session keys between the 3DS SDK and ACS
|
61
|
+
def threeds_v2_sdk_ephemeral_public_key_pair=(value)
|
62
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value, max: 256
|
63
|
+
end
|
64
|
+
|
65
|
+
# Indicates the maximum amount of time (in minutes) for all exchanges
|
66
|
+
def threeds_v2_sdk_max_timeout=(value)
|
67
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
68
|
+
|
69
|
+
return if @threeds_v2_sdk_max_timeout.nil?
|
70
|
+
|
71
|
+
error_message = format(
|
72
|
+
'Invalid value given for %{attribute}, should be greater than or equal to 5.',
|
73
|
+
attribute: __method__
|
74
|
+
)
|
75
|
+
|
76
|
+
raise InvalidArgumentError, error_message if @threeds_v2_sdk_max_timeout < 5
|
77
|
+
end
|
78
|
+
|
79
|
+
# Identifies the vendor and version of the 3DS SDK that is integrated in a 3DS Requester App,
|
80
|
+
# assigned by EMVCo when the 3DS SDK is approved
|
81
|
+
def threeds_v2_sdk_reference_number=(value)
|
82
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value, max: 32
|
83
|
+
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
# Request SDK Attributes structure
|
88
|
+
def sdk_attributes
|
89
|
+
{
|
90
|
+
interface: threeds_v2_sdk_interface,
|
91
|
+
ui_types: { ui_type: threeds_v2_sdk_ui_types },
|
92
|
+
application_id: threeds_v2_sdk_application_id,
|
93
|
+
encrypted_data: threeds_v2_sdk_encrypted_data,
|
94
|
+
ephemeral_public_key_pair: threeds_v2_sdk_ephemeral_public_key_pair,
|
95
|
+
max_timeout: threeds_v2_sdk_max_timeout,
|
96
|
+
reference_number: threeds_v2_sdk_reference_number
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|