spree_emerchantpay_genesis 0.1.6 → 0.1.7

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: 9c220bb96644c56f0979a39ad4e8465ef9560f5e58c45acf36e89faf4dcafb9d
4
- data.tar.gz: 42f7abcc36024c096e88a39a072e57d0138aac80decc629a8278d6b1642616d9
3
+ metadata.gz: 15b5e5ed86841d728dddc6749dd6829a422e915c9ddca396d3da9f63f8d0cf48
4
+ data.tar.gz: 31f819b12ba869f0ea706fbec6b55d1d2f77064862f5602c879a04d67317bc1c
5
5
  SHA512:
6
- metadata.gz: fdbeb22309bc146f4cc8c957eda170fb17249afb73f7fc8e544f8d15a6560a5e22d2ed6a4749c8e0e3bdb455b533a5f8400165db6f812b6706f149addb8dbbce
7
- data.tar.gz: 774446783c40d05322b15dd9768fda5db2873ccd2b87320ca75eb4cebee3401a2e1759e17e4d28e02ea8b5420d4e656987a20a1522608623a06820bfee73d94d
6
+ metadata.gz: 6e9a3a9dd894f4f26f78ded9c05e7d0bd1e7ee9e9339e8abc5c4d8244c1f7be0605959df1fea55f9797e8c7b69b6f8d0e807314441770998acc32d586744e20f
7
+ data.tar.gz: cce74188db70045556aea1bcdba4516f4f508a40dd6b3d0fdaa0b3e368dcda7ebcadc79f7bc698c830d031ff77c92c0ad2c90f808bfd8ee17d8021df090df9ff
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ 0.1.7
2
+ -----
3
+ **Features**:
4
+
5
+ * Added the following Mobile transaction types support through the emerchantpay Checkout payment method:
6
+ * Apple Pay
7
+ * Google Pay
8
+ * Pay Pal
9
+
1
10
  0.1.6
2
11
  -----
3
12
  **Features**:
@@ -214,8 +214,7 @@ module SpreeEmerchantpayGenesis
214
214
 
215
215
  # Map WPF Transaction Types
216
216
  def transaction_types_attributes(options, source)
217
- custom_attributes = source.public_metadata
218
- transaction_types = PaymentMethodHelper.select_options_value options, :transaction_types
217
+ transaction_types, custom_attributes = wpf_selected_transaction_types options, source
219
218
 
220
219
  transaction_types.each do |type|
221
220
  next if type.empty?
@@ -248,6 +247,19 @@ module SpreeEmerchantpayGenesis
248
247
  @context.locale = locale.delete_prefix('\'').delete_suffix('\'')
249
248
  end
250
249
 
250
+ # Map WPF transaction types selected in the Payment Method Options
251
+ def wpf_selected_transaction_types(options, source)
252
+ transaction_types = PaymentMethodHelper.select_options_value options, :transaction_types
253
+ mobile_types = PaymentMethodHelper.fetch_wpf_mobile_types transaction_types
254
+
255
+ custom_attributes = source.public_metadata.merge mobile_types
256
+ transaction_types = (transaction_types - Mappers::Transaction.mobile_types_with_payment_sub_types).push(
257
+ *mobile_types.keys
258
+ )
259
+
260
+ [transaction_types, custom_attributes]
261
+ end
262
+
251
263
  end
252
264
  end
253
265
  end
@@ -16,6 +16,16 @@ module SpreeEmerchantpayGenesis
16
16
  GenesisRuby::Api::Constants::Transactions::VOID
17
17
  ].freeze
18
18
 
19
+ MOBILE_TYPES = [
20
+ GenesisRuby::Api::Constants::Transactions::GOOGLE_PAY,
21
+ GenesisRuby::Api::Constants::Transactions::APPLE_PAY,
22
+ GenesisRuby::Api::Constants::Transactions::PAY_PAL
23
+ ].freeze
24
+
25
+ MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE = 'authorize'.freeze
26
+ MOBILE_PAYMENT_SUB_TYPE_SALE = 'sale'.freeze
27
+ MOBILE_PAYMENT_SUB_TYPE_EXPRESS = 'express'.freeze
28
+
19
29
  # Provide transaction class object from the given type
20
30
  def self.for(transaction_type)
21
31
  object_class = nil
@@ -40,6 +50,56 @@ module SpreeEmerchantpayGenesis
40
50
  "GenesisRuby::Api::Requests::Financial::#{transaction_type.capitalize}".constantize
41
51
  end
42
52
 
53
+ # Map Web Payment Form Mobile transaction types
54
+ def self.map_wpf_config_mobile_types(types)
55
+ MOBILE_TYPES.each { |type| types.delete type }
56
+
57
+ types.push(*mobile_types_with_payment_sub_types)
58
+ end
59
+
60
+ # Provides Mobile payment types|subtypes
61
+ def self.mobile_payment_sub_types
62
+ %W[
63
+ _#{Mappers::Transaction::MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE}
64
+ _#{Mappers::Transaction::MOBILE_PAYMENT_SUB_TYPE_SALE}
65
+ _#{Mappers::Transaction::MOBILE_PAYMENT_SUB_TYPE_EXPRESS}
66
+ ]
67
+ end
68
+
69
+ # Provides all Mobile payment types with their subtypes
70
+ def self.mobile_types_with_payment_sub_types
71
+ %W[
72
+ #{GenesisRuby::Api::Constants::Transactions::GOOGLE_PAY}_#{MOBILE_PAYMENT_SUB_TYPE_SALE}
73
+ #{GenesisRuby::Api::Constants::Transactions::GOOGLE_PAY}_#{MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE}
74
+ #{GenesisRuby::Api::Constants::Transactions::APPLE_PAY}_#{MOBILE_PAYMENT_SUB_TYPE_SALE}
75
+ #{GenesisRuby::Api::Constants::Transactions::APPLE_PAY}_#{MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE}
76
+ #{GenesisRuby::Api::Constants::Transactions::PAY_PAL}_#{MOBILE_PAYMENT_SUB_TYPE_SALE}
77
+ #{GenesisRuby::Api::Constants::Transactions::PAY_PAL}_#{MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE}
78
+ #{GenesisRuby::Api::Constants::Transactions::PAY_PAL}_#{MOBILE_PAYMENT_SUB_TYPE_EXPRESS}
79
+ ]
80
+ end
81
+
82
+ # Extract mobile type from the sub type and return the WPF custom attribute structure
83
+ def self.extract_mobile_type_with_sub_type(mobile_with_sub_type)
84
+ mobile_type = mobile_with_sub_type.gsub(/#{Mappers::Transaction.mobile_payment_sub_types.join("|")}/, '')
85
+
86
+ Hash[mobile_type, Hash[mobile_subtype_key(mobile_type), mobile_with_sub_type.gsub(/#{mobile_type}_/, '')]]
87
+ end
88
+
89
+ # Returns the Mobile Sub/Type WFP custom attribute
90
+ def self.mobile_subtype_key(mobile_type)
91
+ google_pay = GenesisRuby::Api::Constants::Transactions::GOOGLE_PAY
92
+ apple_pay = GenesisRuby::Api::Constants::Transactions::APPLE_PAY
93
+ pay_pal = GenesisRuby::Api::Constants::Transactions::PAY_PAL
94
+
95
+ case mobile_type
96
+ when google_pay, apple_pay
97
+ 'payment_subtype'
98
+ when pay_pal
99
+ 'payment_type'
100
+ end
101
+ end
102
+
43
103
  end
44
104
  end
45
105
  end
@@ -35,6 +35,25 @@ module SpreeEmerchantpayGenesis
35
35
  options[key]
36
36
  end
37
37
 
38
+ # Provide a list of the available transaction types for the checkout payment method configuration
39
+ def fetch_wpf_transaction_types
40
+ Mappers::Transaction.map_wpf_config_mobile_types GenesisRuby::Utils::Transactions::WpfTypes.all
41
+ end
42
+
43
+ # Extract Custom Attributes defined along with the transaction types
44
+ def fetch_wpf_mobile_types(selected_transaction_types)
45
+ attributes = {}
46
+ selected_mobile_types = selected_transaction_types.intersection(
47
+ Mappers::Transaction.mobile_types_with_payment_sub_types
48
+ )
49
+
50
+ selected_mobile_types.each do |type|
51
+ attributes.merge! Mappers::Transaction.extract_mobile_type_with_sub_type type
52
+ end
53
+
54
+ attributes
55
+ end
56
+
38
57
  end
39
58
 
40
59
  end
@@ -4,7 +4,7 @@ module Spree
4
4
 
5
5
  preference :transaction_types, :multi_select, default: lambda {
6
6
  {
7
- values: GenesisRuby::Utils::Transactions::WpfTypes.all,
7
+ values: SpreeEmerchantpayGenesis::PaymentMethodHelper.fetch_wpf_transaction_types,
8
8
  selected: [GenesisRuby::Api::Constants::Transactions::SALE_3D]
9
9
  }
10
10
  }
@@ -35,11 +35,9 @@ module SpreeEmerchantpayGenesis
35
35
 
36
36
  # Update the Spree Payment status from GenesisRuby::Api::Response object
37
37
  def update_payment_status(payment, response, transaction_type)
38
- capturable_types = GenesisRuby::Utils::Transactions::References::CapturableTypes
39
-
40
38
  if response.approved?
41
39
  action = :complete
42
- action = :pend if capturable_types.allowed_reference? transaction_type
40
+ action = :pend if capturable_type? payment, transaction_type
43
41
 
44
42
  payment.public_send(action)
45
43
  end
@@ -48,6 +46,34 @@ module SpreeEmerchantpayGenesis
48
46
  payment.void if response.voided?
49
47
  end
50
48
 
49
+ # Determine if the given transaction type need capture reference action
50
+ def capturable_type?(payment, transaction_type)
51
+ capturable_types = GenesisRuby::Utils::Transactions::References::CapturableTypes
52
+
53
+ if SpreeEmerchantpayGenesis::Mappers::Transaction::MOBILE_TYPES.include? transaction_type
54
+ return mobile_authorize_type? payment, transaction_type
55
+ end
56
+
57
+ capturable_types.allowed_reference? transaction_type
58
+ end
59
+
60
+ # Determine if the given mobile type is authorize or not
61
+ def mobile_authorize_type?(payment, transaction_type)
62
+ transaction_helper = SpreeEmerchantpayGenesis::Mappers::Transaction
63
+ selected_mobile_types = SpreeEmerchantpayGenesis::PaymentMethodHelper.fetch_wpf_mobile_types(
64
+ payment.payment_method.preferred_transaction_types
65
+ )
66
+
67
+ if selected_mobile_types.is_a?(Hash) && selected_mobile_types.key?(transaction_type)
68
+ custom_attribute = selected_mobile_types[transaction_type.to_s]
69
+ custom_attribute_key = transaction_helper.mobile_subtype_key transaction_type
70
+
71
+ return custom_attribute[custom_attribute_key.to_s] == transaction_helper::MOBILE_PAYMENT_SUB_TYPE_AUTHORIZE
72
+ end
73
+
74
+ false
75
+ end
76
+
51
77
  end
52
78
 
53
79
  end
@@ -75,6 +75,13 @@ en:
75
75
  webmoney: Webmoney
76
76
  webpay: Webpay
77
77
  wechat: Wechat
78
+ google_pay_authorize: Google Pay (Authorize)
79
+ google_pay_sale: Google Pay (Sale)
80
+ apple_pay_authorize: Apple Pay (Authorize)
81
+ apple_pay_sale: Apple Pay (Sale)
82
+ pay_pal_authorize: Pay Pal (Authorize)
83
+ pay_pal_sale: Pay Pal (Sale)
84
+ pay_pal_express: Pay Pal (Express)
78
85
  ar: Arabic
79
86
  bg: Bulgarian
80
87
  de: German
@@ -1,7 +1,7 @@
1
1
  # :nocov:
2
2
  module SpreeEmerchantpayGenesis
3
3
 
4
- VERSION = '0.1.6'.freeze
4
+ VERSION = '0.1.7'.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.6
4
+ version: 0.1.7
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-05-23 00:00:00.000000000 Z
11
+ date: 2024-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: genesis_ruby
@@ -45,6 +45,9 @@ dependencies:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 4.4.0
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: 4.8.0
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,6 +55,9 @@ dependencies:
52
55
  - - ">="
53
56
  - !ruby/object:Gem::Version
54
57
  version: 4.4.0
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 4.8.0
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: spree_core
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +65,9 @@ dependencies:
59
65
  - - ">="
60
66
  - !ruby/object:Gem::Version
61
67
  version: 4.4.0
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: 4.8.0
62
71
  type: :runtime
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +75,9 @@ dependencies:
66
75
  - - ">="
67
76
  - !ruby/object:Gem::Version
68
77
  version: 4.4.0
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: 4.8.0
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: spree_extension
71
83
  requirement: !ruby/object:Gem::Requirement
@@ -401,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
401
413
  version: '0'
402
414
  requirements:
403
415
  - none
404
- rubygems_version: 3.4.10
416
+ rubygems_version: 3.2.33
405
417
  signing_key:
406
418
  specification_version: 4
407
419
  summary: emerchantpay Gateway Module for Spree