genesis_ruby 0.1.0
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 +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
data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/recurring/types'
|
|
2
|
+
|
|
3
|
+
module GenesisRuby
|
|
4
|
+
module Api
|
|
5
|
+
module Mixins
|
|
6
|
+
module Requests
|
|
7
|
+
module Financial
|
|
8
|
+
module Cards
|
|
9
|
+
module Recurring
|
|
10
|
+
# Recurring Type Attributes
|
|
11
|
+
module RecurringTypeAttributes
|
|
12
|
+
|
|
13
|
+
attr_reader :recurring_type
|
|
14
|
+
|
|
15
|
+
# Specifies the recurring type of transaction
|
|
16
|
+
def recurring_type=(value)
|
|
17
|
+
allowed_options attribute: __method__,
|
|
18
|
+
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::Recurring::
|
|
19
|
+
Types.all,
|
|
20
|
+
value: value,
|
|
21
|
+
allow_empty: true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
module Cards
|
|
7
|
+
# Tokenization Attributes mixin
|
|
8
|
+
module TokenizationAttributes
|
|
9
|
+
|
|
10
|
+
attr_reader :remember_card
|
|
11
|
+
attr_accessor :consumer_id, :token
|
|
12
|
+
|
|
13
|
+
# Tokenizes cardholder parameters. Cannot be set together with token
|
|
14
|
+
def remember_card=(value)
|
|
15
|
+
allowed_options attribute: __method__,
|
|
16
|
+
allowed: [true, false],
|
|
17
|
+
value: value,
|
|
18
|
+
allow_empty: true,
|
|
19
|
+
error_message: 'Accepts only boolean values'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
# Tokenization Attributes Structure
|
|
25
|
+
def tokenization_attributes_structure
|
|
26
|
+
{
|
|
27
|
+
token: token,
|
|
28
|
+
consumer_id: consumer_id,
|
|
29
|
+
remember_card: remember_card
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Crypto Attributes mixin
|
|
7
|
+
module CryptoAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :crypto
|
|
10
|
+
|
|
11
|
+
# Signifies whether a crypto transaction is performed
|
|
12
|
+
def crypto=(value)
|
|
13
|
+
allowed_options attribute: __method__,
|
|
14
|
+
allowed: [true, false],
|
|
15
|
+
value: value,
|
|
16
|
+
allow_empty: true,
|
|
17
|
+
error_message: 'Accepts only boolean values'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Dynamic Descriptor Attributes
|
|
7
|
+
module DynamicDescriptorAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :dynamic_descriptor_merchant_name, :dynamic_descriptor_merchant_city,
|
|
10
|
+
:dynamic_descriptor_sub_merchant_id, :dynamic_descriptor_merchant_country,
|
|
11
|
+
:dynamic_descriptor_merchant_state, :dynamic_descriptor_merchant_zip_code,
|
|
12
|
+
:dynamic_descriptor_merchant_address, :dynamic_descriptor_merchant_url,
|
|
13
|
+
:dynamic_descriptor_merchant_phone, :dynamic_descriptor_merchant_service_city,
|
|
14
|
+
:dynamic_descriptor_merchant_service_country, :dynamic_descriptor_merchant_service_state,
|
|
15
|
+
:dynamic_descriptor_merchant_service_zip_code, :dynamic_descriptor_merchant_service_phone
|
|
16
|
+
|
|
17
|
+
# Allows to dynamically override the charge descriptor
|
|
18
|
+
def dynamic_descriptor_merchant_name=(value)
|
|
19
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 25
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Allows to dynamically override the merchant city
|
|
23
|
+
def dynamic_descriptor_merchant_city=(value)
|
|
24
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 13
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Allows to dynamically override the sub-merchant ID
|
|
28
|
+
def dynamic_descriptor_sub_merchant_id=(value)
|
|
29
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 15
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Allows to dynamically override the merchant country
|
|
33
|
+
def dynamic_descriptor_merchant_country=(value)
|
|
34
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 3
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Allows to dynamically override the merchant subdivision code
|
|
38
|
+
def dynamic_descriptor_merchant_state=(value)
|
|
39
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 3
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Allows to dynamically override the merchant zip/postal code
|
|
43
|
+
def dynamic_descriptor_merchant_zip_code=(value)
|
|
44
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 10
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Allows to dynamically override the merchant address
|
|
48
|
+
def dynamic_descriptor_merchant_address=(value)
|
|
49
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 48
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Allows to dynamically override the merchant URL
|
|
53
|
+
def dynamic_descriptor_merchant_url=(value)
|
|
54
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 60
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Allows to dynamically override the merchant phone number
|
|
58
|
+
def dynamic_descriptor_merchant_phone=(value)
|
|
59
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 16
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Allows to dynamically override the merchant service city
|
|
63
|
+
def dynamic_descriptor_merchant_service_city=(value)
|
|
64
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 13
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Allows to dynamically override the merchant service country
|
|
68
|
+
def dynamic_descriptor_merchant_service_country=(value)
|
|
69
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 3
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Allows to dynamically override the merchant service subdivision code
|
|
73
|
+
def dynamic_descriptor_merchant_service_state=(value)
|
|
74
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 3
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Allows to dynamically override the merchant service zip/postal
|
|
78
|
+
def dynamic_descriptor_merchant_service_zip_code=(value)
|
|
79
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 10
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Allows to dynamically override the merchant service phone number
|
|
83
|
+
def dynamic_descriptor_merchant_service_phone=(value)
|
|
84
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 16
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
protected
|
|
88
|
+
|
|
89
|
+
# Dynamic Descriptor Params structure
|
|
90
|
+
def dynamic_descriptor_structure # rubocop:disable Metrics/MethodLength
|
|
91
|
+
{
|
|
92
|
+
merchant_name: dynamic_descriptor_merchant_name,
|
|
93
|
+
merchant_city: dynamic_descriptor_merchant_city,
|
|
94
|
+
sub_merchant_id: dynamic_descriptor_sub_merchant_id,
|
|
95
|
+
merchant_country: dynamic_descriptor_merchant_country,
|
|
96
|
+
merchant_state: dynamic_descriptor_merchant_state,
|
|
97
|
+
merchant_zip_code: dynamic_descriptor_merchant_zip_code,
|
|
98
|
+
merchant_address: dynamic_descriptor_merchant_address,
|
|
99
|
+
merchant_url: dynamic_descriptor_merchant_url,
|
|
100
|
+
merchant_phone: dynamic_descriptor_merchant_phone,
|
|
101
|
+
merchant_service_city: dynamic_descriptor_merchant_service_city,
|
|
102
|
+
merchant_service_country: dynamic_descriptor_merchant_service_country,
|
|
103
|
+
merchant_service_state: dynamic_descriptor_merchant_service_state,
|
|
104
|
+
merchant_service_zip_code: dynamic_descriptor_merchant_service_zip_code,
|
|
105
|
+
merchant_service_phone: dynamic_descriptor_merchant_service_phone
|
|
106
|
+
}
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Gaming Attributes mixin
|
|
7
|
+
module GamingAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :gaming
|
|
10
|
+
|
|
11
|
+
# Signifies whether a gaming transaction is performed
|
|
12
|
+
def gaming=(value)
|
|
13
|
+
allowed_options attribute: __method__,
|
|
14
|
+
allowed: [true, false],
|
|
15
|
+
value: value,
|
|
16
|
+
allow_empty: true,
|
|
17
|
+
error_message: 'Accepts only boolean values'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Moto Attributes mixin
|
|
7
|
+
module MotoAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :moto
|
|
10
|
+
|
|
11
|
+
# Signifies whether a moto transaction is performed
|
|
12
|
+
def moto=(value)
|
|
13
|
+
allowed_options attribute: __method__,
|
|
14
|
+
allowed: [true, false],
|
|
15
|
+
value: value,
|
|
16
|
+
allow_empty: true,
|
|
17
|
+
error_message: 'Accepts only boolean values'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Mixin Notification Attributes
|
|
7
|
+
module NotificationAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :notification_url
|
|
10
|
+
|
|
11
|
+
# Return Success URL setter
|
|
12
|
+
def notification_url=(value)
|
|
13
|
+
unless GenesisRuby::Utils::Common.valid_url?(value)
|
|
14
|
+
raise ParameterError, "Invalid URL given for #{__method__}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@notification_url = value
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Mixin Payment Attributes, brings Payment Attributes partial
|
|
7
|
+
module PaymentAttributes
|
|
8
|
+
|
|
9
|
+
attr_accessor :amount
|
|
10
|
+
attr_writer :currency
|
|
11
|
+
|
|
12
|
+
# Currency Attribute getter
|
|
13
|
+
def currency
|
|
14
|
+
@currency.to_s.upcase
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
protected
|
|
18
|
+
|
|
19
|
+
# Returns the Payment Attributes structure with the Genesis Request keys
|
|
20
|
+
def payment_attributes_structure
|
|
21
|
+
{
|
|
22
|
+
amount: transform_amount(amount, currency),
|
|
23
|
+
currency: currency
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Mixin Pending Payment Attributes
|
|
7
|
+
module PendingPaymentAttributes
|
|
8
|
+
|
|
9
|
+
attr_reader :return_pending_url
|
|
10
|
+
|
|
11
|
+
# Return Success URL setter
|
|
12
|
+
def return_pending_url=(value)
|
|
13
|
+
unless GenesisRuby::Utils::Common.valid_url?(value)
|
|
14
|
+
raise ParameterError, "Invalid URL given for #{__method__}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@return_pending_url = value
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module GenesisRuby
|
|
2
|
+
module Api
|
|
3
|
+
module Mixins
|
|
4
|
+
module Requests
|
|
5
|
+
module Financial
|
|
6
|
+
# Risk Params Attributes
|
|
7
|
+
module RiskAttributes
|
|
8
|
+
|
|
9
|
+
attr_accessor :risk_ssn, :risk_mac_address, :risk_session_id, :risk_user_id, :risk_user_level, :risk_email,
|
|
10
|
+
:risk_phone, :risk_remote_ip, :risk_serial_number, :risk_pan_tail, :risk_bin,
|
|
11
|
+
:risk_first_name, :risk_last_name, :risk_country, :risk_pan, :risk_forwarded_ip,
|
|
12
|
+
:risk_username, :risk_password, :risk_bin_name, :risk_bin_phone
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
# Risk Params Structure
|
|
17
|
+
def risk_parameters_structure # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
18
|
+
{
|
|
19
|
+
ssn: risk_ssn,
|
|
20
|
+
mac_address: risk_mac_address,
|
|
21
|
+
session_id: risk_session_id,
|
|
22
|
+
user_id: risk_user_id,
|
|
23
|
+
user_level: risk_user_level,
|
|
24
|
+
email: risk_email,
|
|
25
|
+
phone: risk_phone,
|
|
26
|
+
remote_ip: risk_remote_ip,
|
|
27
|
+
serial_number: risk_serial_number,
|
|
28
|
+
pan_tail: risk_pan_tail,
|
|
29
|
+
bin: risk_bin,
|
|
30
|
+
first_name: risk_first_name,
|
|
31
|
+
last_name: risk_last_name,
|
|
32
|
+
country: risk_country,
|
|
33
|
+
pan: risk_pan,
|
|
34
|
+
forwarded_ip: risk_forwarded_ip,
|
|
35
|
+
username: risk_username,
|
|
36
|
+
password: risk_password,
|
|
37
|
+
bin_name: risk_bin_name,
|
|
38
|
+
bin_phone: risk_bin_phone
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/sca_exemptions'
|
|
2
|
+
|
|
3
|
+
module GenesisRuby
|
|
4
|
+
module Api
|
|
5
|
+
module Mixins
|
|
6
|
+
module Requests
|
|
7
|
+
module Financial
|
|
8
|
+
# SCA Attributes mixin
|
|
9
|
+
module ScaAttributes
|
|
10
|
+
|
|
11
|
+
attr_reader :sca_exemption
|
|
12
|
+
attr_accessor :sca_visa_merchant_id
|
|
13
|
+
|
|
14
|
+
# The exemption that the transaction should take advantage of
|
|
15
|
+
def sca_exemption=(value)
|
|
16
|
+
allowed_options attribute: __method__,
|
|
17
|
+
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::ScaExemptions.all,
|
|
18
|
+
value: value.to_s.empty? ? nil : value.to_s.downcase,
|
|
19
|
+
allow_empty: true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
# SCA Params Attributes Structure
|
|
25
|
+
def sca_attributes_structure
|
|
26
|
+
{
|
|
27
|
+
exemption: sca_exemption,
|
|
28
|
+
visa_merchant_id: sca_visa_merchant_id
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/threeds/version2/browser/color_depths'
|
|
2
|
+
require 'genesis_ruby/errors/invalid_argument_error'
|
|
3
|
+
|
|
4
|
+
module GenesisRuby
|
|
5
|
+
module Api
|
|
6
|
+
module Mixins
|
|
7
|
+
module Requests
|
|
8
|
+
module Financial
|
|
9
|
+
module Threeds
|
|
10
|
+
module Version2
|
|
11
|
+
# Mixin ThreedsV2 Browser Attributes
|
|
12
|
+
module Browser
|
|
13
|
+
|
|
14
|
+
attr_reader :threeds_v2_browser_accept_header, :threeds_v2_browser_java_enabled,
|
|
15
|
+
:threeds_v2_browser_language, :threeds_v2_browser_color_depth,
|
|
16
|
+
:threeds_v2_browser_screen_height, :threeds_v2_browser_screen_width,
|
|
17
|
+
:threeds_v2_browser_time_zone_offset, :threeds_v2_browser_user_agent
|
|
18
|
+
|
|
19
|
+
# Exact content of the HTTP accept headers as sent to the 3DS Requester from the Cardholder browser
|
|
20
|
+
def threeds_v2_browser_accept_header=(value)
|
|
21
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 2048
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Value representing the browser language as defined in IETF BCP47
|
|
25
|
+
def threeds_v2_browser_language=(value)
|
|
26
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 8
|
|
27
|
+
end
|
|
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
|
+
# Total height of the Cardholder's screen in pixels
|
|
41
|
+
def threeds_v2_browser_screen_height=(value)
|
|
42
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Total width of the Cardholder's screen in pixels
|
|
46
|
+
def threeds_v2_browser_screen_width=(value)
|
|
47
|
+
parse_int attribute: __method__, value: value, allow_empty: true
|
|
48
|
+
end
|
|
49
|
+
|
|
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
|
+
# Time difference between UTC time and the Cardholder browser local time, in minutes
|
|
60
|
+
def threeds_v2_browser_time_zone_offset=(value)
|
|
61
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 5
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Exact content of the HTTP user-agent header
|
|
65
|
+
def threeds_v2_browser_user_agent=(value)
|
|
66
|
+
limited_string attribute: __method__, value: value.to_s.empty? ? nil : value.to_s, max: 2048
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
protected
|
|
70
|
+
|
|
71
|
+
# Request Browser Attributes structure
|
|
72
|
+
def browser_attributes
|
|
73
|
+
{
|
|
74
|
+
accept_header: threeds_v2_browser_accept_header,
|
|
75
|
+
java_enabled: threeds_v2_browser_java_enabled,
|
|
76
|
+
language: threeds_v2_browser_language,
|
|
77
|
+
color_depth: threeds_v2_browser_color_depth,
|
|
78
|
+
screen_height: threeds_v2_browser_screen_height,
|
|
79
|
+
screen_width: threeds_v2_browser_screen_width,
|
|
80
|
+
time_zone_offset: threeds_v2_browser_time_zone_offset,
|
|
81
|
+
user_agent: threeds_v2_browser_user_agent
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|