genesis_ruby 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile.lock +2 -4
- data/README.md +88 -3
- data/VERSION +1 -1
- data/lib/genesis_ruby/api/constants/transactions/parameters/mpi_protocol_sub_versions.rb +43 -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/financial/cards/mpi_attributes.rb +14 -4
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb +2 -0
- data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_indian_card_attributes.rb +4 -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/requests/financial/capture.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +3 -1
- data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +3 -1
- data/lib/genesis_ruby/builders/xml.rb +6 -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 +13 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5629a8aa5e0635fa0106507b7ca62e605065007441fff2479c1ec390237d8382
|
4
|
+
data.tar.gz: c618d130f46775abfeda2cc340050c6cdb5492fcd97ba64a2bc0bafac5db086b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 592d0e476d4e7a0bb1920eef3c807ff420adb6c35e3bd32a6ad1bef6e7582ddc90d4b1b4d7d1998d9873865af22ded0c7bcacc2950331234705f1658a61a71f9
|
7
|
+
data.tar.gz: c3d712b3f128740ce84d32bad8302e030fc2826cb0f0b06cfaec1e26e2e96efe0ef2f271e6afe869b72b9db823f0724644dab4b3b30a1e6240008cc740617a8a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
0.1.7
|
2
|
+
-----
|
3
|
+
**Features**:
|
4
|
+
|
5
|
+
* Removed GiroPay transaction type support through the Web Payment Form
|
6
|
+
* Added Protocol Sub Version parameter support part of the MPI attributes
|
7
|
+
* Added Level 3 Travel Data attributes support to the following transaction requests:
|
8
|
+
* Sale
|
9
|
+
* Sale 3D
|
10
|
+
* Authorize
|
11
|
+
* Authorize 3D
|
12
|
+
* Init Recurring Sale
|
13
|
+
* Init Recurring Sale 3D
|
14
|
+
* RecurringSale
|
15
|
+
* Capture
|
16
|
+
|
1
17
|
0.1.6
|
2
18
|
-----
|
3
19
|
**Features**:
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
genesis_ruby (0.1.
|
4
|
+
genesis_ruby (0.1.7)
|
5
5
|
net-http (~> 0.3.2)
|
6
6
|
nokogiri (~> 1.14)
|
7
7
|
|
@@ -39,14 +39,12 @@ GEM
|
|
39
39
|
json (2.7.1)
|
40
40
|
language_server-protocol (3.17.0.3)
|
41
41
|
mini_mime (1.1.5)
|
42
|
-
mini_portile2 (2.8.5)
|
43
42
|
multi_xml (0.6.0)
|
44
43
|
mustermann (3.0.0)
|
45
44
|
ruby2_keywords (~> 0.0.1)
|
46
45
|
net-http (0.3.2)
|
47
46
|
uri
|
48
|
-
nokogiri (1.
|
49
|
-
mini_portile2 (~> 2.8.2)
|
47
|
+
nokogiri (1.16.6-x86_64-darwin)
|
50
48
|
racc (~> 1.4)
|
51
49
|
octokit (7.2.0)
|
52
50
|
faraday (>= 1, < 3)
|
data/README.md
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
2
|
+
Genesis Ruby
|
3
|
+
========
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/genesis_ruby.svg)](https://badge.fury.io/rb/genesis_ruby)
|
4
5
|
[![Software License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE)
|
5
6
|
|
6
7
|
Ruby Client for Genesis Payment Processing Gateway
|
7
8
|
|
8
|
-
|
9
|
+
Overview
|
10
|
+
--------
|
9
11
|
|
10
12
|
Client Library for processing payments through Genesis Payment Processing Gateway. Its highly recommended to checkout "Genesis Payment Gateway API Documentation" first, in order to get an overview of Genesis's Payment Gateway API and functionality.
|
11
13
|
|
@@ -485,6 +487,89 @@ request.recurring_type = GenesisRuby::Api::Constants::Transactions::Parameters::
|
|
485
487
|
```
|
486
488
|
</details>
|
487
489
|
|
490
|
+
#### Level 3 Travel Data
|
491
|
+
Level 3 travel data is supplied as optional data to the standard API request. If the supplied is valid travel data then the transaction will be processed as a travel transaction and will qualify for the travel Incentive rates. Otherwise the transaction will be processed normally as a regular transaction. Note that the travel data will be stored as part of the transaction in all cases.
|
492
|
+
|
493
|
+
<details>
|
494
|
+
<summary>Example Leg Data</summary>
|
495
|
+
|
496
|
+
```ruby
|
497
|
+
GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Leg.new departure_date: '2034-12-31',
|
498
|
+
arrival_date: '2034-12-31',
|
499
|
+
carrier_code: 12,
|
500
|
+
service_class: 1,
|
501
|
+
origin_city: 'VAR',
|
502
|
+
destination_city: 'FRA',
|
503
|
+
stopover_code: 0,
|
504
|
+
fare_basis_code: 1,
|
505
|
+
flight_number: 'W1234',
|
506
|
+
departure_time: '11:37',
|
507
|
+
departure_time_segment: 'P'
|
508
|
+
```
|
509
|
+
|
510
|
+
</details>
|
511
|
+
|
512
|
+
<details>
|
513
|
+
<summary>Example Tax Data</summary>
|
514
|
+
|
515
|
+
```ruby
|
516
|
+
GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Tax.new fee_type: 'type',
|
517
|
+
fee_amount: 0.99 # will converted automatically to minor format based on the currency
|
518
|
+
```
|
519
|
+
|
520
|
+
</details>
|
521
|
+
|
522
|
+
<details>
|
523
|
+
<summary>Example Level 3 Travel Data</summary>
|
524
|
+
|
525
|
+
```ruby
|
526
|
+
# Ticket attributes
|
527
|
+
request.travel_aid_ticket_number = '123456789012345'
|
528
|
+
request.travel_aid_passenger_name = 'Test Example'
|
529
|
+
request.travel_aid_customer_code = 1
|
530
|
+
request.travel_aid_issuing_carrier = 'AAAA'
|
531
|
+
request.travel_aid_total_fare = '0.99' # will converted automatically to minor format based on the currency
|
532
|
+
request.travel_aid_agency_name = 'Agency'
|
533
|
+
request.travel_aid_agency_code = 'AG001'
|
534
|
+
request.travel_aid_date_of_issue = '2018-02-01'
|
535
|
+
request.travel_aid_restricted_ticket_indicator = 1
|
536
|
+
request.travel_aid_confirmation_information = 'Confirmation'
|
537
|
+
|
538
|
+
request.add_travel_aid_leg leg
|
539
|
+
request.add_travel_aid_tax tax
|
540
|
+
|
541
|
+
# Car rental
|
542
|
+
request.travel_car_rental_purchase_identifier = '12478'
|
543
|
+
request.travel_car_rental_class_id = 3
|
544
|
+
request.travel_car_rental_pickup_date = '2034-12-31'
|
545
|
+
request.travel_car_rental_renter_name = 'John Smith'
|
546
|
+
request.travel_car_rental_return_city = 'Varna'
|
547
|
+
request.travel_car_rental_return_state = 'VAR'
|
548
|
+
request.travel_car_rental_return_country = 'BGR'
|
549
|
+
request.travel_car_rental_return_date = '2034-12-31'
|
550
|
+
request.travel_car_rental_renter_return_location_id = '12478'
|
551
|
+
request.travel_car_rental_customer_code = 1
|
552
|
+
request.travel_car_rental_extra_charges = 2
|
553
|
+
request.travel_car_rental_no_show_indicator = 1
|
554
|
+
|
555
|
+
# Hotel Rental attributes
|
556
|
+
request.travel_hotel_rental_purchase_identifier = '12478'
|
557
|
+
request.travel_hotel_rental_arrival_date = '2034-12-31'
|
558
|
+
request.travel_hotel_rental_departure_date = '2034-12-31'
|
559
|
+
request.travel_hotel_rental_customer_code = '12478'
|
560
|
+
request.travel_hotel_rental_no_show_indicator = 1
|
561
|
+
|
562
|
+
# Reference Ticket Attributes
|
563
|
+
request.travel_ac_ticket_reference_id = '8b7e3575e5605ea7e1895707a3e92837'
|
564
|
+
request.travel_ac_ticket_document_number = '1111'
|
565
|
+
request.travel_ac_issued_with_ticket_number = '12321'
|
566
|
+
|
567
|
+
# Ancillary Charges
|
568
|
+
request.travel_ac_type = 'BF'
|
569
|
+
request.travel_ac_sub_type = 'BG'
|
570
|
+
```
|
571
|
+
|
572
|
+
</details>
|
488
573
|
|
489
574
|
## Response
|
490
575
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Constants
|
4
|
+
module Transactions
|
5
|
+
module Parameters
|
6
|
+
# Mpi Protocol Versions allowed values
|
7
|
+
class MpiProtocolSubVersions
|
8
|
+
|
9
|
+
extend Mixins::Constants::Common
|
10
|
+
|
11
|
+
# Sub-protocol Version 1
|
12
|
+
PROTOCOL_SUB_VERSION_1 = 1
|
13
|
+
|
14
|
+
# Sub-protocol Version 2
|
15
|
+
PROTOCOL_SUB_VERSION_2 = 2
|
16
|
+
|
17
|
+
# Sub-protocol Version 3
|
18
|
+
PROTOCOL_SUB_VERSION_3 = 3
|
19
|
+
|
20
|
+
# Sub-protocol Version 4
|
21
|
+
PROTOCOL_SUB_VERSION_4 = 4
|
22
|
+
|
23
|
+
# Sub-protocol Version 5
|
24
|
+
PROTOCOL_SUB_VERSION_5 = 5
|
25
|
+
|
26
|
+
# Sub-protocol Version 6
|
27
|
+
PROTOCOL_SUB_VERSION_6 = 6
|
28
|
+
|
29
|
+
# Sub-protocol Version 7
|
30
|
+
PROTOCOL_SUB_VERSION_7 = 7
|
31
|
+
|
32
|
+
# Sub-protocol Version 8
|
33
|
+
PROTOCOL_SUB_VERSION_8 = 8
|
34
|
+
|
35
|
+
# Sub-protocol Version 9
|
36
|
+
PROTOCOL_SUB_VERSION_9 = 9
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/genesis_ruby/api/constants/transactions/parameters/travel_data/ancillary_charges_types.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Constants
|
4
|
+
module Transactions
|
5
|
+
module Parameters
|
6
|
+
module TravelData
|
7
|
+
# Ancillary Charges Types
|
8
|
+
# Identify the Service Category Code for the primary type of service that has been provided
|
9
|
+
class AncillaryChargesTypes
|
10
|
+
|
11
|
+
extend Mixins::Constants::Common
|
12
|
+
|
13
|
+
BF = 'BF'.freeze
|
14
|
+
BG = 'BG'.freeze
|
15
|
+
CF = 'CF'.freeze
|
16
|
+
CG = 'CG'.freeze
|
17
|
+
CO = 'CO'.freeze
|
18
|
+
FF = 'FF'.freeze
|
19
|
+
GF = 'GF'.freeze
|
20
|
+
GT = 'GT'.freeze
|
21
|
+
IE = 'IE'.freeze
|
22
|
+
LG = 'LG'.freeze
|
23
|
+
MD = 'MD'.freeze
|
24
|
+
ML = 'ML'.freeze
|
25
|
+
OT = 'OT'.freeze
|
26
|
+
PA = 'PA'.freeze
|
27
|
+
PT = 'PT'.freeze
|
28
|
+
SA = 'SA'.freeze
|
29
|
+
SB = 'SB'.freeze
|
30
|
+
SF = 'SF'.freeze
|
31
|
+
ST = 'ST'.freeze
|
32
|
+
TS = 'TS'.freeze
|
33
|
+
UN = 'UN'.freeze
|
34
|
+
UP = 'UP'.freeze
|
35
|
+
WI = 'WI'.freeze
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -115,10 +115,6 @@ module GenesisRuby
|
|
115
115
|
# They can also be refunded.
|
116
116
|
FASHIONCHEQUE = 'fashioncheque'.freeze
|
117
117
|
|
118
|
-
# GiroPay
|
119
|
-
# Direct PPRO transaction
|
120
|
-
GIROPAY = 'giropay'.freeze
|
121
|
-
|
122
118
|
# Google Pay allows shoppers to purchase with credit and debit cards linked to their Google account.
|
123
119
|
GOOGLE_PAY = 'google_pay'.freeze
|
124
120
|
|
@@ -260,7 +256,7 @@ module GenesisRuby
|
|
260
256
|
# PostFinance is an online banking provider in Switzerland
|
261
257
|
POST_FINANCE = 'post_finance'.freeze
|
262
258
|
|
263
|
-
# Supports payments via EPS, SafetyPay, TrustPay, ELV, Przelewy24
|
259
|
+
# Supports payments via EPS, SafetyPay, TrustPay, ELV, Przelewy24
|
264
260
|
PPRO = 'ppro'.freeze
|
265
261
|
|
266
262
|
# PSE (Pagos Seguros en Linea) is the preferred alternative payment solution in Colombia.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'genesis_ruby/api/constants/transactions/parameters/mpi_protocol_versions'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/mpi_protocol_sub_versions'
|
2
3
|
|
3
4
|
module GenesisRuby
|
4
5
|
module Api
|
@@ -9,9 +10,8 @@ module GenesisRuby
|
|
9
10
|
# Mixin Mpi Attributes
|
10
11
|
module MpiAttributes
|
11
12
|
|
12
|
-
attr_reader :mpi_threeds_challenge_indicator, :mpi_protocol_version
|
13
|
-
attr_accessor :mpi_cavv, :mpi_eci, :mpi_xid, :mpi_directory_server_id,
|
14
|
-
:mpi_asc_transaction_id
|
13
|
+
attr_reader :mpi_threeds_challenge_indicator, :mpi_protocol_version, :mpi_protocol_sub_version
|
14
|
+
attr_accessor :mpi_cavv, :mpi_eci, :mpi_xid, :mpi_directory_server_id, :mpi_asc_transaction_id
|
15
15
|
|
16
16
|
# The used 3DS protocol version. Default is 1 if not supplied.
|
17
17
|
def mpi_protocol_version=(value)
|
@@ -31,6 +31,15 @@ module GenesisRuby
|
|
31
31
|
allowed_options attribute: __method__, allowed: allowed_indicators, value: value, allow_empty: true
|
32
32
|
end
|
33
33
|
|
34
|
+
# The used 3DSv2 authentication protocol.
|
35
|
+
def mpi_protocol_sub_version=(value)
|
36
|
+
allowed_options attribute: __method__,
|
37
|
+
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::
|
38
|
+
MpiProtocolSubVersions.all,
|
39
|
+
value: value.to_i,
|
40
|
+
allow_empty: true
|
41
|
+
end
|
42
|
+
|
34
43
|
protected
|
35
44
|
|
36
45
|
# Mpi Attributes Structure
|
@@ -41,7 +50,8 @@ module GenesisRuby
|
|
41
50
|
protocol_version: mpi_protocol_version,
|
42
51
|
directory_server_id: mpi_directory_server_id,
|
43
52
|
acs_transaction_id: mpi_asc_transaction_id,
|
44
|
-
threeds_challenge_indicator: mpi_threeds_challenge_indicator
|
53
|
+
threeds_challenge_indicator: mpi_threeds_challenge_indicator,
|
54
|
+
protocol_sub_version: mpi_protocol_sub_version
|
45
55
|
}
|
46
56
|
end
|
47
57
|
|
data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/managed_recurring/modes'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/managed_recurring/intervals'
|
1
3
|
require 'genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_indian_card_attributes'
|
2
4
|
|
3
5
|
module GenesisRuby
|
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/managed_recurring/payment_types'
|
2
|
+
require 'genesis_ruby/api/constants/transactions/parameters/managed_recurring/amount_types'
|
3
|
+
require 'genesis_ruby/api/constants/transactions/parameters/managed_recurring/frequencies'
|
4
|
+
|
1
5
|
module GenesisRuby
|
2
6
|
module Api
|
3
7
|
module Mixins
|
data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
require 'genesis_ruby/utils/transactions/travel_data/airline_itinerary/leg'
|
2
|
+
require 'genesis_ruby/utils/transactions/travel_data/airline_itinerary/tax'
|
3
|
+
|
4
|
+
module GenesisRuby
|
5
|
+
module Api
|
6
|
+
module Mixins
|
7
|
+
module Requests
|
8
|
+
module Financial
|
9
|
+
module TravelData
|
10
|
+
# Level 3 Data Airline Itinerary Attributes
|
11
|
+
module AirlineItineraryAttributes
|
12
|
+
|
13
|
+
attr_reader :travel_aid_restricted_ticket_indicator, :travel_aid_ticket_number,
|
14
|
+
:travel_aid_passenger_name, :travel_aid_customer_code, :travel_aid_issuing_carrier,
|
15
|
+
:travel_aid_agency_name, :travel_aid_agency_code
|
16
|
+
attr_accessor :travel_aid_total_fare, :travel_aid_confirmation_information
|
17
|
+
|
18
|
+
# Date Of Issue
|
19
|
+
def travel_aid_date_of_issue
|
20
|
+
@travel_aid_date_of_issue&.strftime GenesisRuby::Api::Constants::DateTimeFormats::DD_MM_YYYY_L_HYPHENS
|
21
|
+
end
|
22
|
+
|
23
|
+
# Date Of Issue
|
24
|
+
def travel_aid_date_of_issue=(value)
|
25
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
26
|
+
end
|
27
|
+
|
28
|
+
# Restricted Ticket Indicator
|
29
|
+
def travel_aid_restricted_ticket_indicator=(value)
|
30
|
+
allowed_options attribute: __method__, value: value.to_i, allow_empty: true, allowed: [0, 1]
|
31
|
+
end
|
32
|
+
|
33
|
+
# Ticket Number
|
34
|
+
def travel_aid_ticket_number=(value)
|
35
|
+
limited_string attribute: __method__, value: value, max: 15
|
36
|
+
end
|
37
|
+
|
38
|
+
# Passenger name
|
39
|
+
def travel_aid_passenger_name=(value)
|
40
|
+
limited_string attribute: __method__, value: value, max: 29
|
41
|
+
end
|
42
|
+
|
43
|
+
# Customer code
|
44
|
+
def travel_aid_customer_code=(value)
|
45
|
+
limited_string attribute: __method__, value: value, max: 17
|
46
|
+
end
|
47
|
+
|
48
|
+
# Issuing carrier
|
49
|
+
def travel_aid_issuing_carrier=(value)
|
50
|
+
limited_string attribute: __method__, value: value, max: 4
|
51
|
+
end
|
52
|
+
|
53
|
+
# Agency name
|
54
|
+
def travel_aid_agency_name=(value)
|
55
|
+
limited_string attribute: __method__, value: value, max: 30
|
56
|
+
end
|
57
|
+
|
58
|
+
# Agency code
|
59
|
+
def travel_aid_agency_code=(value)
|
60
|
+
limited_string attribute: __method__, value: value, max: 8
|
61
|
+
end
|
62
|
+
|
63
|
+
# AirlineItinerary Legs data. Max legs 10
|
64
|
+
def travel_aid_legs
|
65
|
+
@travel_aid_legs || []
|
66
|
+
end
|
67
|
+
|
68
|
+
# AirlineItinerary Taxes data. Max taxes 10
|
69
|
+
def travel_aid_taxes
|
70
|
+
@travel_aid_taxes || []
|
71
|
+
end
|
72
|
+
|
73
|
+
# Add a single AirlineItinerary Leg data
|
74
|
+
def add_travel_aid_leg(leg)
|
75
|
+
@travel_aid_legs ||= travel_aid_legs
|
76
|
+
leg_obj = GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Leg
|
77
|
+
|
78
|
+
raise InvalidArgumentError, "Leg must be instance of #{leg_obj.name}" unless leg.instance_of? leg_obj
|
79
|
+
|
80
|
+
if travel_aid_legs.count == ALLOWED_ITEMS_COUNT
|
81
|
+
raise InvalidArgumentError, "Allowed Legs count exceeded. Allowed #{ALLOWED_ITEMS_COUNT}."
|
82
|
+
end
|
83
|
+
|
84
|
+
@travel_aid_legs.push leg
|
85
|
+
end
|
86
|
+
|
87
|
+
# Add a single AirlineItinerary Tax data
|
88
|
+
def add_travel_aid_tax(tax)
|
89
|
+
@travel_aid_taxes ||= travel_aid_taxes
|
90
|
+
tax_obj = GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Tax
|
91
|
+
|
92
|
+
raise InvalidArgumentError, "Tax must be instance of #{tax_obj.name}" unless tax.instance_of? tax_obj
|
93
|
+
|
94
|
+
if travel_aid_taxes.count == ALLOWED_ITEMS_COUNT
|
95
|
+
raise InvalidArgumentError, "Allowed Legs count exceeded. Allowed #{ALLOWED_ITEMS_COUNT}."
|
96
|
+
end
|
97
|
+
|
98
|
+
@travel_aid_taxes.push tax
|
99
|
+
end
|
100
|
+
|
101
|
+
# Reset Legs data
|
102
|
+
def clear_travel_aid_legs
|
103
|
+
@travel_aid_legs = []
|
104
|
+
end
|
105
|
+
|
106
|
+
# Reset Taxes
|
107
|
+
def clear_travel_aid_taxes
|
108
|
+
@travel_aid_taxes = []
|
109
|
+
end
|
110
|
+
|
111
|
+
protected
|
112
|
+
|
113
|
+
ALLOWED_ITEMS_COUNT = 10
|
114
|
+
|
115
|
+
# Legs structure
|
116
|
+
def legs_structure
|
117
|
+
parse_items 'leg', travel_aid_legs
|
118
|
+
end
|
119
|
+
|
120
|
+
# Taxes structure
|
121
|
+
def taxes_structure
|
122
|
+
parse_items 'tax', travel_aid_taxes
|
123
|
+
end
|
124
|
+
|
125
|
+
# Prepare structure
|
126
|
+
def parse_items(node_name, items)
|
127
|
+
data = []
|
128
|
+
|
129
|
+
items.each do |item|
|
130
|
+
item.currency = currency if item.respond_to?(:currency) && respond_to?(:currency)
|
131
|
+
data.push item.attributes_structure
|
132
|
+
end
|
133
|
+
|
134
|
+
Hash[node_name.to_sym, data]
|
135
|
+
end
|
136
|
+
|
137
|
+
# Attributes Structure
|
138
|
+
def airline_attributes_structure # rubocop:disable RSpec/MethodLength
|
139
|
+
{
|
140
|
+
ticket_number: travel_aid_ticket_number,
|
141
|
+
passenger_name: travel_aid_passenger_name,
|
142
|
+
customer_code: travel_aid_customer_code,
|
143
|
+
restricted_ticket_indicator: travel_aid_restricted_ticket_indicator,
|
144
|
+
issuing_carrier: travel_aid_issuing_carrier,
|
145
|
+
total_fare: parse_total_fare,
|
146
|
+
agency_name: travel_aid_agency_name,
|
147
|
+
agency_code: travel_aid_agency_code,
|
148
|
+
confirmation_information: travel_aid_confirmation_information,
|
149
|
+
date_of_issue: travel_aid_date_of_issue
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
# Parse Total Fare amount
|
154
|
+
def parse_total_fare
|
155
|
+
return travel_aid_total_fare if currency.nil? || travel_aid_total_fare.nil?
|
156
|
+
|
157
|
+
transform_amount travel_aid_total_fare, currency
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
module Financial
|
6
|
+
module TravelData
|
7
|
+
# Car Rental attributes
|
8
|
+
module CarRentalAttributes
|
9
|
+
|
10
|
+
attr_reader :travel_car_rental_purchase_identifier, :travel_car_rental_class_id,
|
11
|
+
:travel_car_rental_renter_name, :travel_car_rental_return_city,
|
12
|
+
:travel_car_rental_return_state, :travel_car_rental_return_country,
|
13
|
+
:travel_car_rental_renter_return_location_id, :travel_car_rental_customer_code,
|
14
|
+
:travel_car_rental_extra_charges, :travel_car_rental_no_show_indicator
|
15
|
+
|
16
|
+
# Travel Data Purchase Identifier
|
17
|
+
def travel_car_rental_purchase_identifier=(value)
|
18
|
+
limited_string attribute: __method__, value: value, max: 9
|
19
|
+
end
|
20
|
+
|
21
|
+
# Travel Data Class id
|
22
|
+
def travel_car_rental_class_id=(value)
|
23
|
+
allowed_options attribute: __method__,
|
24
|
+
value: value.to_i,
|
25
|
+
allow_empty: true,
|
26
|
+
allowed: [*1..30].push(9999)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Travel Data PickUp Date
|
30
|
+
def travel_car_rental_pickup_date
|
31
|
+
@travel_car_rental_pickup_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::
|
32
|
+
DD_MM_YYYY_L_HYPHENS
|
33
|
+
end
|
34
|
+
|
35
|
+
# Travel Data PickUp Date
|
36
|
+
def travel_car_rental_pickup_date=(value)
|
37
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
38
|
+
end
|
39
|
+
|
40
|
+
# Travel Data Renter Name
|
41
|
+
def travel_car_rental_renter_name=(value)
|
42
|
+
limited_string attribute: __method__, value: value, max: 20
|
43
|
+
end
|
44
|
+
|
45
|
+
# Travel Data Return City
|
46
|
+
def travel_car_rental_return_city=(value)
|
47
|
+
limited_string attribute: __method__, value: value, max: 18
|
48
|
+
end
|
49
|
+
|
50
|
+
# Travel Data Return State
|
51
|
+
def travel_car_rental_return_state=(value)
|
52
|
+
limited_string attribute: __method__, value: value, max: 3
|
53
|
+
end
|
54
|
+
|
55
|
+
# Travel Data Return Country
|
56
|
+
def travel_car_rental_return_country=(value)
|
57
|
+
limited_string attribute: __method__, value: value, max: 3
|
58
|
+
end
|
59
|
+
|
60
|
+
# Travel Data Return Date
|
61
|
+
def travel_car_rental_return_date
|
62
|
+
@travel_car_rental_return_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::
|
63
|
+
DD_MM_YYYY_L_HYPHENS
|
64
|
+
end
|
65
|
+
|
66
|
+
# Travel Data Return Date
|
67
|
+
def travel_car_rental_return_date=(value)
|
68
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
69
|
+
end
|
70
|
+
|
71
|
+
# Travel Data Renter Return Location id
|
72
|
+
def travel_car_rental_renter_return_location_id=(value)
|
73
|
+
limited_string attribute: __method__, value: value, max: 10
|
74
|
+
end
|
75
|
+
|
76
|
+
# Travel Data Customer Code
|
77
|
+
def travel_car_rental_customer_code=(value)
|
78
|
+
limited_string attribute: __method__, value: value, max: 17
|
79
|
+
end
|
80
|
+
|
81
|
+
# Travel Data Extra Charges
|
82
|
+
def travel_car_rental_extra_charges=(value)
|
83
|
+
allowed_options attribute: __method__, value: value.to_i, allow_empty: true, allowed: [*1..5]
|
84
|
+
end
|
85
|
+
|
86
|
+
# Travel Data No Show Indicator
|
87
|
+
def travel_car_rental_no_show_indicator=(value)
|
88
|
+
allowed_options attribute: __method__, value: value.to_i, allow_empty: true, allowed: [0, 1]
|
89
|
+
end
|
90
|
+
|
91
|
+
protected
|
92
|
+
|
93
|
+
# Travel Data Car Rental Attributes Structure
|
94
|
+
def car_rental_attributes_structure # rubocop:disable Metrics/MethodLength
|
95
|
+
{
|
96
|
+
car_rental: {
|
97
|
+
purchase_identifier: travel_car_rental_purchase_identifier,
|
98
|
+
class_id: travel_car_rental_class_id,
|
99
|
+
pickup_date: travel_car_rental_pickup_date,
|
100
|
+
renter_name: travel_car_rental_renter_name,
|
101
|
+
return_city: travel_car_rental_return_city,
|
102
|
+
return_state: travel_car_rental_return_state,
|
103
|
+
return_country: travel_car_rental_return_country,
|
104
|
+
return_date: travel_car_rental_return_date,
|
105
|
+
renter_return_location_id: travel_car_rental_renter_return_location_id,
|
106
|
+
customer_code: travel_car_rental_customer_code,
|
107
|
+
extra_charges: travel_car_rental_extra_charges,
|
108
|
+
no_show_indicator: travel_car_rental_no_show_indicator
|
109
|
+
}
|
110
|
+
}
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
module Financial
|
6
|
+
module TravelData
|
7
|
+
# Hotel Rental Attributes
|
8
|
+
module HotelRentalAttributes
|
9
|
+
|
10
|
+
attr_reader :travel_hotel_rental_purchase_identifier, :travel_hotel_rental_customer_code,
|
11
|
+
:travel_hotel_rental_extra_charges, :travel_hotel_rental_no_show_indicator
|
12
|
+
|
13
|
+
# Hotel Rental Purchase Identifier
|
14
|
+
def travel_hotel_rental_purchase_identifier=(value)
|
15
|
+
limited_string attribute: __method__, value: value, max: 10
|
16
|
+
end
|
17
|
+
|
18
|
+
# Travel Data Arrival date
|
19
|
+
def travel_hotel_rental_arrival_date
|
20
|
+
@travel_hotel_rental_arrival_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::
|
21
|
+
DD_MM_YYYY_L_HYPHENS
|
22
|
+
end
|
23
|
+
|
24
|
+
# Travel Data Arrival Date
|
25
|
+
def travel_hotel_rental_arrival_date=(value)
|
26
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
27
|
+
end
|
28
|
+
|
29
|
+
# Travel Data Departure date
|
30
|
+
def travel_hotel_rental_departure_date
|
31
|
+
@travel_hotel_rental_departure_date&.strftime GenesisRuby::Api::Constants::DateTimeFormats::
|
32
|
+
DD_MM_YYYY_L_HYPHENS
|
33
|
+
end
|
34
|
+
|
35
|
+
# Travel Data Departure Date
|
36
|
+
def travel_hotel_rental_departure_date=(value)
|
37
|
+
parse_date attribute: __method__, value: value, allow_empty: true
|
38
|
+
end
|
39
|
+
|
40
|
+
# Travel Data Customer Code
|
41
|
+
def travel_hotel_rental_customer_code=(value)
|
42
|
+
limited_string attribute: __method__, value: value, max: 17
|
43
|
+
end
|
44
|
+
|
45
|
+
# Travel Data Extra Charges
|
46
|
+
def travel_hotel_rental_extra_charges=(value)
|
47
|
+
allowed_options attribute: __method__, value: value, allow_empty: true, allowed: [*2..7]
|
48
|
+
end
|
49
|
+
|
50
|
+
# Travel Data No Show Indicator
|
51
|
+
def travel_hotel_rental_no_show_indicator=(value)
|
52
|
+
allowed_options attribute: __method__, value: value, allow_empty: true, allowed: [0, 1]
|
53
|
+
end
|
54
|
+
|
55
|
+
protected
|
56
|
+
|
57
|
+
# Hotel Rental attributes structure
|
58
|
+
def hotel_rental_attributes_structure
|
59
|
+
{
|
60
|
+
hotel_rental: {
|
61
|
+
purchase_identifier: travel_hotel_rental_purchase_identifier,
|
62
|
+
arrival_date: travel_hotel_rental_arrival_date,
|
63
|
+
departure_date: travel_hotel_rental_departure_date,
|
64
|
+
customer_code: travel_hotel_rental_customer_code,
|
65
|
+
extra_charges: travel_hotel_rental_extra_charges,
|
66
|
+
no_show_indicator: travel_hotel_rental_no_show_indicator
|
67
|
+
}
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/reference_ticket_attributes.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'genesis_ruby/api/constants/transactions/parameters/travel_data/ancillary_charges_types'
|
2
|
+
|
3
|
+
module GenesisRuby
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Requests
|
7
|
+
module Financial
|
8
|
+
module TravelData
|
9
|
+
# Ancillary Charges
|
10
|
+
module ReferenceTicketAttributes
|
11
|
+
|
12
|
+
attr_reader :travel_ac_ticket_reference_id, :travel_ac_type, :travel_ac_ticket_document_number,
|
13
|
+
:travel_ac_issued_with_ticket_number, :travel_ac_sub_type
|
14
|
+
|
15
|
+
# Ancillary Charges ticker reference id
|
16
|
+
def travel_ac_ticket_reference_id=(value)
|
17
|
+
limited_string attribute: __method__, value: value, max: 32
|
18
|
+
end
|
19
|
+
|
20
|
+
# Ancillary Charges Type
|
21
|
+
def travel_ac_type=(value)
|
22
|
+
allowed_options attribute: __method__,
|
23
|
+
value: value.to_s.upcase,
|
24
|
+
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::TravelData::
|
25
|
+
AncillaryChargesTypes.all,
|
26
|
+
allow_empty: true
|
27
|
+
end
|
28
|
+
|
29
|
+
# Ancillary Charges Ticket document number
|
30
|
+
def travel_ac_ticket_document_number=(value)
|
31
|
+
limited_string attribute: __method__, value: value, max: 15
|
32
|
+
end
|
33
|
+
|
34
|
+
# Ancillary Charges issued with ticket number
|
35
|
+
def travel_ac_issued_with_ticket_number=(value)
|
36
|
+
limited_string attribute: __method__, value: value, max: 15
|
37
|
+
end
|
38
|
+
|
39
|
+
# Ancillary Charges Sub Type
|
40
|
+
def travel_ac_sub_type=(value)
|
41
|
+
allowed_options attribute: __method__,
|
42
|
+
value: value.to_s.upcase,
|
43
|
+
allowed: GenesisRuby::Api::Constants::Transactions::Parameters::TravelData::
|
44
|
+
AncillaryChargesTypes.all,
|
45
|
+
allow_empty: true
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
# Reference Ticket attributes structure
|
51
|
+
def reference_ticket_attributes_structure
|
52
|
+
{
|
53
|
+
ticket_reference_id: travel_ac_ticket_reference_id,
|
54
|
+
ticket_document_number: travel_ac_ticket_document_number,
|
55
|
+
issued_with_ticket_number: travel_ac_issued_with_ticket_number
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
# Ancillary Charges attributes structure
|
60
|
+
def charges_attributes_structure
|
61
|
+
{
|
62
|
+
charge: {
|
63
|
+
type: travel_ac_type,
|
64
|
+
sub_type: travel_ac_sub_type
|
65
|
+
}
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module GenesisRuby
|
2
|
+
module Api
|
3
|
+
module Mixins
|
4
|
+
module Requests
|
5
|
+
module Financial
|
6
|
+
module TravelData
|
7
|
+
# Travel Data Attributes
|
8
|
+
module TravelAttributes
|
9
|
+
|
10
|
+
include TravelData::AirlineItineraryAttributes
|
11
|
+
include TravelData::CarRentalAttributes
|
12
|
+
include TravelData::HotelRentalAttributes
|
13
|
+
include TravelData::ReferenceTicketAttributes
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
# Travel Data attributes structure
|
18
|
+
def travel_data_attributes_structure
|
19
|
+
{
|
20
|
+
ticket: airline_attributes_structure.merge(reference_ticket_attributes_structure),
|
21
|
+
legs: legs_structure,
|
22
|
+
taxes: taxes_structure,
|
23
|
+
rentals: car_rental_attributes_structure.merge(hotel_rental_attributes_structure),
|
24
|
+
charges: charges_attributes_structure
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -6,6 +6,7 @@ module GenesisRuby
|
|
6
6
|
class Capture < Requests::Base::Reference
|
7
7
|
|
8
8
|
include Mixins::Requests::Financial::Business::BusinessAttributes
|
9
|
+
include Mixins::Requests::Financial::TravelData::TravelAttributes
|
9
10
|
|
10
11
|
protected
|
11
12
|
|
@@ -18,7 +19,8 @@ module GenesisRuby
|
|
18
19
|
def reference_transaction_structure
|
19
20
|
{
|
20
21
|
reference_id: reference_id,
|
21
|
-
business_attributes: business_attributes_structure
|
22
|
+
business_attributes: business_attributes_structure,
|
23
|
+
travel: travel_data_attributes_structure
|
22
24
|
}
|
23
25
|
end
|
24
26
|
|
@@ -23,6 +23,7 @@ module GenesisRuby
|
|
23
23
|
include Mixins::Requests::Financial::ReferenceAttributes
|
24
24
|
include Mixins::Requests::Financial::RiskAttributes
|
25
25
|
include Mixins::Requests::Financial::ScaAttributes
|
26
|
+
include Mixins::Requests::Financial::TravelData::TravelAttributes
|
26
27
|
|
27
28
|
protected
|
28
29
|
|
@@ -55,7 +56,8 @@ module GenesisRuby
|
|
55
56
|
recurring_type: recurring_type,
|
56
57
|
recurring_category: recurring_category,
|
57
58
|
sca_params: sca_attributes_structure,
|
58
|
-
managed_recurring: managed_recurring_attributes_structure
|
59
|
+
managed_recurring: managed_recurring_attributes_structure,
|
60
|
+
travel: travel_data_attributes_structure
|
59
61
|
)
|
60
62
|
end
|
61
63
|
|
@@ -26,6 +26,7 @@ module GenesisRuby
|
|
26
26
|
include Mixins::Requests::Financial::RiskAttributes
|
27
27
|
include Mixins::Requests::Financial::ScaAttributes
|
28
28
|
include Mixins::Requests::Financial::Threeds::Version2::CommonAttributes
|
29
|
+
include Mixins::Requests::Financial::TravelData::TravelAttributes
|
29
30
|
|
30
31
|
# Specifies the recurring type of transaction
|
31
32
|
def recurring_type=(value)
|
@@ -67,7 +68,8 @@ module GenesisRuby
|
|
67
68
|
recurring_category: recurring_category,
|
68
69
|
sca_params: sca_attributes_structure,
|
69
70
|
threeds_v2_params: threeds_v2_common_attributes_structure,
|
70
|
-
managed_recurring: managed_recurring_attributes_structure
|
71
|
+
managed_recurring: managed_recurring_attributes_structure,
|
72
|
+
travel: travel_data_attributes_structure
|
71
73
|
)
|
72
74
|
end
|
73
75
|
|
@@ -22,6 +22,7 @@ module GenesisRuby
|
|
22
22
|
include Mixins::Requests::Financial::ReferenceAttributes
|
23
23
|
include Mixins::Requests::Financial::RiskAttributes
|
24
24
|
include Mixins::Requests::Financial::ScaAttributes
|
25
|
+
include Mixins::Requests::Financial::TravelData::TravelAttributes
|
25
26
|
|
26
27
|
protected
|
27
28
|
|
@@ -54,7 +55,8 @@ module GenesisRuby
|
|
54
55
|
recurring_type: recurring_type,
|
55
56
|
recurring_category: recurring_category,
|
56
57
|
sca_params: sca_attributes_structure,
|
57
|
-
managed_recurring: managed_recurring_attributes_structure
|
58
|
+
managed_recurring: managed_recurring_attributes_structure,
|
59
|
+
travel: travel_data_attributes_structure
|
58
60
|
)
|
59
61
|
end
|
60
62
|
|
@@ -25,6 +25,7 @@ module GenesisRuby
|
|
25
25
|
include Mixins::Requests::Financial::RiskAttributes
|
26
26
|
include Mixins::Requests::Financial::ScaAttributes
|
27
27
|
include Mixins::Requests::Financial::Threeds::Version2::CommonAttributes
|
28
|
+
include Mixins::Requests::Financial::TravelData::TravelAttributes
|
28
29
|
|
29
30
|
# Specifies the recurring type of transaction
|
30
31
|
def recurring_type=(value)
|
@@ -66,7 +67,8 @@ module GenesisRuby
|
|
66
67
|
recurring_category: recurring_category,
|
67
68
|
sca_params: sca_attributes_structure,
|
68
69
|
threeds_v2_params: threeds_v2_common_attributes_structure,
|
69
|
-
managed_recurring: managed_recurring_attributes_structure
|
70
|
+
managed_recurring: managed_recurring_attributes_structure,
|
71
|
+
travel: travel_data_attributes_structure
|
70
72
|
)
|
71
73
|
end
|
72
74
|
|
@@ -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
|
@@ -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
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: genesis_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- emerchantpay Ltd.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-http
|
@@ -250,6 +250,7 @@ files:
|
|
250
250
|
- lib/genesis_ruby/api/constants/transactions/parameters/managed_recurring/intervals.rb
|
251
251
|
- lib/genesis_ruby/api/constants/transactions/parameters/managed_recurring/modes.rb
|
252
252
|
- lib/genesis_ruby/api/constants/transactions/parameters/managed_recurring/payment_types.rb
|
253
|
+
- lib/genesis_ruby/api/constants/transactions/parameters/mpi_protocol_sub_versions.rb
|
253
254
|
- lib/genesis_ruby/api/constants/transactions/parameters/mpi_protocol_versions.rb
|
254
255
|
- lib/genesis_ruby/api/constants/transactions/parameters/recurring/categories.rb
|
255
256
|
- lib/genesis_ruby/api/constants/transactions/parameters/recurring/types.rb
|
@@ -271,6 +272,7 @@ files:
|
|
271
272
|
- lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/purchase/categories.rb
|
272
273
|
- lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/interfaces.rb
|
273
274
|
- lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/ui_types.rb
|
275
|
+
- lib/genesis_ruby/api/constants/transactions/parameters/travel_data/ancillary_charges_types.rb
|
274
276
|
- lib/genesis_ruby/api/constants/transactions/parameters/wpf/reminder_channels.rb
|
275
277
|
- lib/genesis_ruby/api/mixins/constants/common.rb
|
276
278
|
- lib/genesis_ruby/api/mixins/requests/address_info_attributes.rb
|
@@ -318,6 +320,11 @@ files:
|
|
318
320
|
- lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/recurring.rb
|
319
321
|
- lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb
|
320
322
|
- lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb
|
323
|
+
- lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb
|
324
|
+
- lib/genesis_ruby/api/mixins/requests/financial/travel_data/car_rental_attributes.rb
|
325
|
+
- lib/genesis_ruby/api/mixins/requests/financial/travel_data/hotel_rental_attributes.rb
|
326
|
+
- lib/genesis_ruby/api/mixins/requests/financial/travel_data/reference_ticket_attributes.rb
|
327
|
+
- lib/genesis_ruby/api/mixins/requests/financial/travel_data/travel_attributes.rb
|
321
328
|
- lib/genesis_ruby/api/mixins/requests/restricted_setter.rb
|
322
329
|
- lib/genesis_ruby/api/mixins/requests/wpf_reminders_attributes.rb
|
323
330
|
- lib/genesis_ruby/api/notification.rb
|
@@ -383,6 +390,9 @@ files:
|
|
383
390
|
- lib/genesis_ruby/utils/transactions/references/capturable_types.rb
|
384
391
|
- lib/genesis_ruby/utils/transactions/references/refundable_types.rb
|
385
392
|
- lib/genesis_ruby/utils/transactions/references/voidable_types.rb
|
393
|
+
- lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/base.rb
|
394
|
+
- lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/leg.rb
|
395
|
+
- lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/tax.rb
|
386
396
|
- lib/genesis_ruby/utils/transactions/wpf_types.rb
|
387
397
|
- lib/genesis_ruby/version.rb
|
388
398
|
homepage: https://github.com/GenesisGateway/genesis_ruby
|
@@ -408,7 +418,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
408
418
|
- !ruby/object:Gem::Version
|
409
419
|
version: '0'
|
410
420
|
requirements: []
|
411
|
-
rubygems_version: 3.
|
421
|
+
rubygems_version: 3.4.10
|
412
422
|
signing_key:
|
413
423
|
specification_version: 4
|
414
424
|
summary: Ruby Client for Genesis Payment Processing Gateway
|