genesis_ruby 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/Gemfile.lock +42 -38
- data/README.md +305 -3
- data/VERSION +1 -1
- data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/apple_pay/payment_subtypes.rb +29 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/google_pay/payment_subtypes.rb +29 -0
- data/lib/genesis_ruby/api/constants/transactions/parameters/mpi_protocol_sub_versions.rb +43 -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/travel_data/ancillary_charges_types.rb +43 -0
- data/lib/genesis_ruby/api/constants/transactions.rb +1 -5
- data/lib/genesis_ruby/api/mixins/requests/attribute_validation.rb +138 -4
- data/lib/genesis_ruby/api/mixins/requests/birth_date_attributes.rb +22 -0
- data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +1 -1
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/credit_card_attributes.rb +7 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/mpi_attributes.rb +14 -4
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb +23 -20
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_indian_card_attributes.rb +19 -39
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb +15 -9
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_attributes.rb +9 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/mobile/apple_pay_token_attributes.rb +51 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/mobile/google_pay_token_attributes.rb +50 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/virtual_payment_address_attributes.rb +27 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/browser.rb +11 -22
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account.rb +81 -49
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/common_attributes.rb +23 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/control.rb +13 -26
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk.rb +21 -58
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase.rb +8 -11
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb +10 -10
- data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb +9 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +166 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/car_rental_attributes.rb +119 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/hotel_rental_attributes.rb +77 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/reference_ticket_attributes.rb +75 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/travel_attributes.rb +34 -0
- data/lib/genesis_ruby/api/request.rb +4 -2
- data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +6 -4
- data/lib/genesis_ruby/api/requests/base/reference.rb +3 -2
- data/lib/genesis_ruby/api/requests/financial/capture.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +13 -3
- data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +22 -11
- data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +13 -3
- data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +22 -11
- data/lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb +2 -2
- data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +91 -0
- data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +108 -0
- data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +157 -0
- data/lib/genesis_ruby/api/requests/financial/void.rb +2 -2
- data/lib/genesis_ruby/api/requests/non_financial/reconcile/date_range.rb +2 -2
- data/lib/genesis_ruby/api/requests/wpf/create.rb +11 -15
- data/lib/genesis_ruby/api/requests/wpf/reconcile.rb +2 -2
- data/lib/genesis_ruby/builders/xml.rb +6 -0
- data/lib/genesis_ruby/utils/common.rb +26 -0
- data/lib/genesis_ruby/utils/transactions/financial_types.rb +1 -1
- data/lib/genesis_ruby/utils/transactions/references/refundable_types.rb +1 -1
- data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/base.rb +33 -0
- data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/leg.rb +97 -0
- data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/tax.rb +42 -0
- data/lib/genesis_ruby/utils/transactions/wpf_types.rb +1 -1
- data/lib/genesis_ruby/version.rb +1 -1
- metadata +24 -2
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/mobile/google_pay/payment_subtypes'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Requests
|
6
|
+
module Financial
|
7
|
+
module Mobile
|
8
|
+
# Google Pay transaction request
|
9
|
+
class GooglePay < Requests::Base::Financial
|
10
|
+
|
11
|
+
attr_accessor :payment_subtype
|
12
|
+
|
13
|
+
include Mixins::Requests::AddressInfoAttributes
|
14
|
+
include Mixins::Requests::BirthDateAttributes
|
15
|
+
include Mixins::Requests::DocumentAttributes
|
16
|
+
include Mixins::Requests::Financial::AsyncAttributes
|
17
|
+
include Mixins::Requests::Financial::Business::BusinessAttributes
|
18
|
+
include Mixins::Requests::Financial::DynamicDescriptorAttributes
|
19
|
+
include Mixins::Requests::Financial::Mobile::GooglePayTokenAttributes
|
20
|
+
include Mixins::Requests::Financial::NotificationAttributes
|
21
|
+
include Mixins::Requests::Financial::PaymentAttributes
|
22
|
+
include Mixins::Requests::Financial::Threeds::Version2::CommonAttributes
|
23
|
+
|
24
|
+
# Define a payment token from a JSON string
|
25
|
+
def json_token=(value)
|
26
|
+
json_object = Utils::Common.parse_json_string value
|
27
|
+
|
28
|
+
map_google_pay_token_attributes json_object
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
# Google Pay transaction request type
|
34
|
+
def transaction_type
|
35
|
+
Constants::Transactions::GOOGLE_PAY
|
36
|
+
end
|
37
|
+
|
38
|
+
# Google Pay Required fields
|
39
|
+
def init_field_validations
|
40
|
+
super
|
41
|
+
|
42
|
+
required_fields.push *%i[transaction_id payment_subtype amount currency token_signature token_signed_key
|
43
|
+
token_signatures token_protocol_version token_signed_message]
|
44
|
+
|
45
|
+
field_values.merge! currency: Constants::Currencies::Iso4217.all.map(&:upcase),
|
46
|
+
payment_subtype: Constants::Transactions::Parameters::Mobile::GooglePay::
|
47
|
+
PaymentSubtypes.all
|
48
|
+
field_values.merge! threeds_field_validations
|
49
|
+
|
50
|
+
field_value_dependencies.merge! threeds_field_conditional_validations
|
51
|
+
end
|
52
|
+
|
53
|
+
# Special validations upon document building
|
54
|
+
def check_requirements
|
55
|
+
validate_threeds_card_holder_dates
|
56
|
+
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
60
|
+
# Google Pay Payment Transaction Structure
|
61
|
+
def payment_transaction_structure # rubocop:disable Metrics/MethodLength
|
62
|
+
payment_attributes_structure.merge(
|
63
|
+
{
|
64
|
+
payment_subtype: payment_subtype,
|
65
|
+
payment_token: google_pay_token_structure,
|
66
|
+
customer_email: customer_email,
|
67
|
+
customer_phone: customer_phone,
|
68
|
+
birth_date: birth_date,
|
69
|
+
notification_url: notification_url,
|
70
|
+
return_success_url: return_success_url,
|
71
|
+
return_failure_url: return_failure_url,
|
72
|
+
billing_address: billing_address_parameters_structure,
|
73
|
+
shipping_address: shipping_address_parameters_structure,
|
74
|
+
business_attributes: business_attributes_structure,
|
75
|
+
dynamic_descriptor_params: dynamic_descriptor_structure,
|
76
|
+
document_id: document_id,
|
77
|
+
threeds_v2_params: threeds_v2_common_attributes_structure
|
78
|
+
}
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
# Map the Google Pay Token attributes from the given Hash object
|
85
|
+
def map_google_pay_token_attributes(json_object)
|
86
|
+
return nil unless json_object.is_a? Hash
|
87
|
+
|
88
|
+
json_object.each do |token_key, token_value|
|
89
|
+
if token_value.is_a? Hash
|
90
|
+
map_google_pay_token_attributes token_value
|
91
|
+
|
92
|
+
next
|
93
|
+
end
|
94
|
+
|
95
|
+
token_method = "token_#{GenesisRuby::Utils::Common.camel_to_snake_case(token_key)}="
|
96
|
+
|
97
|
+
__send__ token_method, token_value if respond_to? token_method
|
98
|
+
end
|
99
|
+
|
100
|
+
nil
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/online_banking/payment_types'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/online_banking/bank_code_currencies'
|
3
|
+
|
4
|
+
module GenesisRuby
|
5
|
+
module Api
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module OnlineBankingPayments
|
9
|
+
module OnlineBanking
|
10
|
+
# Online Banking PayIn transaction class
|
11
|
+
class PayIn < Base::Financial # rubocop:disable Metrics/ClassLength
|
12
|
+
|
13
|
+
include Api::Mixins::Requests::AddressInfoAttributes
|
14
|
+
include Api::Mixins::Requests::DocumentAttributes
|
15
|
+
include Api::Mixins::Requests::Financial::AsyncAttributes
|
16
|
+
include Api::Mixins::Requests::Financial::OnlineBankingPayments::VirtualPaymentAddressAttributes
|
17
|
+
include Api::Mixins::Requests::Financial::PaymentAttributes
|
18
|
+
|
19
|
+
attr_accessor :user_category, :payment_type, :bank_code, :consumer_reference, :auth_code
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
# Online Banking PayIn transaction type
|
24
|
+
def transaction_type
|
25
|
+
Api::Constants::Transactions::ONLINE_BANKING_PAYIN
|
26
|
+
end
|
27
|
+
|
28
|
+
# Online Banking PayIn field validations
|
29
|
+
def init_field_validations # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
|
+
required_fields.push *%i[transaction_id return_success_url return_failure_url amount currency bank_code]
|
31
|
+
|
32
|
+
field_values.merge! payment_type: Api::Constants::Transactions::Parameters::OnlineBanking::
|
33
|
+
PaymentTypes.all,
|
34
|
+
currency: Api::Constants::Transactions::Parameters::OnlineBanking::
|
35
|
+
BankCodeCurrencies.all.map(&:upcase),
|
36
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodes.all
|
37
|
+
|
38
|
+
field_value_dependencies.merge!(
|
39
|
+
{
|
40
|
+
currency: {
|
41
|
+
AUD: {
|
42
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
43
|
+
.bank_codes_per_currency('AUD')
|
44
|
+
},
|
45
|
+
BRL: {
|
46
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
47
|
+
.bank_codes_per_currency('BRL')
|
48
|
+
},
|
49
|
+
CAD: {
|
50
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
51
|
+
.bank_codes_per_currency('CAD')
|
52
|
+
},
|
53
|
+
CHF: {
|
54
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
55
|
+
.bank_codes_per_currency('CHF')
|
56
|
+
},
|
57
|
+
CNY: {
|
58
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
59
|
+
.bank_codes_per_currency('CNY')
|
60
|
+
},
|
61
|
+
CLP: {
|
62
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
63
|
+
.bank_codes_per_currency('CLP')
|
64
|
+
},
|
65
|
+
EUR: {
|
66
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
67
|
+
.bank_codes_per_currency('EUR')
|
68
|
+
},
|
69
|
+
THB: {
|
70
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
71
|
+
.bank_codes_per_currency('THB')
|
72
|
+
},
|
73
|
+
USD: {
|
74
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
75
|
+
.bank_codes_per_currency('USD')
|
76
|
+
},
|
77
|
+
MYR: {
|
78
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
79
|
+
.bank_codes_per_currency('MYR')
|
80
|
+
},
|
81
|
+
PEN: {
|
82
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
83
|
+
.bank_codes_per_currency('PEN')
|
84
|
+
},
|
85
|
+
PYG: {
|
86
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
87
|
+
.bank_codes_per_currency('PYG')
|
88
|
+
},
|
89
|
+
IDR: {
|
90
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
91
|
+
.bank_codes_per_currency('IDR')
|
92
|
+
},
|
93
|
+
INR: {
|
94
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
95
|
+
.bank_codes_per_currency('INR')
|
96
|
+
},
|
97
|
+
MXN: {
|
98
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
99
|
+
.bank_codes_per_currency('MXN')
|
100
|
+
},
|
101
|
+
PHP: {
|
102
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
103
|
+
.bank_codes_per_currency('PHP')
|
104
|
+
},
|
105
|
+
SGD: {
|
106
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
107
|
+
.bank_codes_per_currency('SGD')
|
108
|
+
},
|
109
|
+
UYU: {
|
110
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
111
|
+
.bank_codes_per_currency('UYU')
|
112
|
+
},
|
113
|
+
VND: {
|
114
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
115
|
+
.bank_codes_per_currency('VND')
|
116
|
+
},
|
117
|
+
PLN: {
|
118
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
119
|
+
.bank_codes_per_currency('PLN')
|
120
|
+
},
|
121
|
+
GBP: {
|
122
|
+
bank_code: Api::Constants::Transactions::Parameters::OnlineBanking::BankCodeCurrencies
|
123
|
+
.bank_codes_per_currency('GBP')
|
124
|
+
}
|
125
|
+
}
|
126
|
+
}
|
127
|
+
)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Online Banking PayIn parameters structure
|
131
|
+
def payment_transaction_structure # rubocop:disable Metrics/MethodLength
|
132
|
+
payment_attributes_structure.merge(
|
133
|
+
{
|
134
|
+
return_success_url: return_success_url,
|
135
|
+
return_failure_url: return_failure_url,
|
136
|
+
billing_address: billing_address_parameters_structure,
|
137
|
+
shipping_address: shipping_address_parameters_structure,
|
138
|
+
customer_email: customer_email,
|
139
|
+
customer_phone: customer_phone,
|
140
|
+
payment_type: payment_type,
|
141
|
+
bank_code: bank_code,
|
142
|
+
document_id: document_id,
|
143
|
+
user_category: user_category,
|
144
|
+
virtual_payment_address: virtual_payment_address,
|
145
|
+
consumer_reference: consumer_reference,
|
146
|
+
auth_code: auth_code
|
147
|
+
}
|
148
|
+
)
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
@@ -14,8 +14,8 @@ module GenesisRuby
|
|
14
14
|
Api::Constants::Transactions::VOID
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
17
|
+
def init_field_validations
|
18
|
+
required_fields.push *%i[transaction_id reference_id]
|
19
19
|
end
|
20
20
|
|
21
21
|
# Void transaction request structure
|
@@ -116,26 +116,20 @@ module GenesisRuby
|
|
116
116
|
init_api_wpf_configuration
|
117
117
|
end
|
118
118
|
|
119
|
-
def
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
return_cancel_url
|
128
|
-
transaction_types
|
129
|
-
]
|
119
|
+
def init_field_validations
|
120
|
+
required_fields.push *%i[transaction_id amount currency notification_url return_success_url
|
121
|
+
return_failure_url return_cancel_url transaction_types]
|
122
|
+
|
123
|
+
field_values.merge!(
|
124
|
+
{ currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase) },
|
125
|
+
threeds_field_validations
|
126
|
+
)
|
130
127
|
end
|
131
128
|
|
132
129
|
# Perform validation over the defined parameters upon request execution
|
133
130
|
def check_requirements
|
134
|
-
unless GenesisRuby::Api::Constants::Currencies::Iso4217.valid?(currency)
|
135
|
-
raise ParameterError, "Invalid Currency given with value #{currency}"
|
136
|
-
end
|
137
|
-
|
138
131
|
validate_reminders
|
132
|
+
validate_threeds_card_holder_dates
|
139
133
|
|
140
134
|
super
|
141
135
|
end
|
@@ -185,6 +179,8 @@ module GenesisRuby
|
|
185
179
|
|
186
180
|
# Add every transaction type to the transaction types structure
|
187
181
|
def transaction_types=(value)
|
182
|
+
@transaction_types = [] if value.nil?
|
183
|
+
|
188
184
|
@transaction_types ||= []
|
189
185
|
|
190
186
|
@transaction_types.push(value)
|
@@ -17,8 +17,8 @@ module GenesisRuby
|
|
17
17
|
@api_config.url = build_request_url subdomain: 'wpf', path: 'wpf/reconcile'
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
|
20
|
+
def init_field_validations
|
21
|
+
required_fields.push *%i[unique_id]
|
22
22
|
end
|
23
23
|
|
24
24
|
# WPF Reconcile request structure
|
@@ -86,6 +86,12 @@ module GenesisRuby
|
|
86
86
|
# Build XMl Document part from Array
|
87
87
|
def build_array(element_name, element_value)
|
88
88
|
element_value.each do |tag_value|
|
89
|
+
if tag_value.is_a? Hash
|
90
|
+
add_node element_name, tag_value
|
91
|
+
|
92
|
+
next
|
93
|
+
end
|
94
|
+
|
89
95
|
add_element element_name, tag_value
|
90
96
|
end
|
91
97
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'date'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module GenesisRuby
|
5
6
|
module Utils
|
@@ -108,6 +109,31 @@ module GenesisRuby
|
|
108
109
|
false
|
109
110
|
end
|
110
111
|
|
112
|
+
# Parse JSON string
|
113
|
+
def parse_json_string(value)
|
114
|
+
JSON.parse value
|
115
|
+
rescue StandardError => e
|
116
|
+
raise InvalidArgumentError, "Given JSON string is invalid: #{e.message}"
|
117
|
+
end
|
118
|
+
|
119
|
+
# String conversion from CamelCase to snake_case
|
120
|
+
def camel_to_snake_case(camel_cased_word)
|
121
|
+
camel_cased_word.to_s.gsub(/::/, '/')
|
122
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
123
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
124
|
+
.tr('-', '_')
|
125
|
+
.downcase
|
126
|
+
end
|
127
|
+
|
128
|
+
# String conversion from snake_case to CamelCase
|
129
|
+
def snake_to_camel_case(snake_case_word, lower: true)
|
130
|
+
string = snake_case_word.to_s.split(/_/).map(&:capitalize).join
|
131
|
+
|
132
|
+
string.sub!(/^[[:alpha:]]/, &:downcase) if lower
|
133
|
+
|
134
|
+
string
|
135
|
+
end
|
136
|
+
|
111
137
|
end
|
112
138
|
|
113
139
|
end
|
@@ -19,7 +19,7 @@ module GenesisRuby
|
|
19
19
|
EFECTY, ELO, EPS,
|
20
20
|
EZEECARD_PAYOUT, EZEEWALLET,
|
21
21
|
FASHIONCHEQUE,
|
22
|
-
|
22
|
+
GOOGLE_PAY,
|
23
23
|
IDEAL, IDEBIT_PAYIN, IDEBIT_PAYOUT, INCREMENTAL_AUTHORIZE, INSTA_DEBIT_PAYIN, INSTA_DEBIT_PAYOUT,
|
24
24
|
INTERSOLVE, ITAU,
|
25
25
|
MULTIBANCO, MY_BANK,
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Utils
|
3
|
+
module Transactions
|
4
|
+
module TravelData
|
5
|
+
module AirlineItinerary
|
6
|
+
# Airline Itinerary Data base class
|
7
|
+
class Base
|
8
|
+
|
9
|
+
include Api::Mixins::Requests::RestrictedSetter
|
10
|
+
|
11
|
+
# Constructor
|
12
|
+
def initialize(params = {}) # rubocop:disable Style/OptionHash
|
13
|
+
parse_attributes params if params.is_a? Hash
|
14
|
+
|
15
|
+
super()
|
16
|
+
end
|
17
|
+
|
18
|
+
# Item attribute structure
|
19
|
+
def attributes_structure; end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
# Initialize attributes
|
24
|
+
def parse_attributes(params)
|
25
|
+
params.each { |key, value| __send__ "#{key}=", value }
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'genesis_ruby/utils/transactions/travel_data/airline_itinerary/base'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Utils
|
5
|
+
module Transactions
|
6
|
+
module TravelData
|
7
|
+
module AirlineItinerary
|
8
|
+
# Signify a single AirlineItinerary Leg data
|
9
|
+
class Leg < Base
|
10
|
+
|
11
|
+
attr_reader :carrier_code, :service_class, :origin_city, :destination_city, :fare_basis_code,
|
12
|
+
:flight_number, :departure_time_segment, :stopover_code
|
13
|
+
attr_accessor :departure_time
|
14
|
+
|
15
|
+
# Departure date
|
16
|
+
def departure_date
|
17
|
+
@departure_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
18
|
+
end
|
19
|
+
|
20
|
+
# Departure date
|
21
|
+
def departure_date=(value)
|
22
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
23
|
+
end
|
24
|
+
|
25
|
+
# Arrival date
|
26
|
+
def arrival_date
|
27
|
+
@arrival_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
28
|
+
end
|
29
|
+
|
30
|
+
# Arrival date
|
31
|
+
def arrival_date=(value)
|
32
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
33
|
+
end
|
34
|
+
|
35
|
+
# Carrier Code
|
36
|
+
def carrier_code=(value)
|
37
|
+
limited_string attribute: __method__, value: value.to_s, max: 2
|
38
|
+
end
|
39
|
+
|
40
|
+
# Service Class
|
41
|
+
def service_class=(value)
|
42
|
+
limited_string attribute: __method__, value: value.to_s, max: 1
|
43
|
+
end
|
44
|
+
|
45
|
+
# Origin City
|
46
|
+
def origin_city=(value)
|
47
|
+
limited_string attribute: __method__, value: value.to_s, max: 3
|
48
|
+
end
|
49
|
+
|
50
|
+
# Destination City
|
51
|
+
def destination_city=(value)
|
52
|
+
limited_string attribute: __method__, value: value.to_s, max: 3
|
53
|
+
end
|
54
|
+
|
55
|
+
# Fare basis code
|
56
|
+
def fare_basis_code=(value)
|
57
|
+
limited_string attribute: __method__, value: value.to_s, max: 6
|
58
|
+
end
|
59
|
+
|
60
|
+
# Flight number
|
61
|
+
def flight_number=(value)
|
62
|
+
limited_string attribute: __method__, value: value.to_s, max: 5
|
63
|
+
end
|
64
|
+
|
65
|
+
# Departure time segment
|
66
|
+
def departure_time_segment=(value)
|
67
|
+
allowed_options attribute: __method__, value: value.to_s, allowed: %w(A P), allow_empty: true
|
68
|
+
end
|
69
|
+
|
70
|
+
# Stopover code
|
71
|
+
def stopover_code=(value)
|
72
|
+
allowed_options attribute: __method__, value: value, allowed: [0, 1], allow_empty: true
|
73
|
+
end
|
74
|
+
|
75
|
+
# Get Single Leg structure
|
76
|
+
def attributes_structure # rubocop:disable Metrics/MethodLength
|
77
|
+
{
|
78
|
+
departure_date: departure_date,
|
79
|
+
arrival_date: arrival_date,
|
80
|
+
carrier_code: carrier_code,
|
81
|
+
service_class: service_class,
|
82
|
+
origin_city: origin_city,
|
83
|
+
destination_city: destination_city,
|
84
|
+
stopover_code: stopover_code,
|
85
|
+
fare_basis_code: fare_basis_code,
|
86
|
+
flight_number: flight_number,
|
87
|
+
departure_time: departure_time,
|
88
|
+
departure_time_segment: departure_time_segment
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'genesis_ruby/utils/transactions/travel_data/airline_itinerary/base'
|
2
|
+
require 'genesis_ruby/utils/money_format'
|
3
|
+
|
4
|
+
module GenesisRuby
|
5
|
+
module Utils
|
6
|
+
module Transactions
|
7
|
+
module TravelData
|
8
|
+
module AirlineItinerary
|
9
|
+
# Signify a single AirlineItinerary Tax data
|
10
|
+
class Tax < Base
|
11
|
+
|
12
|
+
attr_reader :fee_type
|
13
|
+
attr_accessor :fee_amount, :currency
|
14
|
+
|
15
|
+
# Fee type
|
16
|
+
def fee_type=(value)
|
17
|
+
limited_string attribute: __method__, value: value, max: 8
|
18
|
+
end
|
19
|
+
|
20
|
+
# Get Single Tax structure
|
21
|
+
def attributes_structure
|
22
|
+
{
|
23
|
+
fee_amount: parse_fee_amount,
|
24
|
+
fee_type: fee_type
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
# Minor currency conversion if currency is set
|
31
|
+
def parse_fee_amount
|
32
|
+
return fee_amount if currency.nil? || fee_amount.nil?
|
33
|
+
|
34
|
+
MoneyFormat.amount_to_exponent fee_amount, currency
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -16,7 +16,7 @@ module GenesisRuby
|
|
16
16
|
BRADESCO,
|
17
17
|
CABAL, CASHU, CENCOSUD, DAVIVIENDA,
|
18
18
|
EFECTY, ELO, EPS, EZEEWALLET, FASHIONCHEQUE,
|
19
|
-
|
19
|
+
GOOGLE_PAY,
|
20
20
|
IDEAL, IDEBIT_PAYIN, INSTA_DEBIT_PAYIN, INTERSOLVE, ITAU,
|
21
21
|
MULTIBANCO, MY_BANK,
|
22
22
|
NARANJA, NATIVA, NEOSURF, NETELLER,
|
data/lib/genesis_ruby/version.rb
CHANGED