spree_emerchantpay_genesis 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9deca475addd04cfdc51f7185d69c3d6fd031b8ee69becf096905f883f34ef5b
4
- data.tar.gz: 3543891820d71bf926c0d33d9ef4b9dd2b960a320ac1475d9a80aed3d73ffb3b
3
+ metadata.gz: 9c220bb96644c56f0979a39ad4e8465ef9560f5e58c45acf36e89faf4dcafb9d
4
+ data.tar.gz: 42f7abcc36024c096e88a39a072e57d0138aac80decc629a8278d6b1642616d9
5
5
  SHA512:
6
- metadata.gz: 4ea32ec52afa0ad5c3189381d87f18bfed25478ab2cca31e967e6f7d67baf4f83d4275477e2a8b20a564ac572d63f466400774e8f8b2ce2b72b15e3834c99efa
7
- data.tar.gz: ed907c1c11536ca5ec89980e1535f91a9638b84db018cb8fe7c01a87c6047f855bc31611863eb9493f6ce40f59cf0a164ab7a375699beb7ef7995560aefbff15
6
+ metadata.gz: fdbeb22309bc146f4cc8c957eda170fb17249afb73f7fc8e544f8d15a6560a5e22d2ed6a4749c8e0e3bdb455b533a5f8400165db6f812b6706f149addb8dbbce
7
+ data.tar.gz: 774446783c40d05322b15dd9768fda5db2873ccd2b87320ca75eb4cebee3401a2e1759e17e4d28e02ea8b5420d4e656987a20a1522608623a06820bfee73d94d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ 0.1.6
2
+ -----
3
+ **Features**:
4
+
5
+ * Added Docker project
6
+ * Added Spree Rails FrontEnd Redirect URL handling (asynchronous payments)
7
+ * Updated README
8
+
9
+ 0.1.5
10
+ -----
11
+ **Features**:
12
+
13
+ * Added `emerchantpay Checkout` Description field handling
14
+ * Updated Genesis Ruby SDK to version 0.1.6
15
+ * Updated project dependencies
16
+ * Added `emerchantpay Checkout` Custom Attributes handling
17
+ * Added `emerchantpay Checkout` Language support
18
+
1
19
  0.1.4
2
20
  -----
3
21
  **Features**:
data/README.md CHANGED
@@ -1,4 +1,10 @@
1
- # emerchantpay Genesis Gateway for Spree
1
+ emerchantpay Genesis Gateway for Spree
2
+ ===========
3
+ [![Gem Version](https://badge.fury.io/rb/spree_emerchantpay_genesis.svg)](https://badge.fury.io/rb/spree_emerchantpay_genesis)
4
+ [![Software License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE)
5
+
6
+ Overview
7
+ --------
2
8
  This is a Payment Module for Spree eCommerce that gives you the ability to process payments through emerchantpay's Payment Gateway - Genesis.
3
9
 
4
10
  # Requirements
@@ -7,7 +13,7 @@ This is a Payment Module for Spree eCommerce that gives you the ability to proce
7
13
  * Spree FrontEnd - Optional (Tested up to 4.4.0)
8
14
  * Ruby >= 2.7
9
15
  * Ruby on Rails >= 6.1.4
10
- * [GenesisRuby v0.1.5](https://github.com/GenesisGateway/genesis_ruby/releases/tag/0.1.5)
16
+ * [GenesisRuby v0.1.6](https://github.com/GenesisGateway/genesis_ruby/releases/tag/0.1.6)
11
17
  * PCI-certified server in order to use emerchantpay Direct
12
18
 
13
19
  ## Installation
@@ -216,7 +222,30 @@ curl --request 'POST' \
216
222
 
217
223
  #### Create Checkout Payment
218
224
 
219
- The Checkout Gateway doesn't require `source_attributes` (see [p.4 Update Order](#payment-point-4)). Upon Order Update or Payment Create the only required parameter is `payment_method_id`.
225
+ The Checkout Gateway doesn't require `source_attributes` by default (see [p.4 Update Order](#payment-point-4)). Upon Order Update or Payment Create the only required parameter is `payment_method_id`.
226
+
227
+ In some cases, the Gateway Web Payment Form may require Custom Attributes. Those attributes can be passed to the gateway via `api/v2/storefront/checkout/create_payment`.
228
+ public_metadata contains a list with custom attributes where the key is the transaction type chosen on the payment method configuration inside the administration backend.
229
+
230
+ ```bash
231
+ curl --request 'POST' \
232
+ --header 'Accept: application/vnd.api+json' \
233
+ --header 'X-Spree-Order-Token: EsDjq1oXEgKI6kuujgfvFw1694531383712' \
234
+ --header 'Content-Type: application/vnd.api+json' \
235
+ --url 'http://localhost:4000/api/v2/storefront/checkout/create_payment' \
236
+ --data '{
237
+ "payment_method_id": "8",
238
+ "source_attributes": {
239
+ "consumer_id":"123456",
240
+ "consumer_email": "travis@example.com",
241
+ "public_metadata": {
242
+ "sale3d": { "bin": "401200", "tail": "0085"},
243
+ "trustly_sale": {"return_success_url_target": "top"}
244
+ }
245
+ }
246
+ }'
247
+ ```
248
+ Full list with the available Custom Attributes for every Transaction Type can be found [here](https://emerchantpay.github.io/gateway-api-docs/#wpf-transaction-types).
220
249
 
221
250
  The payment can be finished and a request to the Gateway will be sent with one of the Order Next or Complete endpoints.
222
251
 
@@ -362,6 +391,32 @@ _Note_: If you have trouble with your credentials or terminal configuration, get
362
391
 
363
392
  `bundle exec appraisal install`
364
393
 
394
+ ### Build Demo store
395
+ Requires [Docker Engine](https://docs.docker.com/engine/install/)
396
+
397
+ 1. Clone the project
398
+ 2. Create .env file in the project rood based on the .env.example
399
+ * Set `RAILS_ENV=production`
400
+ 3. Execute inside project root:
401
+ ```shell
402
+ docker compose up
403
+ ```
404
+ 4. Setup Web Server with reverse proxy configuration
405
+
406
+ ### Setup plugin for development
407
+ 1. Clone the project
408
+ 2. Create .env file based on the .env.example
409
+ * Set `RAILS_ENV=development`
410
+ * Set `PLUGIN_SOURCE=/<local path to the plugin source>`
411
+ 3. Execute inside project root:
412
+ ```shell
413
+ docker compose -f compose.yaml -f development-compose.yaml up -d
414
+ ```
415
+ * Optional you can set project name with the -p flag
416
+ * You can attach to the container and debug with `pry` (`docker attach <container>`).
417
+ Requires `config.web_console.whitelisted_ips = '<host_ip>'` inside the container (/mnt/spree/config/environments/development.rb)
418
+ * If you expose the localhost (ex. ngrok) requires `config.hosts.clear` inside the container (/mnt/spree/config/environments/development.rb)
419
+
365
420
  ## License
366
421
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/license/mit).
367
422
 
@@ -0,0 +1,88 @@
1
+ module Spree
2
+ module CheckoutControllerDecorator
3
+
4
+ # Updates the order and advances to the next state (when possible.)
5
+ def update
6
+ result = process_emp_direct_payment? ? process_emp_direct_payment : default_payment_processing
7
+
8
+ if result
9
+ @order.temporary_address = !params[:save_user_address]
10
+
11
+ order_next
12
+
13
+ process_completed_order && return if @order.completed?
14
+
15
+ redirect_to spree.checkout_state_path @order.state
16
+ else
17
+ render :edit, status: :unprocessable_entity
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ # Default Rails FrontEnd Checkout controller `update` logic
24
+ def default_payment_processing
25
+ @order.update_from_params(params, permitted_checkout_attributes, request.headers.env)
26
+ end
27
+
28
+ # Proceed with Spree Order current state execution and move to the next
29
+ def order_next
30
+ return if @order.next
31
+
32
+ flash[:error] = @order.errors.full_messages.join("\n")
33
+ end
34
+
35
+ # Get payment_method_id from the params
36
+ def payment_method_id
37
+ params[:order][:payments_attributes].last[:payment_method_id].presence
38
+ rescue NoMethodError
39
+ nil
40
+ end
41
+
42
+ # Handle completed order
43
+ def process_completed_order
44
+ redirect_url = nil
45
+ @current_order = nil
46
+ flash['order_completed'] = true
47
+
48
+ redirect_url = @order.payments.last.private_metadata['redirect_url'] if @order.payments.last.private_metadata
49
+
50
+ redirect_to redirect_url || completion_route, allow_other_host: true
51
+ end
52
+
53
+ # Check for Emerchantpay Direct Payment process
54
+ def process_emp_direct_payment?
55
+ @order.state == 'payment' && emerchantpay_direct_payment?
56
+ end
57
+
58
+ # Check if the current payment method is Emerchantpay Direct
59
+ def emerchantpay_direct_payment?
60
+ return false unless payment_method_id
61
+
62
+ payment_method = Spree::PaymentMethod.find(payment_method_id)
63
+
64
+ payment_method&.type == Spree::Gateway::EmerchantpayDirect.name
65
+ end
66
+
67
+ # Process Emerchantpay Direct Payment
68
+ def process_emp_direct_payment
69
+ result = create_payment_service.call(
70
+ order: @order,
71
+ params: {
72
+ payment_method_id: payment_method_id,
73
+ source_attributes: params[:payment_source][payment_method_id.to_s.to_sym].presence
74
+ }
75
+ )
76
+
77
+ result.success?
78
+ end
79
+
80
+ # Spree Storefront Create Payment Service
81
+ def create_payment_service
82
+ Spree::Api::Dependencies.storefront_payment_create_service.constantize
83
+ end
84
+
85
+ end
86
+ end
87
+
88
+ Spree::CheckoutController.prepend(Spree::CheckoutControllerDecorator)
@@ -75,16 +75,15 @@ module SpreeEmerchantpayGenesis
75
75
  end
76
76
 
77
77
  # Map WPF request
78
- def map_wpf(order, _source, options)
78
+ def map_wpf(order, source, options)
79
79
  common_attributes order, support_ip: false
80
+ description_attribute order
80
81
  billing_attributes order
81
82
  shipping_attributes order
82
- asyn_attributes options
83
- transaction_types_attributes options
83
+ asyn_attributes options, is_wpf: true
84
+ transaction_types_attributes options, source
84
85
  threeds_wpf_attributes order, options if ActiveModel::Type::Boolean.new.cast options[:threeds_allowed]
85
-
86
- @context.return_cancel_url = options[:return_cancel_url]
87
- @context.return_pending_url = options[:return_pending_url]
86
+ wpf_locale_attributes options
88
87
 
89
88
  self
90
89
  end
@@ -181,11 +180,16 @@ module SpreeEmerchantpayGenesis
181
180
  end
182
181
 
183
182
  # Asynchronous attributes
184
- def asyn_attributes(options)
183
+ def asyn_attributes(options, is_wpf: false)
185
184
  @context.notification_url = "#{options[:hostname]}#{api_v2_storefront_emerchantpay_notification_path}"
186
185
  @context.return_success_url = options[:return_success_url]
187
186
  @context.return_failure_url = options[:return_failure_url]
188
187
 
188
+ if is_wpf
189
+ @context.return_cancel_url = options[:return_cancel_url]
190
+ @context.return_pending_url = options[:return_pending_url]
191
+ end
192
+
189
193
  nil
190
194
  end
191
195
 
@@ -209,12 +213,41 @@ module SpreeEmerchantpayGenesis
209
213
  end
210
214
 
211
215
  # Map WPF Transaction Types
212
- def transaction_types_attributes(options)
213
- options[:transaction_types].each do |type|
214
- @context.add_transaction_type type unless type.empty?
216
+ def transaction_types_attributes(options, source)
217
+ custom_attributes = source.public_metadata
218
+ transaction_types = PaymentMethodHelper.select_options_value options, :transaction_types
219
+
220
+ transaction_types.each do |type|
221
+ next if type.empty?
222
+
223
+ if custom_attributes.key?(type.to_s) && custom_attributes[type.to_s].is_a?(Hash)
224
+ @context.add_transaction_type type, custom_attributes[type.to_s].deep_symbolize_keys
225
+
226
+ next
227
+ end
228
+
229
+ @context.add_transaction_type type
215
230
  end
216
231
  end
217
232
 
233
+ # Map WPF Description field
234
+ def description_attribute(order)
235
+ items_description = order.line_items.map { |item| ["#{item[:product_name]} x #{item[:quantity]}"] }
236
+
237
+ @context.description = items_description.join("\n")
238
+
239
+ nil
240
+ end
241
+
242
+ # Map WPF language attributes
243
+ def wpf_locale_attributes(options)
244
+ locale = PaymentMethodHelper.select_options_value options, :language
245
+
246
+ return unless locale.is_a? String
247
+
248
+ @context.locale = locale.delete_prefix('\'').delete_suffix('\'')
249
+ end
250
+
218
251
  end
219
252
  end
220
253
  end
@@ -5,11 +5,10 @@ module SpreeEmerchantpayGenesis
5
5
 
6
6
  NESTED_NODES = %w(billing_address shipping_address line_items user).freeze
7
7
  ORDER_ALLOWED_ATTRIBUTES = %w(
8
- id currency item_total total user_id token item_count email shipment_total
9
- bill_address_id ship_address_id last_ip_address adjustment_total additional_tax_total included_tax_total number
10
- customer ip order_id shipping tax subtotal discount name address1 address2 city
11
- state zip country phone digital
12
- created_at updated_at
8
+ id currency item_total total user_id token item_count email shipment_total bill_address_id ship_address_id
9
+ last_ip_address adjustment_total additional_tax_total included_tax_total number customer ip order_id shipping
10
+ tax subtotal discount name address1 address2 city state zip country phone digital created_at updated_at
11
+ product_name
13
12
  ) + NESTED_NODES
14
13
 
15
14
  # Prepare Order data used from the Order mapper
@@ -17,7 +16,11 @@ module SpreeEmerchantpayGenesis
17
16
  order.attributes.symbolize_keys.merge(
18
17
  gateway_options,
19
18
  { digital: order.digital? },
20
- { line_items: order.line_items.map { |line_item| line_item.attributes.symbolize_keys } },
19
+ {
20
+ line_items: order.line_items.map do |line_item|
21
+ line_item.attributes.symbolize_keys.merge({ product_name: line_item.product.name })
22
+ end
23
+ },
21
24
  { user: (user ? user.attributes.symbolize_keys : {}) }
22
25
  )
23
26
  end
@@ -71,7 +71,8 @@ module SpreeEmerchantpayGenesis
71
71
 
72
72
  @context.threeds_v2_control_challenge_window_size =
73
73
  fetch_threeds_constant('Control::ChallengeWindowSizes::FULLSCREEN')
74
- @context.threeds_v2_control_challenge_indicator = options[:challenge_indicator]
74
+ @context.threeds_v2_control_challenge_indicator =
75
+ PaymentMethodHelper.select_options_value options, :challenge_indicator
75
76
 
76
77
  nil
77
78
  end
@@ -28,6 +28,13 @@ module SpreeEmerchantpayGenesis
28
28
  default_attr
29
29
  end
30
30
 
31
+ # Get default values for select options
32
+ def select_options_value(options, key)
33
+ return options[key][:selected] if options[key].is_a? Hash
34
+
35
+ options[key]
36
+ end
37
+
31
38
  end
32
39
 
33
40
  end
@@ -3,10 +3,19 @@ module Spree
3
3
  class Gateway::EmerchantpayCheckout < SpreeEmerchantpayGenesis::Base::Gateway # rubocop:disable Style/ClassAndModuleChildren
4
4
 
5
5
  preference :transaction_types, :multi_select, default: lambda {
6
- { values: GenesisRuby::Utils::Transactions::WpfTypes.all }
6
+ {
7
+ values: GenesisRuby::Utils::Transactions::WpfTypes.all,
8
+ selected: [GenesisRuby::Api::Constants::Transactions::SALE_3D]
9
+ }
7
10
  }
8
11
  preference :return_cancel_url, :string, default: 'http://localhost:4000/checkout/payment'
9
12
  preference :return_pending_url, :string, default: 'http://localhost:4000/orders/|:ORDER:|'
13
+ preference :language, :select, default: lambda {
14
+ {
15
+ values: GenesisRuby::Api::Constants::I18n.all,
16
+ selected: GenesisRuby::Api::Constants::I18n::EN
17
+ }
18
+ }
10
19
 
11
20
  delegate :load_data, :load_source, :load_payment, to: :provider
12
21
 
@@ -9,7 +9,12 @@ module SpreeEmerchantpayGenesis
9
9
  preference :return_failure_url, :string, default: 'http://localhost:4000/checkout/payment?order_number=|:ORDER:|'
10
10
  preference :threeds_allowed, :boolean_select, default: true
11
11
  preference :challenge_indicator, :select, default: lambda {
12
- { values: [:no_preference, :no_challenge_requested, :preference, :mandate] }
12
+ {
13
+ values: GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Control::
14
+ ChallengeIndicators.all,
15
+ selected: GenesisRuby::Api::Constants::Transactions::Parameters::Threeds::Version2::Control::
16
+ ChallengeIndicators::NO_PREFERENCE
17
+ }
13
18
  }
14
19
  preference :hostname, :string, default: 'http://127.0.0.1:4000'
15
20
  preference :test_mode, :boolean_select, default: true
@@ -1,5 +1,3 @@
1
- require 'spree/gateway/emerchantpay_direct'
2
-
3
1
  module SpreeEmerchantpayGenesis
4
2
  module Notifications
5
3
  # Notification Handler Service
@@ -26,6 +26,7 @@ module SpreeEmerchantpayGenesis
26
26
  last_digits: params[:last_digits],
27
27
  month: params[:month],
28
28
  year: params[:year],
29
+ expiry: params[:expiry],
29
30
  name: params[:name],
30
31
  number: params[:number],
31
32
  verification_value: params[:verification_value],
@@ -1,5 +1,3 @@
1
- require 'spree/gateway/emerchantpay_direct'
2
-
3
1
  module SpreeEmerchantpayGenesis
4
2
  module Threeds
5
3
  # Method Continue service
@@ -14,6 +14,31 @@
14
14
  <th><%= I18n.t('emerchantpay.payments_table.source_consumer_email') %>:</th>
15
15
  <td><%= payment.source.consumer_email %></td>
16
16
  </tr>
17
+ <% unless payment.source.public_metadata.empty? %>
18
+ <tr>
19
+ <td colspan="2" class="text-center">
20
+ <h3><%= I18n.t('emerchantpay.payments_table.source_custom_attributes') %></h3>
21
+ <table class="table border-top-0">
22
+ <% payment.source.public_metadata.each do |transaction_type, custom_attributes| %>
23
+ <% next unless custom_attributes.is_a? Hash %>
24
+ <tr>
25
+ <th class="col-2"><%= transaction_type %></th>
26
+ <td class="text-left col-10">
27
+ <table class="table">
28
+ <% custom_attributes .each do |attribute, value| %>
29
+ <tr>
30
+ <td class="col-5"><%= attribute %></td>
31
+ <td class="col-7"><%= value %></td>
32
+ </tr>
33
+ <% end %>
34
+ </table>
35
+ </td>
36
+ </tr>
37
+ <% end %>
38
+ </table>
39
+ </td>
40
+ </tr>
41
+ <% end %>
17
42
  </table>
18
43
  </div>
19
44
  </fieldset>
@@ -20,11 +20,57 @@
20
20
  </div>
21
21
 
22
22
  <input type="hidden" name="payment_source[<%= payment_method.id %>][cc_type]" id="emp_cc_type" value="" class="ccType">
23
+ <input name="payment_source[<%= payment_method.id %>][accept_header]"
24
+ type="hidden"
25
+ id="emp_cc_3dsv2_accept_header"
26
+ value="*/*"
27
+ >
28
+ <input name="payment_source[<%= payment_method.id %>][java_enabled]"
29
+ type="hidden"
30
+ id="emp_cc_3dsv2_java_enabled"
31
+ value=""
32
+ >
33
+ <input name="payment_source[<%= payment_method.id %>][language]"
34
+ type="hidden"
35
+ id="emp_cc_3dsv2_language"
36
+ value=""
37
+ >
38
+ <input name="payment_source[<%= payment_method.id %>][color_depth]"
39
+ type="hidden"
40
+ id="emp_cc_3dsv2_color_depth"
41
+ value=""
42
+ >
43
+ <input name="payment_source[<%= payment_method.id %>][screen_height]"
44
+ type="hidden"
45
+ id="emp_cc_3dsv2_screen_height"
46
+ value=""
47
+ >
48
+ <input name="payment_source[<%= payment_method.id %>][screen_width]"
49
+ type="hidden"
50
+ id="emp_cc_3dsv2_screen_width"
51
+ value=""
52
+ >
53
+ <input name="payment_source[<%= payment_method.id %>][time_zone_offset]"
54
+ type="hidden"
55
+ id="emp_cc_3dsv2_time_zone_offset"
56
+ value=""
57
+ >
58
+ <input name="payment_source[<%= payment_method.id %>][user_agent]"
59
+ type="hidden"
60
+ id="emp_cc_3dsv2_user_agent"
61
+ value=""
62
+ >
63
+
23
64
  </div>
24
65
  </div>
25
66
 
26
67
  <script type="text/javascript">
27
68
  document.addEventListener("DOMContentLoaded", function(){
69
+ initBrowserParams()
70
+ initCreditCard()
71
+ });
72
+
73
+ function initCreditCard() {
28
74
  new Card({
29
75
  form: document.getElementById('checkout_form_payment'),
30
76
  container: '.emerchantpay-card-wrapper',
@@ -47,5 +93,23 @@
47
93
  cvc: '***'
48
94
  }
49
95
  });
50
- });
96
+ }
97
+
98
+ function initBrowserParams() {
99
+ document.getElementById('emp_cc_3dsv2_java_enabled').value = fetchJavaEnabled()
100
+ document.getElementById('emp_cc_3dsv2_color_depth').value = screen.colorDepth.toString()
101
+ document.getElementById('emp_cc_3dsv2_language').value = navigator.language
102
+ document.getElementById('emp_cc_3dsv2_screen_height').value = screen.height.toString()
103
+ document.getElementById('emp_cc_3dsv2_screen_width').value = screen.width.toString()
104
+ document.getElementById('emp_cc_3dsv2_time_zone_offset').value = (new Date()).getTimezoneOffset().toString()
105
+ document.getElementById('emp_cc_3dsv2_user_agent').value = navigator.userAgent
106
+ }
107
+
108
+ function fetchJavaEnabled() {
109
+ try {
110
+ return navigator.javaEnabled();
111
+ } catch (e) {
112
+ return false;
113
+ }
114
+ }
51
115
  </script>
@@ -75,6 +75,32 @@ en:
75
75
  webmoney: Webmoney
76
76
  webpay: Webpay
77
77
  wechat: Wechat
78
+ ar: Arabic
79
+ bg: Bulgarian
80
+ de: German
81
+ en: English
82
+ es: Spanish
83
+ fr: French
84
+ hi: Hindu
85
+ ja: Japanese
86
+ is: Icelandic
87
+ it: Italian
88
+ nl: Dutch
89
+ pt: Portuguese
90
+ pl: Polish
91
+ ru: Russian
92
+ tr: Turkish
93
+ zh: Mandarin Chinese
94
+ id: Indonesian
95
+ ms: Malay
96
+ th: Thai
97
+ cs: Czech
98
+ hr: Croatian
99
+ sl: Slovenian
100
+ fi: Finnish
101
+ "no": Norwegian
102
+ da: Danish
103
+ sv: Swedish
78
104
  payment:
79
105
  usage: Electronic transaction via Spree eCommerce platform
80
106
  reference: Reference transaction via Spree eCommerce platform
@@ -96,6 +122,7 @@ en:
96
122
  source_name: Name
97
123
  source_consumer_id: Consumer ID
98
124
  source_consumer_email: Consumer Email
125
+ source_custom_attributes: Custom Attributes
99
126
  spree:
100
127
  token: Token
101
128
  username: Username
@@ -1,7 +1,7 @@
1
1
  # :nocov:
2
2
  module SpreeEmerchantpayGenesis
3
3
 
4
- VERSION = '0.1.4'.freeze
4
+ VERSION = '0.1.6'.freeze
5
5
 
6
6
  end
7
7
  # :nocov:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_emerchantpay_genesis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - emerchantpay ltd.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-19 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: genesis_ruby
@@ -16,49 +16,32 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.5
19
+ version: 0.1.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.5
27
- - !ruby/object:Gem::Dependency
28
- name: rails
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '6.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '6.0'
26
+ version: 0.1.6
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: securerandom
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: 0.2.2
33
+ version: '0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: 0.2.2
40
+ version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: spree_backend
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '4.4'
62
45
  - - ">="
63
46
  - !ruby/object:Gem::Version
64
47
  version: 4.4.0
@@ -66,9 +49,6 @@ dependencies:
66
49
  prerelease: false
67
50
  version_requirements: !ruby/object:Gem::Requirement
68
51
  requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '4.4'
72
52
  - - ">="
73
53
  - !ruby/object:Gem::Version
74
54
  version: 4.4.0
@@ -76,9 +56,6 @@ dependencies:
76
56
  name: spree_core
77
57
  requirement: !ruby/object:Gem::Requirement
78
58
  requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '4.4'
82
59
  - - ">="
83
60
  - !ruby/object:Gem::Version
84
61
  version: 4.4.0
@@ -86,9 +63,6 @@ dependencies:
86
63
  prerelease: false
87
64
  version_requirements: !ruby/object:Gem::Requirement
88
65
  requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '4.4'
92
66
  - - ">="
93
67
  - !ruby/object:Gem::Version
94
68
  version: 4.4.0
@@ -96,16 +70,16 @@ dependencies:
96
70
  name: spree_extension
97
71
  requirement: !ruby/object:Gem::Requirement
98
72
  requirements:
99
- - - '='
73
+ - - ">="
100
74
  - !ruby/object:Gem::Version
101
- version: 0.1.0
75
+ version: '0'
102
76
  type: :runtime
103
77
  prerelease: false
104
78
  version_requirements: !ruby/object:Gem::Requirement
105
79
  requirements:
106
- - - '='
80
+ - - ">="
107
81
  - !ruby/object:Gem::Version
108
- version: 0.1.0
82
+ version: '0'
109
83
  - !ruby/object:Gem::Dependency
110
84
  name: appraisal
111
85
  requirement: !ruby/object:Gem::Requirement
@@ -264,16 +238,16 @@ dependencies:
264
238
  name: rspec-rails
265
239
  requirement: !ruby/object:Gem::Requirement
266
240
  requirements:
267
- - - "~>"
241
+ - - ">="
268
242
  - !ruby/object:Gem::Version
269
- version: '4.0'
243
+ version: '0'
270
244
  type: :development
271
245
  prerelease: false
272
246
  version_requirements: !ruby/object:Gem::Requirement
273
247
  requirements:
274
- - - "~>"
248
+ - - ">="
275
249
  - !ruby/object:Gem::Version
276
- version: '4.0'
250
+ version: '0'
277
251
  - !ruby/object:Gem::Dependency
278
252
  name: rubocop
279
253
  requirement: !ruby/object:Gem::Requirement
@@ -350,6 +324,7 @@ files:
350
324
  - app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb
351
325
  - app/controllers/spree/api/v2/storefront/emerchantpay_notification_controller.rb
352
326
  - app/controllers/spree/api/v2/storefront/emerchantpay_threeds_controller.rb
327
+ - app/controllers/spree/checkout_controller_decorator.rb
353
328
  - app/controllers/spree/emerchantpay_threeds_controller.rb
354
329
  - app/helpers/spree/admin/payment_methods_helper.rb
355
330
  - app/helpers/spree_emerchantpay_genesis/mappers/genesis.rb
@@ -426,7 +401,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
426
401
  version: '0'
427
402
  requirements:
428
403
  - none
429
- rubygems_version: 3.2.33
404
+ rubygems_version: 3.4.10
430
405
  signing_key:
431
406
  specification_version: 4
432
407
  summary: emerchantpay Gateway Module for Spree