genesis_ruby 0.1.6 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- 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