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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/Gemfile.lock +42 -38
  4. data/README.md +305 -3
  5. data/VERSION +1 -1
  6. data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/apple_pay/payment_subtypes.rb +29 -0
  7. data/lib/genesis_ruby/api/constants/transactions/parameters/mobile/google_pay/payment_subtypes.rb +29 -0
  8. data/lib/genesis_ruby/api/constants/transactions/parameters/mpi_protocol_sub_versions.rb +43 -0
  9. data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/bank_code_currencies.rb +128 -0
  10. data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/bank_codes.rb +600 -0
  11. data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/payment_types.rb +36 -0
  12. data/lib/genesis_ruby/api/constants/transactions/parameters/travel_data/ancillary_charges_types.rb +43 -0
  13. data/lib/genesis_ruby/api/constants/transactions.rb +1 -5
  14. data/lib/genesis_ruby/api/mixins/requests/attribute_validation.rb +138 -4
  15. data/lib/genesis_ruby/api/mixins/requests/birth_date_attributes.rb +22 -0
  16. data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +1 -1
  17. data/lib/genesis_ruby/api/mixins/requests/financial/cards/credit_card_attributes.rb +7 -0
  18. data/lib/genesis_ruby/api/mixins/requests/financial/cards/mpi_attributes.rb +14 -4
  19. data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_attributes.rb +23 -20
  20. data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/managed_recurring_indian_card_attributes.rb +19 -39
  21. data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb +15 -9
  22. data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_attributes.rb +9 -0
  23. data/lib/genesis_ruby/api/mixins/requests/financial/mobile/apple_pay_token_attributes.rb +51 -0
  24. data/lib/genesis_ruby/api/mixins/requests/financial/mobile/google_pay_token_attributes.rb +50 -0
  25. data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/virtual_payment_address_attributes.rb +27 -0
  26. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/browser.rb +11 -22
  27. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account.rb +81 -49
  28. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/common_attributes.rb +23 -0
  29. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/control.rb +13 -26
  30. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk.rb +21 -58
  31. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase.rb +8 -11
  32. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb +10 -10
  33. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb +9 -0
  34. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +166 -0
  35. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/car_rental_attributes.rb +119 -0
  36. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/hotel_rental_attributes.rb +77 -0
  37. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/reference_ticket_attributes.rb +75 -0
  38. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/travel_attributes.rb +34 -0
  39. data/lib/genesis_ruby/api/request.rb +4 -2
  40. data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +6 -4
  41. data/lib/genesis_ruby/api/requests/base/reference.rb +3 -2
  42. data/lib/genesis_ruby/api/requests/financial/capture.rb +3 -1
  43. data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +13 -3
  44. data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +22 -11
  45. data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +13 -3
  46. data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +22 -11
  47. data/lib/genesis_ruby/api/requests/financial/cards/threeds/v2/method_continue.rb +2 -2
  48. data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +91 -0
  49. data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +108 -0
  50. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +157 -0
  51. data/lib/genesis_ruby/api/requests/financial/void.rb +2 -2
  52. data/lib/genesis_ruby/api/requests/non_financial/reconcile/date_range.rb +2 -2
  53. data/lib/genesis_ruby/api/requests/wpf/create.rb +11 -15
  54. data/lib/genesis_ruby/api/requests/wpf/reconcile.rb +2 -2
  55. data/lib/genesis_ruby/builders/xml.rb +6 -0
  56. data/lib/genesis_ruby/utils/common.rb +26 -0
  57. data/lib/genesis_ruby/utils/transactions/financial_types.rb +1 -1
  58. data/lib/genesis_ruby/utils/transactions/references/refundable_types.rb +1 -1
  59. data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/base.rb +33 -0
  60. data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/leg.rb +97 -0
  61. data/lib/genesis_ruby/utils/transactions/travel_data/airline_itinerary/tax.rb +42 -0
  62. data/lib/genesis_ruby/utils/transactions/wpf_types.rb +1 -1
  63. data/lib/genesis_ruby/version.rb +1 -1
  64. metadata +24 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bae58236ea63ffb79254010e7dd8651252a8f128eb3c9e245eaf6cc4588c426
4
- data.tar.gz: e9bc31285e5acceefe5df452d274445f6b88e3039115d313ea1361b9990cc149
3
+ metadata.gz: a4bea22025e527f7dacbc7289c230b6f28124b6535c471c267225b608660d40c
4
+ data.tar.gz: c437ee21a72d4d19686f908f59358245ec87356f84fa270e9a000c7a4f276d81
5
5
  SHA512:
6
- metadata.gz: 235e870d4dc316eface0f780352fe0129293740742ab45b6638d839cf51cbd9296e193be9a9cf533da6f1c089e39885e47fbf4220523a715a1db8c3c821a3b6c
7
- data.tar.gz: 346de3c0848acea9c8394323b8377fc1fb86eab52fa125f30586dcb71bf0f2422d7f128fe3152547284274ca5eddde44a1a1d96206d9391bcf65525669f46529
6
+ metadata.gz: 79f51dcf85135a053d6556b3fb4096ecae5d8bef785c42714e40a32a6b25f299d36ed98cc25c8cb3e7c7741d247724d7ceba997d5e86a4e8016846bc5f7c9940
7
+ data.tar.gz: 30030ba067499b12f280699ab2460840705c4b1fe24007047bfb3ebeba8e52b23f56a987ce094145db814425f6418384703b2bde54d967110bc78e4e38698109
data/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ 0.1.8
2
+ -----
3
+ **Features**:
4
+
5
+ * Added Apple Pay transaction request support
6
+ * Added Google Pay transaction request support
7
+ * Added Online Banking PayIn transaction request support
8
+ * Updated transform amount logic during request execution
9
+ * Added 3DSv2 parameters validations
10
+
11
+ 0.1.7
12
+ -----
13
+ **Features**:
14
+
15
+ * Removed GiroPay transaction type support through the Web Payment Form
16
+ * Added Protocol Sub Version parameter support part of the MPI attributes
17
+ * Added Level 3 Travel Data attributes support to the following transaction requests:
18
+ * Sale
19
+ * Sale 3D
20
+ * Authorize
21
+ * Authorize 3D
22
+ * Init Recurring Sale
23
+ * Init Recurring Sale 3D
24
+ * RecurringSale
25
+ * Capture
26
+
1
27
  0.1.6
2
28
  -----
3
29
  **Features**:
data/Gemfile.lock CHANGED
@@ -1,22 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- genesis_ruby (0.1.6)
4
+ genesis_ruby (0.1.8)
5
5
  net-http (~> 0.3.2)
6
6
  nokogiri (~> 1.14)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.8.6)
12
- public_suffix (>= 2.0.2, < 6.0)
11
+ addressable (2.8.7)
12
+ public_suffix (>= 2.0.2, < 7.0)
13
13
  ast (2.4.2)
14
14
  base64 (0.2.0)
15
- bigdecimal (3.1.7)
16
- concurrent-ruby (1.2.3)
15
+ bigdecimal (3.1.8)
16
+ concurrent-ruby (1.3.4)
17
17
  crack (1.0.0)
18
18
  bigdecimal
19
19
  rexml
20
+ csv (3.3.0)
20
21
  diff-lcs (1.5.1)
21
22
  faker (2.23.0)
22
23
  i18n (>= 1.8.11, < 2)
@@ -25,23 +26,24 @@ GEM
25
26
  faraday-net_http (>= 2.0, < 3.1)
26
27
  ruby2_keywords (>= 0.0.4)
27
28
  faraday-net_http (3.0.2)
28
- faraday-retry (2.2.0)
29
+ faraday-retry (2.2.1)
29
30
  faraday (~> 2.0)
30
- gitlab (4.19.0)
31
+ gitlab (4.20.1)
31
32
  httparty (~> 0.20)
32
33
  terminal-table (>= 1.5.1)
33
- hashdiff (1.1.0)
34
- httparty (0.21.0)
34
+ hashdiff (1.1.1)
35
+ httparty (0.22.0)
36
+ csv
35
37
  mini_mime (>= 1.0.0)
36
38
  multi_xml (>= 0.5.2)
37
- i18n (1.14.4)
39
+ i18n (1.14.6)
38
40
  concurrent-ruby (~> 1.0)
39
- json (2.7.1)
41
+ json (2.7.2)
40
42
  language_server-protocol (3.17.0.3)
41
43
  mini_mime (1.1.5)
42
- mini_portile2 (2.8.5)
44
+ mini_portile2 (2.8.7)
43
45
  multi_xml (0.6.0)
44
- mustermann (3.0.0)
46
+ mustermann (3.0.3)
45
47
  ruby2_keywords (~> 0.0.1)
46
48
  net-http (0.3.2)
47
49
  uri
@@ -51,8 +53,8 @@ GEM
51
53
  octokit (7.2.0)
52
54
  faraday (>= 1, < 3)
53
55
  sawyer (~> 0.9)
54
- parallel (1.24.0)
55
- parser (3.3.0.5)
56
+ parallel (1.26.3)
57
+ parser (3.3.5.0)
56
58
  ast (~> 2.4.1)
57
59
  racc
58
60
  pronto (0.11.2)
@@ -66,55 +68,57 @@ GEM
66
68
  pronto-rubocop (0.11.5)
67
69
  pronto (~> 0.11.0)
68
70
  rubocop (>= 0.63.1, < 2.0)
69
- public_suffix (5.0.4)
70
- racc (1.7.3)
71
+ public_suffix (5.1.1)
72
+ racc (1.8.1)
71
73
  rack (2.2.9)
72
74
  rack-protection (3.2.0)
73
75
  base64 (>= 0.1.0)
74
76
  rack (~> 2.2, >= 2.2.4)
75
77
  rainbow (3.1.1)
76
- rake (13.1.0)
77
- regexp_parser (2.9.0)
78
- rexml (3.2.6)
78
+ rake (13.2.1)
79
+ regexp_parser (2.9.2)
80
+ rexml (3.3.8)
79
81
  rspec (3.13.0)
80
82
  rspec-core (~> 3.13.0)
81
83
  rspec-expectations (~> 3.13.0)
82
84
  rspec-mocks (~> 3.13.0)
83
- rspec-core (3.13.0)
85
+ rspec-core (3.13.1)
84
86
  rspec-support (~> 3.13.0)
85
- rspec-expectations (3.13.0)
87
+ rspec-expectations (3.13.3)
86
88
  diff-lcs (>= 1.2.0, < 2.0)
87
89
  rspec-support (~> 3.13.0)
88
- rspec-mocks (3.13.0)
90
+ rspec-mocks (3.13.2)
89
91
  diff-lcs (>= 1.2.0, < 2.0)
90
92
  rspec-support (~> 3.13.0)
91
93
  rspec-support (3.13.1)
92
94
  rspec_junit_formatter (0.6.0)
93
95
  rspec-core (>= 2, < 4, != 2.12.0)
94
- rubocop (1.62.1)
96
+ rubocop (1.66.1)
95
97
  json (~> 2.3)
96
98
  language_server-protocol (>= 3.17.0)
97
99
  parallel (~> 1.10)
98
100
  parser (>= 3.3.0.2)
99
101
  rainbow (>= 2.2.2, < 4.0)
100
- regexp_parser (>= 1.8, < 3.0)
101
- rexml (>= 3.2.5, < 4.0)
102
- rubocop-ast (>= 1.31.1, < 2.0)
102
+ regexp_parser (>= 2.4, < 3.0)
103
+ rubocop-ast (>= 1.32.2, < 2.0)
103
104
  ruby-progressbar (~> 1.7)
104
105
  unicode-display_width (>= 2.4.0, < 3.0)
105
- rubocop-ast (1.31.2)
106
- parser (>= 3.3.0.4)
107
- rubocop-capybara (2.20.0)
108
- rubocop (~> 1.41)
109
- rubocop-factory_bot (2.25.1)
106
+ rubocop-ast (1.32.3)
107
+ parser (>= 3.3.1.0)
108
+ rubocop-capybara (2.21.0)
110
109
  rubocop (~> 1.41)
110
+ rubocop-factory_bot (2.26.1)
111
+ rubocop (~> 1.61)
111
112
  rubocop-faker (1.1.0)
112
113
  faker (>= 2.12.0)
113
114
  rubocop (>= 0.82.0)
114
- rubocop-rspec (2.27.1)
115
+ rubocop-rspec (2.31.0)
115
116
  rubocop (~> 1.40)
116
117
  rubocop-capybara (~> 2.17)
117
118
  rubocop-factory_bot (~> 2.22)
119
+ rubocop-rspec_rails (~> 2.28)
120
+ rubocop-rspec_rails (2.29.1)
121
+ rubocop (~> 1.61)
118
122
  ruby-progressbar (1.13.0)
119
123
  ruby2_keywords (0.0.5)
120
124
  rugged (1.7.2)
@@ -128,11 +132,11 @@ GEM
128
132
  tilt (~> 2.0)
129
133
  terminal-table (3.0.2)
130
134
  unicode-display_width (>= 1.1.1, < 3)
131
- thor (1.3.1)
132
- tilt (2.3.0)
133
- unicode-display_width (2.5.0)
134
- uri (0.13.0)
135
- webmock (3.23.0)
135
+ thor (1.3.2)
136
+ tilt (2.4.0)
137
+ unicode-display_width (2.6.0)
138
+ uri (0.13.1)
139
+ webmock (3.24.0)
136
140
  addressable (>= 2.8.0)
137
141
  crack (>= 0.3.2)
138
142
  hashdiff (>= 0.4.0, < 2.0.0)
data/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
 
2
- # Genesis Ruby
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
- ## Overview
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
 
@@ -445,6 +447,214 @@ end
445
447
 
446
448
  </details>
447
449
 
450
+ ### Apple Pay Request
451
+
452
+ Apple Pay is a mobile payment solution available on iOS devices with Touch ID / Face ID support. Apple Pay allows shoppers to purchase with credit and debit cards linked to their devices.
453
+
454
+ <details>
455
+ <summary>Apple Pay Transaction Example</summary>
456
+
457
+ ```ruby
458
+ require 'genesis_ruby'
459
+
460
+ begin
461
+ genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Mobile::ApplePay) do |request|
462
+ # Common Attributes
463
+ request.transaction_id = '12345-67890'
464
+ request.amount = '0.99'
465
+ request.currency = 'EUR'
466
+ request.usage = 'Example usage'
467
+ request.customer_email = 'travis@example.com'
468
+ request.customer_phone = '+1987987987987'
469
+
470
+ request.payment_subtype = GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::ApplePay::PaymentSubtypes::SALE
471
+
472
+ # Billing Attributes
473
+ request.billing_first_name = 'Travis'
474
+ request.billing_last_name = 'Pastrana'
475
+ request.billing_address1 = 'Muster Str. 12'
476
+ request.billing_zip_code = '10178'
477
+ request.billing_city = 'Los Angeles'
478
+ request.billing_state = 'CA'
479
+ request.billing_country = 'US'
480
+
481
+ # Apple Pay Payment Token
482
+ json_token = '{"paymentData":{"version":"EC_v1","data":"MgcrhHr/uhfRy7zxMOvahhf5sp+ZfUsWADlG5OhvZ8vEAybEouyk4tT8oYaOqlfNTdkJZl2tmCgyLReibOjW2RiXzw5S9ZtA6ISnEBjNFla9Hju1KJnxQ+QFIdSlhEDOqN/Wk9kSFz2mnT8wajaG6mytpXhzCxvl5ElCp0gm0wMb82lvpf6my5TIu+CuANPZ2g/kslqKUGEjQHhO3FVqmiEj2YpkrlhXcvFu1GalTOWgjnLVCMz8l8DCQek/UIZQ3ZiJEoQTlEZRzXlwG8FlEp/QwbLiIlQfDLCtu3pBH0EaOeQ1OwupXs64EYfL+DEzYKdpi7dE9Y93zcXR6y2qsawBC8lCeI8zGc+kRFQJ5IrPd81BRZep3xsHwh1uki2dfx2taLyjxyCWWKaUWCzYI1p/u7YsypYEMj3np+MHfg==","signature":"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","header":{"wrappedKey": "wrapped key", "ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJsaMBlzR3D0H7xKwDncLNGOEcsl6Jilx5d+MDI/1QFxuIf6a0fY5qgOwnuLgZepqc3AVeU1RV8enPCQSWfFKRg==","publicKeyHash":"QOmvMaoCNYk5tv+69KC1i2UCFQcOl6LYPIJfYAT+SLQ=","transactionId":"ccedaf3f32efcc971259694f0efd0dcaa0ed545e7a31a0f7ec8e1c110656c25b"}},"paymentMethod":{"displayName":"Visa 0225","network":"Visa","type":"debit"},"transactionIdentifier":"CCEDAF3F32EFCC971259694F0EFD0DCAA0ED545E7A31A0F7EC8E1C110656C25B"}'
483
+
484
+ # Set Apple Pay token from a JSON string
485
+ request.json_token = json_token
486
+
487
+ # Alternatively you can set every token attributes
488
+ # token = JSON.parse json_token
489
+ # request.token_version = token['paymentData']['version']
490
+ # request.token_data = token['paymentData']['data']
491
+ # request.token_signature = token['paymentData']['signature']
492
+ # request.token_ephemeral_public_key = token['paymentData']['header']['ephemeralPublicKey']
493
+ # request.token_public_key_hash = token['paymentData']['header']['publicKeyHash']
494
+ # request.token_transaction_id = token['paymentData']['header']['transactionId']
495
+ # request.token_display_name = token['paymentMethod']['displayName']
496
+ # request.token_network = token['paymentMethod']['network']
497
+ # request.token_type = token['paymentMethod']['type']
498
+ # request.token_transaction_identifier = token['transactionIdentifier']
499
+ end.execute
500
+
501
+ puts genesis.response.response_object
502
+ rescue GenesisRuby::Error => error
503
+ puts error.message
504
+ end
505
+ ```
506
+
507
+ </details>
508
+
509
+ <details>
510
+ <summary>Apple Pay Web Payment Form Example</summary>
511
+
512
+ ```ruby
513
+ require 'genesis_ruby'
514
+
515
+ begin
516
+ genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Wpf::Create) do |request|
517
+ # Common Attributes
518
+ request.transaction_id = '12345-67890'
519
+ request.amount = '0.99'
520
+ request.currency = 'EUR'
521
+ request.usage = 'Example usage'
522
+ request.description = 'You are about to complete you purchase'
523
+ request.customer_email = 'travis@example.com'
524
+ request.customer_phone = '+1987987987987'
525
+ request.notification_url = 'https://www.example.com/notification'
526
+ request.return_success_url = 'https://www.example.com/success'
527
+ request.return_cancel_url = 'https://www.example.com/failure'
528
+ request.return_failure_url = 'https://www.example.com/cancel.html'
529
+ request.return_pending_url = 'https://www.example.com/payment-pending.html'
530
+
531
+ # Transaction Types
532
+ request.add_transaction_type('apple_pay', { payment_subtype: GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::ApplePay::PaymentSubtypes::AUTHORIZE })
533
+
534
+ # Billing Attributes
535
+ request.billing_first_name = 'Travis'
536
+ request.billing_last_name = 'Pastrana'
537
+ request.billing_address1 = 'Muster Str. 12'
538
+ request.billing_zip_code = '10178'
539
+ request.billing_city = 'Los Angeles'
540
+ request.billing_state = 'CA'
541
+ request.billing_country = 'US'
542
+ end.execute
543
+
544
+ puts genesis.response.response_object
545
+
546
+ rescue GenesisRuby::Error => error
547
+ puts error.message
548
+ end
549
+ ```
550
+
551
+ </details>
552
+
553
+ ### Google Pay Request
554
+
555
+ Google Pay allows shoppers to purchase with credit and debit cards linked to their Google account.
556
+
557
+ <details>
558
+ <summary>Google Pay Transaction Example</summary>
559
+
560
+ ```ruby
561
+ require 'genesis_ruby'
562
+
563
+ begin
564
+ genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Mobile::GooglePay) do |request|
565
+ # Common Attributes
566
+ request.transaction_id = '12345-67890'
567
+ request.amount = '0.99'
568
+ request.currency = 'EUR'
569
+ request.usage = 'Example usage'
570
+ request.customer_email = 'travis@example.com'
571
+ request.customer_phone = '+1987987987987'
572
+
573
+ request.payment_subtype = GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::GooglePay::PaymentSubtypes::SALE
574
+
575
+ # Billing Attributes
576
+ request.billing_first_name = 'Travis'
577
+ request.billing_last_name = 'Pastrana'
578
+ request.billing_address1 = 'Muster Str. 12'
579
+ request.billing_zip_code = '10178'
580
+ request.billing_city = 'Los Angeles'
581
+ request.billing_state = 'CA'
582
+ request.billing_country = 'US'
583
+
584
+ # Google Pay Payment Token
585
+ json_token = '{
586
+ "protocolVersion":"ECv2",
587
+ "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
588
+ "intermediateSigningKey":{
589
+ "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
590
+ "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
591
+ },
592
+ "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
593
+ }'
594
+
595
+ # Set Google Pay token from a JSON string
596
+ request.json_token = json_token
597
+
598
+ # Alternatively you can set every token attributes
599
+ # token = JSON.parse json_token
600
+ # request.token_protocol_version = token['protocolVersion']
601
+ # request.token_signature = token['signature']
602
+ # request.token_signed_key = token['intermediateSigningKey']['signedKey']
603
+ # request.token_signatures = token['intermediateSigningKey']['signatures']
604
+ # request.token_signed_message = token['signedMessage']
605
+ end.execute
606
+
607
+ puts genesis.response.response_object
608
+ rescue GenesisRuby::Error => error
609
+ puts error.message
610
+ end
611
+ ```
612
+
613
+ </details>
614
+
615
+ <details>
616
+ <summary>Google Pay Web Payment Form Example</summary>
617
+
618
+ ```ruby
619
+ require 'genesis_ruby'
620
+
621
+ begin
622
+ genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Wpf::Create) do |request|
623
+ # Common Attributes
624
+ request.transaction_id = '12345-67890'
625
+ request.amount = '0.99'
626
+ request.currency = 'EUR'
627
+ request.usage = 'Example usage'
628
+ request.description = 'You are about to complete you purchase'
629
+ request.customer_email = 'travis@example.com'
630
+ request.customer_phone = '+1987987987987'
631
+ request.notification_url = 'https://www.example.com/notification'
632
+ request.return_success_url = 'https://www.example.com/success'
633
+ request.return_cancel_url = 'https://www.example.com/failure'
634
+ request.return_failure_url = 'https://www.example.com/cancel.html'
635
+ request.return_pending_url = 'https://www.example.com/payment-pending.html'
636
+
637
+ # Transaction Types
638
+ request.add_transaction_type('google_pay', { payment_subtype: GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::GooglePay::PaymentSubtypes::AUTHORIZE })
639
+
640
+ # Billing Attributes
641
+ request.billing_first_name = 'Travis'
642
+ request.billing_last_name = 'Pastrana'
643
+ request.billing_address1 = 'Muster Str. 12'
644
+ request.billing_zip_code = '10178'
645
+ request.billing_city = 'Los Angeles'
646
+ request.billing_state = 'CA'
647
+ request.billing_country = 'US'
648
+ end.execute
649
+
650
+ puts genesis.response.response_object
651
+
652
+ rescue GenesisRuby::Error => error
653
+ puts error.message
654
+ end
655
+ ```
656
+
657
+ </details>
448
658
 
449
659
  ### Recurring
450
660
 
@@ -485,6 +695,89 @@ request.recurring_type = GenesisRuby::Api::Constants::Transactions::Parameters::
485
695
  ```
486
696
  </details>
487
697
 
698
+ #### Level 3 Travel Data
699
+ 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.
700
+
701
+ <details>
702
+ <summary>Example Leg Data</summary>
703
+
704
+ ```ruby
705
+ GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Leg.new departure_date: '2034-12-31',
706
+ arrival_date: '2034-12-31',
707
+ carrier_code: 12,
708
+ service_class: 1,
709
+ origin_city: 'VAR',
710
+ destination_city: 'FRA',
711
+ stopover_code: 0,
712
+ fare_basis_code: 1,
713
+ flight_number: 'W1234',
714
+ departure_time: '11:37',
715
+ departure_time_segment: 'P'
716
+ ```
717
+
718
+ </details>
719
+
720
+ <details>
721
+ <summary>Example Tax Data</summary>
722
+
723
+ ```ruby
724
+ GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Tax.new fee_type: 'type',
725
+ fee_amount: 0.99 # will converted automatically to minor format based on the currency
726
+ ```
727
+
728
+ </details>
729
+
730
+ <details>
731
+ <summary>Example Level 3 Travel Data</summary>
732
+
733
+ ```ruby
734
+ # Ticket attributes
735
+ request.travel_aid_ticket_number = '123456789012345'
736
+ request.travel_aid_passenger_name = 'Test Example'
737
+ request.travel_aid_customer_code = 1
738
+ request.travel_aid_issuing_carrier = 'AAAA'
739
+ request.travel_aid_total_fare = '0.99' # will converted automatically to minor format based on the currency
740
+ request.travel_aid_agency_name = 'Agency'
741
+ request.travel_aid_agency_code = 'AG001'
742
+ request.travel_aid_date_of_issue = '2018-02-01'
743
+ request.travel_aid_restricted_ticket_indicator = 1
744
+ request.travel_aid_confirmation_information = 'Confirmation'
745
+
746
+ request.add_travel_aid_leg leg
747
+ request.add_travel_aid_tax tax
748
+
749
+ # Car rental
750
+ request.travel_car_rental_purchase_identifier = '12478'
751
+ request.travel_car_rental_class_id = 3
752
+ request.travel_car_rental_pickup_date = '2034-12-31'
753
+ request.travel_car_rental_renter_name = 'John Smith'
754
+ request.travel_car_rental_return_city = 'Varna'
755
+ request.travel_car_rental_return_state = 'VAR'
756
+ request.travel_car_rental_return_country = 'BGR'
757
+ request.travel_car_rental_return_date = '2034-12-31'
758
+ request.travel_car_rental_renter_return_location_id = '12478'
759
+ request.travel_car_rental_customer_code = 1
760
+ request.travel_car_rental_extra_charges = 2
761
+ request.travel_car_rental_no_show_indicator = 1
762
+
763
+ # Hotel Rental attributes
764
+ request.travel_hotel_rental_purchase_identifier = '12478'
765
+ request.travel_hotel_rental_arrival_date = '2034-12-31'
766
+ request.travel_hotel_rental_departure_date = '2034-12-31'
767
+ request.travel_hotel_rental_customer_code = '12478'
768
+ request.travel_hotel_rental_no_show_indicator = 1
769
+
770
+ # Reference Ticket Attributes
771
+ request.travel_ac_ticket_reference_id = '8b7e3575e5605ea7e1895707a3e92837'
772
+ request.travel_ac_ticket_document_number = '1111'
773
+ request.travel_ac_issued_with_ticket_number = '12321'
774
+
775
+ # Ancillary Charges
776
+ request.travel_ac_type = 'BF'
777
+ request.travel_ac_sub_type = 'BG'
778
+ ```
779
+
780
+ </details>
488
781
 
489
782
  ## Response
490
783
 
@@ -704,11 +997,20 @@ GenesisRuby::Api::Requests::Financial::Cards::Authorize3d
704
997
  GenesisRuby::Api::Requests::Financial::Cards::Sale
705
998
  GenesisRuby::Api::Requests::Financial::Cards::Sale3d
706
999
 
1000
+ ## Mobile
1001
+ GenesisRuby::Api::Requests::Financial::Mobile::ApplePay
1002
+ GenesisRuby::Api::Requests::Financial::Mobile::GooglePay
1003
+
707
1004
  # Web Payment Form
708
1005
  ## Create
709
1006
  GenesisRuby::Api::Requests::Wpf::Create
1007
+ ## WPF Reconcile
710
1008
  GenesisRuby::Api::Requests::Wpf::Reconcile
711
1009
 
1010
+ # Online Banking Payments
1011
+ # PayIn
1012
+ GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::OnlineBanking::PayIn
1013
+
712
1014
  # References
713
1015
  GenesisRuby::Api::Requests::Financial::Capture
714
1016
  GenesisRuby::Api::Requests::Financial::Void
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.8
@@ -0,0 +1,29 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Constants
4
+ module Transactions
5
+ module Parameters
6
+ module Mobile
7
+ module ApplePay
8
+ # Apple Pay Payment Subtypes allowed values
9
+ class PaymentSubtypes
10
+
11
+ extend Mixins::Constants::Common
12
+
13
+ # Apple Pay authorize payment subtype
14
+ AUTHORIZE = 'authorize'.freeze
15
+
16
+ # Apple Pay init_recurring_sale payment subtype
17
+ INIT_RECURRING_SALE = 'init_recurring_sale'.freeze
18
+
19
+ # Apple Pay sale payment subtype
20
+ SALE = 'sale'.freeze
21
+
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Constants
4
+ module Transactions
5
+ module Parameters
6
+ module Mobile
7
+ module GooglePay
8
+ # Payment Subtype allowed values
9
+ class PaymentSubtypes
10
+
11
+ extend Mixins::Constants::Common
12
+
13
+ # Google Pay authorize payment subtype
14
+ AUTHORIZE = 'authorize'.freeze
15
+
16
+ # Google Pay init_recurring_sale payment subtype
17
+ INIT_RECURRING_SALE = 'init_recurring_sale'.freeze
18
+
19
+ # Google Pay sale payment subtype
20
+ SALE = 'sale'.freeze
21
+
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -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