spree_vpago 2.1.1 → 2.1.3.pre.beta

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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +18 -18
  3. data/app/assets/images/payment_logos/acleda-cards.png +0 -0
  4. data/app/assets/images/payment_logos/acleda-khqr.png +0 -0
  5. data/app/assets/images/payment_logos/acleda.png +0 -0
  6. data/app/assets/images/payment_logos/cheque.png +0 -0
  7. data/app/assets/images/payment_logos/payway-abapay-khqr.png +0 -0
  8. data/app/assets/images/payment_logos/payway-abapay.png +0 -0
  9. data/app/assets/images/payment_logos/payway-alipay.png +0 -0
  10. data/app/assets/images/payment_logos/payway-cards.png +0 -0
  11. data/app/assets/images/payment_logos/payway-wechat.png +0 -0
  12. data/app/assets/images/payment_logos/true-money.png +0 -0
  13. data/app/assets/images/payment_logos/vattanac-mini-app.png +0 -0
  14. data/app/assets/images/payment_logos/wingpay.png +0 -0
  15. data/app/helpers/vpago/admin/base_helper_decorator.rb +1 -0
  16. data/app/models/spree/gateway/vattanac.rb +70 -0
  17. data/app/models/vpago/line_item_decorator.rb +12 -11
  18. data/app/models/vpago/payment_decorator.rb +8 -0
  19. data/app/models/vpago/payment_method_decorator.rb +12 -1
  20. data/app/services/vpago/payment_finder.rb +3 -8
  21. data/app/services/vpago/payments/find_or_create.rb +2 -1
  22. data/app/views/spree/admin/payments/source_views/_vattanac.html.erb +6 -0
  23. data/app/views/spree/vpago_payments/forms/spree/gateway/_vattanac.html.erb +31 -0
  24. data/lib/spree_vpago/engine.rb +1 -0
  25. data/lib/spree_vpago/version.rb +1 -1
  26. data/lib/vpago/vattanac/base.rb +90 -0
  27. data/lib/vpago/vattanac/checkout.rb +27 -0
  28. data/lib/vpago/vattanac/transaction_status.rb +23 -0
  29. metadata +22 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a01d3dcdc6c3ced08df846438e83619a55e7ae1ef61a2062b8d92cb5563fc09
4
- data.tar.gz: 9c3c06510f3dcfc46c8dda76e951675931e91d96b473b3372849610aa38e8de2
3
+ metadata.gz: 050cbc236c6ee73efa288a53ccb9ed0d997d5056a364c329cc1d6fdf943c2588
4
+ data.tar.gz: '09dac79729125ce876a4865bc17b9dc58fc37f4153bcf803014f5ed17afc06b3'
5
5
  SHA512:
6
- metadata.gz: 1244b21a9ba3d2eb6dd345e7d5cc7ce318a867d8744a7c8bb40789f77d2be7b85a9c8b4339eec6aa5c732ba5ab31fd756dbe4fd97518b3ab39fd23df1b749a96
7
- data.tar.gz: d6b2cc2a7eeb0a9eeb39f1b4d5c6d0d5f9ae09e7c3f2372498a3d2f411f0205076243dbc0d1813a4b2b4c2b15133b2e7cb4cf7645222053df4572070f776e4d2
6
+ metadata.gz: b1b906c102871367972b3deff873c39bc5bdc0c2e6748c2324f00e0e0b7db946699b9e2984b8364050c4ff6f929d3dd36473605ee06904141213cb9957b10517
7
+ data.tar.gz: 8b9392064584a88fbb22f0554680c90ba2b3943764e08b8123548d20112946b356e23b7b5fbca533d983e64865c37dcab38af7f03e7b280485c78453f1d99b2e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spree_vpago (2.1.1)
4
+ spree_vpago (2.1.3.pre.beta)
5
5
  faraday
6
6
  google-cloud-firestore
7
7
  spree_api (>= 4.5)
@@ -198,12 +198,12 @@ GEM
198
198
  flatpickr (4.6.13.1)
199
199
  friendly_id (5.5.0)
200
200
  activerecord (>= 4.0.0)
201
- gapic-common (1.0.1)
201
+ gapic-common (1.2.0)
202
202
  faraday (>= 1.9, < 3.a)
203
203
  faraday-retry (>= 1.0, < 3.a)
204
204
  google-cloud-env (~> 2.2)
205
205
  google-logging-utils (~> 0.1)
206
- google-protobuf (>= 3.25, < 5.a)
206
+ google-protobuf (~> 4.26)
207
207
  googleapis-common-protos (~> 1.6)
208
208
  googleapis-common-protos-types (~> 1.15)
209
209
  googleauth (~> 1.12)
@@ -234,32 +234,32 @@ GEM
234
234
  google-cloud-core (~> 1.7)
235
235
  google-cloud-firestore-v1 (~> 2.0)
236
236
  rbtree (~> 0.4.2)
237
- google-cloud-firestore-v1 (2.1.1)
238
- gapic-common (~> 1.0)
237
+ google-cloud-firestore-v1 (2.2.0)
238
+ gapic-common (~> 1.2)
239
239
  google-cloud-errors (~> 1.0)
240
240
  google-cloud-location (~> 1.0)
241
- google-cloud-location (1.1.0)
242
- gapic-common (~> 1.0)
241
+ google-cloud-location (1.2.0)
242
+ gapic-common (~> 1.2)
243
243
  google-cloud-errors (~> 1.0)
244
244
  google-logging-utils (0.2.0)
245
- google-protobuf (4.31.1)
245
+ google-protobuf (4.33.0-arm64-darwin)
246
246
  bigdecimal
247
247
  rake (>= 13)
248
- googleapis-common-protos (1.8.0)
249
- google-protobuf (>= 3.18, < 5.a)
250
- googleapis-common-protos-types (~> 1.20)
248
+ googleapis-common-protos (1.9.0)
249
+ google-protobuf (~> 4.26)
250
+ googleapis-common-protos-types (~> 1.21)
251
251
  grpc (~> 1.41)
252
- googleapis-common-protos-types (1.20.0)
253
- google-protobuf (>= 3.18, < 5.a)
254
- googleauth (1.14.0)
252
+ googleapis-common-protos-types (1.22.0)
253
+ google-protobuf (~> 4.26)
254
+ googleauth (1.15.1)
255
255
  faraday (>= 1.0, < 3.a)
256
256
  google-cloud-env (~> 2.2)
257
257
  google-logging-utils (~> 0.1)
258
- jwt (>= 1.4, < 3.0)
258
+ jwt (>= 1.4, < 4.0)
259
259
  multi_json (~> 1.11)
260
260
  os (>= 0.9, < 2.0)
261
261
  signet (>= 0.16, < 2.a)
262
- grpc (1.74.1-arm64-darwin)
262
+ grpc (1.76.0-arm64-darwin)
263
263
  google-protobuf (>= 3.25, < 5.0)
264
264
  googleapis-common-protos-types (~> 1.0)
265
265
  hashdiff (1.1.0)
@@ -479,10 +479,10 @@ GEM
479
479
  websocket (~> 1.0)
480
480
  shoulda-matchers (6.2.0)
481
481
  activesupport (>= 5.2.0)
482
- signet (0.20.0)
482
+ signet (0.21.0)
483
483
  addressable (~> 2.8)
484
484
  faraday (>= 0.17.5, < 3.a)
485
- jwt (>= 1.5, < 3.0)
485
+ jwt (>= 1.5, < 4.0)
486
486
  multi_json (~> 1.10)
487
487
  simplecov (0.22.0)
488
488
  docile (~> 1.1)
@@ -19,6 +19,7 @@ module Vpago
19
19
  payway_cards
20
20
  wingpay
21
21
  vattanac_mini_app
22
+ vattanac
22
23
  true_money
23
24
  ]
24
25
  end
@@ -0,0 +1,70 @@
1
+ module Spree
2
+ class Gateway::Vattanac < PaymentMethod
3
+ preference :generate_payment_url, :string
4
+ preference :access_token_url, :string
5
+ preference :check_transaction_url, :string
6
+
7
+ preference :username, :string
8
+ preference :password, :string
9
+ preference :merchant_id, :string
10
+ preference :payment_type, :string, default: 'GOLF_TICKET'
11
+ preference :open_type, :string, default: 'both'
12
+
13
+ def method_type
14
+ 'vattanac'
15
+ end
16
+
17
+ def payment_source_class
18
+ Spree::VpagoPaymentSource
19
+ end
20
+
21
+ # force to purchase instead of authorize
22
+ def auto_capture?
23
+ true
24
+ end
25
+
26
+ # override
27
+ # purchase is used when pre auth disabled
28
+ def purchase(_amount, _source, gateway_options = {})
29
+ _, payment_number = gateway_options[:order_id].split('-')
30
+ payment = Spree::Payment.find_by(number: payment_number)
31
+
32
+ checker = check_transaction(payment)
33
+ payment.update(transaction_response: checker.json_response)
34
+
35
+ success = checker.success?
36
+ params = {}
37
+
38
+ params[:payment_response] = payment.transaction_response
39
+
40
+ if success
41
+ ActiveMerchant::Billing::Response.new(true, 'Payway Gateway: Purchased', params)
42
+ else
43
+ ActiveMerchant::Billing::Response.new(false, 'Payway Gateway: Purchasing Failed', params)
44
+ end
45
+ end
46
+
47
+ def vattanac_refund(payment)
48
+ refund_issuer = Vpago::Vattanac::RefundIssuer.new(payment, {})
49
+ refund_issuer.call
50
+
51
+ [refund_issuer.success?, refund_issuer.parsed_response]
52
+ end
53
+
54
+ def cancel(_response_code, _payment)
55
+ # we can use this to send request to payment gateway api to cancel the payment ( void )
56
+ # currently Vattanac does not support to cancel the gateway
57
+
58
+ # in our case don't do anything
59
+ ActiveMerchant::Billing::Response.new(true, '')
60
+ end
61
+
62
+ private
63
+
64
+ def check_transaction(payment)
65
+ checker = Vpago::Vattanac::TransactionStatus.new(payment)
66
+ checker.call
67
+ checker
68
+ end
69
+ end
70
+ end
@@ -52,17 +52,18 @@ module Vpago
52
52
  end
53
53
 
54
54
  def latest_private_metadata
55
- private_metadata ||= {}
56
-
57
- private_metadata[:subtotal] = subtotal.to_f
58
- private_metadata[:commission_rate] = commission_rate.to_f
59
- private_metadata[:commission_amount] = commission_amount.to_f
60
- private_metadata[:vendor_pre_tax_amount] = vendor_pre_tax_amount.to_f
61
- private_metadata[:pre_commission_amount] = pre_commission_amount.to_f
62
- private_metadata[:vendor_tax_total] = vendor_tax_total.to_f
63
- private_metadata[:vendor_adjustments_total_excluding_tax] = vendor_adjustments_total_excluding_tax.to_f
64
-
65
- private_metadata
55
+ # Preserve existing metadata and merge with new financial data
56
+ updated_private_metadata = (private_metadata || {}).dup
57
+
58
+ updated_private_metadata[:subtotal] = subtotal.to_f
59
+ updated_private_metadata[:commission_rate] = commission_rate.to_f
60
+ updated_private_metadata[:commission_amount] = commission_amount.to_f
61
+ updated_private_metadata[:vendor_pre_tax_amount] = vendor_pre_tax_amount.to_f
62
+ updated_private_metadata[:pre_commission_amount] = pre_commission_amount.to_f
63
+ updated_private_metadata[:vendor_tax_total] = vendor_tax_total.to_f
64
+ updated_private_metadata[:vendor_adjustments_total_excluding_tax] = vendor_adjustments_total_excluding_tax.to_f
65
+
66
+ updated_private_metadata
66
67
  end
67
68
 
68
69
  # generate metadata for financial reports.
@@ -61,9 +61,17 @@ module Vpago
61
61
  payment_method.type_true_money?
62
62
  end
63
63
 
64
+ def vattanac_payment?
65
+ payment_method.type_vattanac?
66
+ end
67
+
64
68
  def vattanac_mini_app_payment?
65
69
  payment_method.type_vattanac_mini_app?
66
70
  end
71
+
72
+ def check_payment?
73
+ payment_method.type_check?
74
+ end
67
75
  end
68
76
  end
69
77
 
@@ -5,8 +5,9 @@ module Vpago
5
5
  TYPE_WINGSDK = 'Spree::Gateway::WingSdk'.freeze
6
6
  TYPE_ACLEDA = 'Spree::Gateway::Acleda'.freeze
7
7
  TYPE_ACLEDA_MOBILE = 'Spree::Gateway::AcledaMobile'.freeze
8
- TYPE_VATTANAC_MINI_APP = 'Spree::Gateway::VattanacMiniApp'.freeze
9
8
  TYPE_TRUE_MONEY = 'Spree::Gateway::TrueMoney'.freeze
9
+ TYPE_VATTANAC = 'Spree::Gateway::Vattanac'.freeze
10
+ TYPE_VATTANAC_MINI_APP = 'Spree::Gateway::VattanacMiniApp'.freeze
10
11
 
11
12
  def self.prepended(base)
12
13
  base.preference :icon_name, :string, default: 'cheque'
@@ -19,6 +20,7 @@ module Vpago
19
20
  Spree::PaymentMethod::TYPE_WINGSDK,
20
21
  Spree::PaymentMethod::TYPE_ACLEDA,
21
22
  Spree::PaymentMethod::TYPE_ACLEDA_MOBILE,
23
+ Spree::PaymentMethod::TYPE_VATTANAC,
22
24
  Spree::PaymentMethod::TYPE_VATTANAC_MINI_APP,
23
25
  Spree::PaymentMethod::TYPE_TRUE_MONEY
24
26
  ]
@@ -97,6 +99,15 @@ module Vpago
97
99
  def type_true_money?
98
100
  type == Spree::PaymentMethod::TYPE_TRUE_MONEY
99
101
  end
102
+
103
+ def type_check?
104
+ type == 'Spree::PaymentMethod::Check'
105
+ end
106
+
107
+ # @return [String] the image asset path, e.g. "payment_logos/payway-abapay-khqr.png"
108
+ def payment_icon_path
109
+ "payment_logos/#{preferred_icon_name.tr('_', ' ').parameterize}.png"
110
+ end
100
111
  end
101
112
  end
102
113
 
@@ -7,7 +7,6 @@ module Vpago
7
7
  end
8
8
 
9
9
  def find_and_verify
10
-
11
10
  find_and_verify!
12
11
  rescue StandardError, ActiveRecord::RecordNotFound => e
13
12
  Rails.logger.error("PaymentJwtVerifier#find_and_verify error: #{e.class} - #{e.message}")
@@ -15,16 +14,15 @@ module Vpago
15
14
  end
16
15
 
17
16
  def find_and_verify!
18
-
19
17
  if vattanac_mini_app_payload?
20
- payload = Vpago::VattanacMiniAppDataHandler.new.decrypt_data(@params_hash[:data])
18
+ payload = Vpago::VattanacMiniAppDataHandler.new.decrypt_data(@params_hash[:data])
21
19
  payment = Spree::Payment.find_by!(number: payload['paymentId'])
22
20
  payment.update(transaction_response: payload)
23
21
  payment
24
- else
22
+ else
25
23
  order = Spree::Order.find_by!(number: params_hash[:order_number])
26
24
  verify_jwt!(order)
27
-
25
+
28
26
  Spree::Payment.find_by!(number: params_hash[:payment_number])
29
27
  end
30
28
  end
@@ -36,8 +34,5 @@ module Vpago
36
34
  def vattanac_mini_app_payload?
37
35
  params_hash[:data].present?
38
36
  end
39
-
40
37
  end
41
38
  end
42
-
43
-
@@ -39,9 +39,10 @@ module Vpago
39
39
  }.compact
40
40
 
41
41
  payment.source = payment_method.payment_source_class.new(source_attributes)
42
- payment.save!
43
42
  end
44
43
 
44
+ payment.save!
45
+
45
46
  return failure(payment) if payment.errors.any?
46
47
 
47
48
  success(order: order)
@@ -0,0 +1,6 @@
1
+ <%= render 'spree/admin/payments/source_views/vpago_payment_tmpl',
2
+ payment: payment,
3
+ check_status_url: '',
4
+ heal_payment_url: '',
5
+ manual_update_payment_url: ''
6
+ %>
@@ -0,0 +1,31 @@
1
+ <%
2
+ checkout = Vpago::Vattanac::Checkout.new(@payment)
3
+ result = checkout.create
4
+ payment_url = params[:platform] == 'app' ? result[:mobile_url] : result[:web_url]
5
+ open_type = @payment.payment_method.preferred_open_type
6
+ %>
7
+
8
+ <script>
9
+ const openType = "<%= open_type %>";
10
+ const mobileUrl = "<%= raw(result[:mobile_url]) %>";
11
+ const webUrl = "<%= raw(result[:web_url]) %>";
12
+
13
+ if (openType === "both") {
14
+ if (mobileUrl) {
15
+ window.location.href = mobileUrl;
16
+ setTimeout(() => {
17
+ window.location.href = webUrl;
18
+ }, 1500);
19
+ } else {
20
+ alert("Mobile payment URL not available.");
21
+ }
22
+ } else {
23
+ const paymentUrl = "<%= raw(payment_url) %>";
24
+ if (paymentUrl) {
25
+ window.location.href = paymentUrl;
26
+ } else {
27
+ alert("Failed to create payment link.");
28
+ }
29
+ }
30
+ </script>
31
+
@@ -22,6 +22,7 @@ module SpreeVpago
22
22
  Spree::Gateway::WingSdk,
23
23
  Spree::Gateway::Acleda,
24
24
  Spree::Gateway::AcledaMobile,
25
+ Spree::Gateway::Vattanac,
25
26
  Spree::Gateway::VattanacMiniApp,
26
27
  Spree::Gateway::TrueMoney
27
28
  )
@@ -1,7 +1,7 @@
1
1
  module SpreeVpago
2
2
  module_function
3
3
 
4
- VERSION = '2.1.1'.freeze
4
+ VERSION = '2.1.3-beta'.freeze
5
5
 
6
6
  def version
7
7
  Gem::Version.new VERSION
@@ -0,0 +1,90 @@
1
+ require 'faraday'
2
+
3
+ module Vpago
4
+ module Vattanac
5
+ class Base
6
+ CONTENT_TYPE_JSON = 'application/json'.freeze
7
+
8
+ def initialize(payment)
9
+ @payment = payment
10
+ end
11
+
12
+ def username
13
+ payment_method.preferred_username
14
+ end
15
+
16
+ def password
17
+ payment_method.preferred_password
18
+ end
19
+
20
+ def access_token_url
21
+ payment_method.preferred_access_token_url
22
+ end
23
+
24
+ def generate_payment_url
25
+ payment_method.preferred_generate_payment_url
26
+ end
27
+
28
+ def check_transaction_url
29
+ payment_method.preferred_check_transaction_url
30
+ end
31
+
32
+ def access_token
33
+ @access_token ||= fetch_access_token
34
+ end
35
+
36
+ def payment_method
37
+ @payment.payment_method
38
+ end
39
+
40
+ def payment_number
41
+ @payment.number
42
+ end
43
+
44
+ def payment_type
45
+ payment_method.preferred_payment_type
46
+ end
47
+
48
+ def merchant_id
49
+ payment_method.preferred_merchant_id
50
+ end
51
+
52
+ def amount
53
+ @payment.amount
54
+ end
55
+
56
+ def currency
57
+ 'USD'
58
+ end
59
+
60
+ def default_headers
61
+ { 'Authorization' => "Bearer #{access_token}", 'Content-Type' => CONTENT_TYPE_JSON }
62
+ end
63
+
64
+ def parse_json(body)
65
+ JSON.parse(body)
66
+ rescue JSON::ParserError
67
+ {}
68
+ end
69
+
70
+ private
71
+
72
+ def fetch_access_token
73
+ response = Faraday.post(access_token_url, { username: username, password: password }.to_json, { 'Content-Type' => CONTENT_TYPE_JSON })
74
+ raise "Access Token Error: #{response.status} - #{response.body}" unless response.success?
75
+
76
+ parse_json(response.body).dig('data', 'accessToken') || raise('Missing accessToken in response')
77
+ end
78
+
79
+ def post(url, body)
80
+ response = Faraday.post(url, body.to_json, default_headers)
81
+ parse_json(response.body)
82
+ end
83
+
84
+ def get(url, params)
85
+ response = Faraday.get(url, params, default_headers)
86
+ parse_json(response.body)['data'] || {}
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,27 @@
1
+ module Vpago
2
+ module Vattanac
3
+ class Checkout < Base
4
+ def payload
5
+ {
6
+ transactionId: payment_number,
7
+ requestId: "req-#{SecureRandom.hex(8)}",
8
+ paymentType: payment_type,
9
+ amount: amount,
10
+ currency: currency,
11
+ merchantId: merchant_id,
12
+ returnUrl: @payment.processing_url
13
+ }
14
+ end
15
+
16
+ def create
17
+ response_data = post(generate_payment_url, payload)['data']
18
+ {
19
+ web_url: response_data['webPaymentUrl'],
20
+ mobile_url: response_data['mobileDeepLink'],
21
+ expires_at: response_data['expiredIn'],
22
+ generated_at: response_data['generatedAt']
23
+ }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ module Vpago
2
+ module Vattanac
3
+ class TransactionStatus < Base
4
+ def call
5
+ @response = post(check_transaction_url, payload)
6
+ end
7
+
8
+ def json_response
9
+ @response
10
+ end
11
+
12
+ def success?
13
+ @response.dig('msgEntity', 'code') == '0'
14
+ end
15
+
16
+ private
17
+
18
+ def payload
19
+ { transactionId: payment_number }
20
+ end
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_vpago
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.3.pre.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-11 00:00:00.000000000 Z
11
+ date: 2025-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -132,6 +132,18 @@ files:
132
132
  - app/.gitkeep
133
133
  - app/assets/config/spree_vpago_manifest.js
134
134
  - app/assets/images/backend-process.svg
135
+ - app/assets/images/payment_logos/acleda-cards.png
136
+ - app/assets/images/payment_logos/acleda-khqr.png
137
+ - app/assets/images/payment_logos/acleda.png
138
+ - app/assets/images/payment_logos/cheque.png
139
+ - app/assets/images/payment_logos/payway-abapay-khqr.png
140
+ - app/assets/images/payment_logos/payway-abapay.png
141
+ - app/assets/images/payment_logos/payway-alipay.png
142
+ - app/assets/images/payment_logos/payway-cards.png
143
+ - app/assets/images/payment_logos/payway-wechat.png
144
+ - app/assets/images/payment_logos/true-money.png
145
+ - app/assets/images/payment_logos/vattanac-mini-app.png
146
+ - app/assets/images/payment_logos/wingpay.png
135
147
  - app/assets/images/vpago/payway/abapay.png
136
148
  - app/assets/images/vpago/payway/cards.png
137
149
  - app/assets/javascripts/vpago/vpago_payments/payment_processing_listener.js
@@ -181,6 +193,7 @@ files:
181
193
  - app/models/spree/gateway/payway.rb
182
194
  - app/models/spree/gateway/payway_v2.rb
183
195
  - app/models/spree/gateway/true_money.rb
196
+ - app/models/spree/gateway/vattanac.rb
184
197
  - app/models/spree/gateway/vattanac_mini_app.rb
185
198
  - app/models/spree/gateway/wing_sdk.rb
186
199
  - app/models/spree/payout.rb
@@ -265,6 +278,7 @@ files:
265
278
  - app/views/spree/admin/payments/source_views/_payment_payway.html.erb
266
279
  - app/views/spree/admin/payments/source_views/_payway_v2.html.erb
267
280
  - app/views/spree/admin/payments/source_views/_true_money.html.erb
281
+ - app/views/spree/admin/payments/source_views/_vattanac.html.erb
268
282
  - app/views/spree/admin/payments/source_views/_vattanac_mini_app.html.erb
269
283
  - app/views/spree/admin/payments/source_views/_vpago_payment_tmpl.html.erb
270
284
  - app/views/spree/admin/payments/source_views/_wingsdk.html.erb
@@ -313,6 +327,7 @@ files:
313
327
  - app/views/spree/vpago_payments/checkout.html.erb
314
328
  - app/views/spree/vpago_payments/forms/spree/gateway/_payway_v2.html.erb
315
329
  - app/views/spree/vpago_payments/forms/spree/gateway/_true_money.html.erb
330
+ - app/views/spree/vpago_payments/forms/spree/gateway/_vattanac.html.erb
316
331
  - app/views/spree/vpago_payments/forms/spree/gateway/_vattanac_mini_app.html.erb
317
332
  - app/views/spree/vpago_payments/processing.html.erb
318
333
  - app/views/spree/vpago_payments/success.html.erb
@@ -386,6 +401,9 @@ files:
386
401
  - lib/vpago/true_money/checkout.rb
387
402
  - lib/vpago/true_money/refund_issuer.rb
388
403
  - lib/vpago/true_money/transaction_status.rb
404
+ - lib/vpago/vattanac/base.rb
405
+ - lib/vpago/vattanac/checkout.rb
406
+ - lib/vpago/vattanac/transaction_status.rb
389
407
  - lib/vpago/vattanac_mini_app/base.rb
390
408
  - lib/vpago/vattanac_mini_app/checkout.rb
391
409
  - lib/vpago/vattanac_mini_app/refund_issuer.rb
@@ -416,9 +434,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
416
434
  version: 3.2.0
417
435
  required_rubygems_version: !ruby/object:Gem::Requirement
418
436
  requirements:
419
- - - ">="
437
+ - - ">"
420
438
  - !ruby/object:Gem::Version
421
- version: '0'
439
+ version: 1.3.1
422
440
  requirements:
423
441
  - none
424
442
  rubygems_version: 3.4.1