spree_emerchantpay_genesis 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 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