spree_vpago 2.4.0.pre.pre2 → 2.4.0.pre.pre4
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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/assets/config/spree_vpago_manifest.js +2 -0
- data/app/assets/javascripts/vpago/wing_mini_app/login.js +75 -0
- data/app/assets/javascripts/vpago/wing_mini_app/web_jsbridge.bundle.js +1507 -0
- data/app/controllers/concerns/spree/mini_app_concern.rb +25 -0
- data/app/controllers/spree/admin/payment_acleda_v2_base_controller.rb +21 -0
- data/app/controllers/spree/admin/payment_acleda_v2_checkers_controller.rb +26 -0
- data/app/controllers/spree/admin/payment_acleda_v2_queriers_controller.rb +38 -0
- data/app/controllers/spree/admin/payment_payway_queriers_controller.rb +7 -0
- data/app/controllers/spree/admin/payment_vattanac_base_controller.rb +21 -0
- data/app/controllers/spree/admin/payment_vattanac_checkers_controller.rb +26 -0
- data/app/controllers/spree/admin/payment_vattanac_queriers_controller.rb +38 -0
- data/app/controllers/spree/{miniapp → mini_app}/acledas_controller.rb +12 -6
- data/app/controllers/spree/mini_app/wings_controller.rb +58 -0
- data/app/controllers/spree/vpago_payments_controller.rb +15 -3
- data/app/helpers/vpago/vpago_payments_helper.rb +6 -0
- data/app/models/spree/gateway/acleda_mini_app.rb +4 -6
- data/app/models/spree/gateway/wing_mini_app.rb +58 -0
- data/app/models/vpago/payment_decorator.rb +4 -0
- data/app/models/vpago/payment_method_decorator.rb +14 -0
- data/app/serializers/spree/v2/storefront/payment_method_serializer_decorator.rb +6 -0
- data/app/services/vpago/acleda_mini_app/session/create.rb +45 -23
- data/app/services/vpago/payment_finder.rb +11 -0
- data/app/services/vpago/wing_mini_app/session/create.rb +55 -0
- data/app/views/layouts/wing_mini_app.html.erb +20 -0
- data/app/views/spree/admin/payments/source_views/_acleda_v2.html.erb +2 -2
- data/app/views/spree/admin/payments/source_views/_vattanac.html.erb +3 -3
- data/app/views/spree/admin/payments/source_views/_wing_mini_app.html.erb +6 -0
- data/app/views/spree/mini_app/wings/show.html.erb +44 -0
- data/app/views/spree/vpago_payments/_success_script.html.erb +7 -0
- data/app/views/spree/vpago_payments/forms/spree/gateway/_acleda_mini_app.html.erb +80 -79
- data/app/views/spree/vpago_payments/forms/spree/gateway/_wing_mini_app.html.erb +88 -0
- data/app/views/spree/vpago_payments/processing_scripts/spree/gateway/_wing_mini_app.html.erb +15 -0
- data/app/views/spree/vpago_payments/success.html.erb +2 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/km.yml +1 -0
- data/config/routes.rb +17 -4
- data/lib/spree_vpago/engine.rb +1 -0
- data/lib/spree_vpago/version.rb +1 -1
- data/lib/vpago/acleda_mini_app/checkout.rb +5 -9
- data/lib/vpago/acleda_mini_app/session_hash_validator.rb +35 -0
- data/lib/vpago/acleda_v2/payment_request_updater.rb +54 -0
- data/lib/vpago/http_timeouts.rb +6 -0
- data/lib/vpago/payway_v2/payment_request_updater.rb +5 -0
- data/lib/vpago/payway_v2/transaction_status.rb +2 -0
- data/lib/vpago/payway_v2/transaction_status_v2.rb +2 -0
- data/lib/vpago/true_money/base.rb +1 -1
- data/lib/vpago/true_money/transaction_status.rb +1 -1
- data/lib/vpago/vattanac/base.rb +3 -2
- data/lib/vpago/vattanac/payment_request_updater.rb +54 -0
- data/lib/vpago/vattanac/transaction_status.rb +17 -1
- data/lib/vpago/wing_mini_app/checkout.rb +60 -0
- data/lib/vpago/wing_mini_app/webhook_verifier.rb +78 -0
- metadata +27 -3
|
@@ -28,6 +28,11 @@ module Vpago
|
|
|
28
28
|
elsif checker.failed?
|
|
29
29
|
mark_payment_as_failed(checker.error_message)
|
|
30
30
|
end
|
|
31
|
+
rescue Faraday::TimeoutError, Faraday::ConnectionFailed => e
|
|
32
|
+
VpagoLogger.error(
|
|
33
|
+
label: 'Vpago::PaywayV2::PaymentRequestUpdater#process_payment_status gateway_timeout',
|
|
34
|
+
data: { payment_number: @payment.number, error_class: e.class.name, error_message: e.message }
|
|
35
|
+
)
|
|
31
36
|
end
|
|
32
37
|
|
|
33
38
|
def mark_payment_as_success(checker)
|
|
@@ -37,6 +37,8 @@ module Vpago
|
|
|
37
37
|
def check_remote_status
|
|
38
38
|
conn = Faraday::Connection.new do |faraday|
|
|
39
39
|
faraday.request :url_encoded
|
|
40
|
+
faraday.options.open_timeout = Vpago::HttpTimeouts::OPEN_TIMEOUT
|
|
41
|
+
faraday.options.timeout = Vpago::HttpTimeouts::TIMEOUT
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
data = {
|
|
@@ -52,6 +52,8 @@ module Vpago
|
|
|
52
52
|
def check_remote_status
|
|
53
53
|
conn = Faraday::Connection.new do |faraday|
|
|
54
54
|
faraday.request :url_encoded
|
|
55
|
+
faraday.options.open_timeout = Vpago::HttpTimeouts::OPEN_TIMEOUT
|
|
56
|
+
faraday.options.timeout = Vpago::HttpTimeouts::TIMEOUT
|
|
55
57
|
end
|
|
56
58
|
|
|
57
59
|
data = {
|
|
@@ -100,7 +100,7 @@ module Vpago
|
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def fetch_access_token
|
|
103
|
-
response = Faraday.post(
|
|
103
|
+
response = Faraday.new(request: { open_timeout: Vpago::HttpTimeouts::OPEN_TIMEOUT, timeout: Vpago::HttpTimeouts::TIMEOUT }).post(
|
|
104
104
|
access_token_url,
|
|
105
105
|
URI.encode_www_form(
|
|
106
106
|
grant_type: 'client_credentials',
|
|
@@ -2,7 +2,7 @@ module Vpago
|
|
|
2
2
|
module TrueMoney
|
|
3
3
|
class TransactionStatus < Base
|
|
4
4
|
def call
|
|
5
|
-
@response = Faraday.get(check_transaction_url, nil, default_headers)
|
|
5
|
+
@response = Faraday.new(request: { open_timeout: Vpago::HttpTimeouts::OPEN_TIMEOUT, timeout: Vpago::HttpTimeouts::TIMEOUT }).get(check_transaction_url, nil, default_headers)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def success?
|
data/lib/vpago/vattanac/base.rb
CHANGED
|
@@ -70,7 +70,8 @@ module Vpago
|
|
|
70
70
|
private
|
|
71
71
|
|
|
72
72
|
def fetch_access_token
|
|
73
|
-
response = Faraday.
|
|
73
|
+
response = Faraday.new(request: { open_timeout: Vpago::HttpTimeouts::OPEN_TIMEOUT, timeout: Vpago::HttpTimeouts::TIMEOUT })
|
|
74
|
+
.post(access_token_url, { username: username, password: password }.to_json, { 'Content-Type' => CONTENT_TYPE_JSON })
|
|
74
75
|
|
|
75
76
|
raise "Access Token Error: #{response.status} - #{response.body}" unless response.success?
|
|
76
77
|
|
|
@@ -78,7 +79,7 @@ module Vpago
|
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
def post(url, body)
|
|
81
|
-
response = Faraday.post(url, body.to_json, default_headers)
|
|
82
|
+
response = Faraday.new(request: { open_timeout: Vpago::HttpTimeouts::OPEN_TIMEOUT, timeout: Vpago::HttpTimeouts::TIMEOUT }).post(url, body.to_json, default_headers)
|
|
82
83
|
parse_json(response.body)
|
|
83
84
|
end
|
|
84
85
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module Vpago
|
|
2
|
+
module Vattanac
|
|
3
|
+
class PaymentRequestUpdater < ::Vpago::PaymentRequestUpdater
|
|
4
|
+
def call
|
|
5
|
+
return if @payment.order.paid?
|
|
6
|
+
|
|
7
|
+
if items_eligible?
|
|
8
|
+
process_payment_status
|
|
9
|
+
else
|
|
10
|
+
mark_items_as_ineligible
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def process_payment_status
|
|
17
|
+
checker = @payment.payment_method.check_transaction(@payment)
|
|
18
|
+
|
|
19
|
+
if checker.success?
|
|
20
|
+
mark_payment_as_success
|
|
21
|
+
elsif checker.failed? && !ignore_on_failed?
|
|
22
|
+
mark_payment_as_failed(checker.error_message)
|
|
23
|
+
end
|
|
24
|
+
rescue Faraday::TimeoutError, Faraday::ConnectionFailed => e
|
|
25
|
+
VpagoLogger.error(
|
|
26
|
+
label: 'Vpago::Vattanac::PaymentRequestUpdater#process_payment_status gateway_timeout',
|
|
27
|
+
data: { payment_number: @payment.number, error_class: e.class.name, error_message: e.message }
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def items_eligible?
|
|
32
|
+
@payment&.order&.line_items&.all?(&:sufficient_stock?) == true # rubocop:disable Style/SafeNavigationChainLength
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def mark_items_as_ineligible
|
|
36
|
+
@error_message = 'Items are not eligible due to insufficient stock'
|
|
37
|
+
marker_options = @options.merge(status: false, description: @error_message)
|
|
38
|
+
::Vpago::PaymentStatusMarker.new(@payment, marker_options).call
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def mark_payment_as_success
|
|
42
|
+
@error_message = nil
|
|
43
|
+
marker_options = @options.merge(status: true, description: nil)
|
|
44
|
+
::Vpago::PaymentStatusMarker.new(@payment, marker_options).call
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def mark_payment_as_failed(error_message)
|
|
48
|
+
@error_message = error_message
|
|
49
|
+
marker_options = @options.merge(status: false, description: @error_message)
|
|
50
|
+
::Vpago::PaymentStatusMarker.new(@payment, marker_options).call
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -13,6 +13,22 @@ module Vpago
|
|
|
13
13
|
@response.dig('data', 'status') == 'SUCCESS'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
def error_message
|
|
17
|
+
@response.dig('msgEntity', 'message') || @response.dig('data', 'message') || 'Unknown error'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# msgEntity.code is the API-envelope result code ("0" = call succeeded; check
|
|
21
|
+
# data.status for the actual transaction state). Any other code is a gateway-level
|
|
22
|
+
# error with no transaction data (e.g. "03" / "Transaction not found") and is
|
|
23
|
+
# treated as terminal failure.
|
|
24
|
+
def failed?
|
|
25
|
+
@response.dig('msgEntity', 'code').to_s != '0'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def pending?
|
|
29
|
+
!success? && !failed?
|
|
30
|
+
end
|
|
31
|
+
|
|
16
32
|
private
|
|
17
33
|
|
|
18
34
|
def payload
|
|
@@ -20,4 +36,4 @@ module Vpago
|
|
|
20
36
|
end
|
|
21
37
|
end
|
|
22
38
|
end
|
|
23
|
-
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Vpago
|
|
2
|
+
module WingMiniApp
|
|
3
|
+
# Builds the doPayment() payload (Wing Web JS Bridge SDK spec, Native API #2).
|
|
4
|
+
#
|
|
5
|
+
# useDefault is hardcoded true for this first cut — no "let the user pick
|
|
6
|
+
# another account" UI yet, same scope cut as shipping login before payment.
|
|
7
|
+
class Checkout
|
|
8
|
+
def initialize(payment)
|
|
9
|
+
@payment = payment
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Pure fields only — no payment_method preference lookup involved, safe to
|
|
13
|
+
# render/log/test directly. appId is left out here: it needs the gateway's
|
|
14
|
+
# own app_id, so it's added in #signed_payload alongside additionalKey instead.
|
|
15
|
+
def payload
|
|
16
|
+
{
|
|
17
|
+
account: account,
|
|
18
|
+
amount: amount,
|
|
19
|
+
currency: currency,
|
|
20
|
+
useDefault: true
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# The full payload doPayment() actually needs, with appId and the
|
|
25
|
+
# server-side-only additionalKey.hash merged in. Never render
|
|
26
|
+
# `secret_api_key` itself into the page — only this derived hash.
|
|
27
|
+
def signed_payload
|
|
28
|
+
payload.merge(appId: app_id, additionalKey: { hash: hash, remark: '' })
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def account
|
|
32
|
+
@payment.number
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def amount
|
|
36
|
+
format('%.2f', @payment.amount)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def currency
|
|
40
|
+
@payment.currency
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def app_id
|
|
46
|
+
payment_method.app_id
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# uppercase(account+amount+currency+secretApiKey), per the spec.
|
|
50
|
+
def hash
|
|
51
|
+
plaintext = "#{account}#{amount}#{currency}#{payment_method.secret_api_key}"
|
|
52
|
+
Digest::SHA256.hexdigest(plaintext.upcase).upcase
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def payment_method
|
|
56
|
+
@payment.payment_method
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module Vpago
|
|
2
|
+
module WingMiniApp
|
|
3
|
+
# Verifies a Wing getStatus/webhook payload (Wing Web JS Bridge SDK spec,
|
|
4
|
+
# Native-App Invoke #1 getStatus) is both authentic and correct for the
|
|
5
|
+
# payment it claims to settle. Both checks live here, in one place:
|
|
6
|
+
#
|
|
7
|
+
# - the secretKey signature (proves Wing sent this, for this orderRef —
|
|
8
|
+
# unlike getProfile, appId is our own configured value here, not a payload
|
|
9
|
+
# field, since the spec's getStatus response never includes one)
|
|
10
|
+
# - the doc-mandated amount/currency match (catches a validly-signed webhook
|
|
11
|
+
# that reports the wrong amount, since Wing holds the keys and could sign
|
|
12
|
+
# any amount for a real orderRef if something on their end got it wrong —
|
|
13
|
+
# not a forgery guard, since orderRef is itself part of what secretKey
|
|
14
|
+
# signs, so a valid signature is already bound to exactly this payment)
|
|
15
|
+
class WebhookVerifier
|
|
16
|
+
FIELDS = %w[orderRef debitAmount debitCcy transactionId transactionDate].freeze
|
|
17
|
+
|
|
18
|
+
# payment is the specific one this settlement claims to be for — both what
|
|
19
|
+
# verifies the signature (via its own payment_method's app_id/secret_api_key)
|
|
20
|
+
# and what the amount/currency check runs against.
|
|
21
|
+
def initialize(payload, payment)
|
|
22
|
+
@payload = payload.with_indifferent_access
|
|
23
|
+
@payment = payment
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def valid?
|
|
27
|
+
valid_signature? && amount_matches?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
attr_reader :payload, :payment
|
|
33
|
+
|
|
34
|
+
def payment_method
|
|
35
|
+
payment.payment_method
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def valid_signature?
|
|
39
|
+
received = payload['secretKey']
|
|
40
|
+
received.present? && candidates.value?(received.to_s.upcase)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Numeric comparison, not string: Wing's own spec says debitAmount is always
|
|
44
|
+
# 2-decimal ("1.00"), but real payloads have sent "1" (no decimals) — same
|
|
45
|
+
# kind of spec-vs-reality gap as getProfile's `sex` field.
|
|
46
|
+
def amount_matches?
|
|
47
|
+
payment.amount == BigDecimal(payload['debitAmount'].to_s) &&
|
|
48
|
+
payment.currency.to_s.casecmp(payload['debitCcy'].to_s).zero?
|
|
49
|
+
rescue ArgumentError, TypeError
|
|
50
|
+
false
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Same spec-vs-reality gap, applied to the signature itself: Wing's own
|
|
54
|
+
# secretKey may have been computed against the canonical 2-decimal
|
|
55
|
+
# debitAmount even though what actually reached us isn't. Try both so a
|
|
56
|
+
# formatting-only mismatch between what Wing hashed and what Wing sent
|
|
57
|
+
# still verifies.
|
|
58
|
+
def candidates
|
|
59
|
+
{
|
|
60
|
+
raw: hash_for(payload['debitAmount'].to_s),
|
|
61
|
+
normalized: hash_for(normalized_debit_amount)
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def normalized_debit_amount
|
|
66
|
+
format('%.2f', BigDecimal(payload['debitAmount'].to_s))
|
|
67
|
+
rescue ArgumentError, TypeError
|
|
68
|
+
payload['debitAmount'].to_s
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def hash_for(debit_amount)
|
|
72
|
+
fields = FIELDS.map { |field| field == 'debitAmount' ? debit_amount : payload[field].to_s }.join
|
|
73
|
+
plaintext = "#{payment_method.app_id}#{fields}#{payment_method.secret_api_key}"
|
|
74
|
+
Digest::SHA256.hexdigest(plaintext.upcase).upcase
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
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.4.0.pre.
|
|
4
|
+
version: 2.4.0.pre.pre4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -149,13 +149,22 @@ files:
|
|
|
149
149
|
- app/assets/javascripts/vpago/vpago_payments/check_transaction_periodically.js
|
|
150
150
|
- app/assets/javascripts/vpago/vpago_payments/request_process_payment.js
|
|
151
151
|
- app/assets/javascripts/vpago/vpago_payments/user_informers/firebase.js
|
|
152
|
+
- app/assets/javascripts/vpago/wing_mini_app/login.js
|
|
153
|
+
- app/assets/javascripts/vpago/wing_mini_app/web_jsbridge.bundle.js
|
|
152
154
|
- app/controllers/.gitkeep
|
|
155
|
+
- app/controllers/concerns/spree/mini_app_concern.rb
|
|
153
156
|
- app/controllers/spree/acleda_redirects_controller.rb
|
|
157
|
+
- app/controllers/spree/admin/payment_acleda_v2_base_controller.rb
|
|
158
|
+
- app/controllers/spree/admin/payment_acleda_v2_checkers_controller.rb
|
|
159
|
+
- app/controllers/spree/admin/payment_acleda_v2_queriers_controller.rb
|
|
154
160
|
- app/controllers/spree/admin/payment_methods_controller_decorator.rb
|
|
155
161
|
- app/controllers/spree/admin/payment_payway_base_controller.rb
|
|
156
162
|
- app/controllers/spree/admin/payment_payway_checkers_controller.rb
|
|
157
163
|
- app/controllers/spree/admin/payment_payway_markers_controller.rb
|
|
158
164
|
- app/controllers/spree/admin/payment_payway_queriers_controller.rb
|
|
165
|
+
- app/controllers/spree/admin/payment_vattanac_base_controller.rb
|
|
166
|
+
- app/controllers/spree/admin/payment_vattanac_checkers_controller.rb
|
|
167
|
+
- app/controllers/spree/admin/payment_vattanac_queriers_controller.rb
|
|
159
168
|
- app/controllers/spree/admin/payment_wing_sdk_base_controller.rb
|
|
160
169
|
- app/controllers/spree/admin/payment_wing_sdk_checkers_controller.rb
|
|
161
170
|
- app/controllers/spree/admin/payment_wing_sdk_markers_controller.rb
|
|
@@ -167,7 +176,8 @@ files:
|
|
|
167
176
|
- app/controllers/spree/admin/payouts_controller.rb
|
|
168
177
|
- app/controllers/spree/admin/suspicious_orders_controller.rb
|
|
169
178
|
- app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb
|
|
170
|
-
- app/controllers/spree/
|
|
179
|
+
- app/controllers/spree/mini_app/acledas_controller.rb
|
|
180
|
+
- app/controllers/spree/mini_app/wings_controller.rb
|
|
171
181
|
- app/controllers/spree/payway_card_popups_controller.rb
|
|
172
182
|
- app/controllers/spree/payway_results_controller.rb
|
|
173
183
|
- app/controllers/spree/payway_v2_card_popups_controller.rb
|
|
@@ -201,6 +211,7 @@ files:
|
|
|
201
211
|
- app/models/spree/gateway/true_money.rb
|
|
202
212
|
- app/models/spree/gateway/vattanac.rb
|
|
203
213
|
- app/models/spree/gateway/vattanac_mini_app.rb
|
|
214
|
+
- app/models/spree/gateway/wing_mini_app.rb
|
|
204
215
|
- app/models/spree/gateway/wing_sdk.rb
|
|
205
216
|
- app/models/spree/payment_method/cash_on.rb
|
|
206
217
|
- app/models/spree/payout.rb
|
|
@@ -275,12 +286,14 @@ files:
|
|
|
275
286
|
- app/services/vpago/rsa_handler.rb
|
|
276
287
|
- app/services/vpago/user_informers/firebase.rb
|
|
277
288
|
- app/services/vpago/vattanac_mini_app_data_handler.rb
|
|
289
|
+
- app/services/vpago/wing_mini_app/session/create.rb
|
|
278
290
|
- app/views/.gitkeep
|
|
279
291
|
- app/views/layouts/acleda.html.erb
|
|
280
292
|
- app/views/layouts/payway.html.erb
|
|
281
293
|
- app/views/layouts/payway_v2.html.erb
|
|
282
294
|
- app/views/layouts/vpago_payments.html.erb
|
|
283
295
|
- app/views/layouts/wing.html.erb
|
|
296
|
+
- app/views/layouts/wing_mini_app.html.erb
|
|
284
297
|
- app/views/spree/_payment_icon.html.erb
|
|
285
298
|
- app/views/spree/acleda_redirects/show.html.erb
|
|
286
299
|
- app/views/spree/admin/payments/source_forms/_payment_payway.html.erb
|
|
@@ -295,6 +308,7 @@ files:
|
|
|
295
308
|
- app/views/spree/admin/payments/source_views/_vattanac.html.erb
|
|
296
309
|
- app/views/spree/admin/payments/source_views/_vattanac_mini_app.html.erb
|
|
297
310
|
- app/views/spree/admin/payments/source_views/_vpago_payment_tmpl.html.erb
|
|
311
|
+
- app/views/spree/admin/payments/source_views/_wing_mini_app.html.erb
|
|
298
312
|
- app/views/spree/admin/payments/source_views/_wingsdk.html.erb
|
|
299
313
|
- app/views/spree/admin/payout_profile_products/_form.html.erb
|
|
300
314
|
- app/views/spree/admin/payout_profile_products/edit.html.erb
|
|
@@ -336,12 +350,14 @@ files:
|
|
|
336
350
|
- app/views/spree/checkout/payment/payway_form.html.erb
|
|
337
351
|
- app/views/spree/checkout/payment/payway_v2_form.html.erb
|
|
338
352
|
- app/views/spree/checkout/payment/wingsdk_form.html.erb
|
|
353
|
+
- app/views/spree/mini_app/wings/show.html.erb
|
|
339
354
|
- app/views/spree/payway_card_popups/_form.html.erb
|
|
340
355
|
- app/views/spree/payway_card_popups/show.html.erb
|
|
341
356
|
- app/views/spree/payway_results/failed.html.erb
|
|
342
357
|
- app/views/spree/payway_results/success.html.erb
|
|
343
358
|
- app/views/spree/payway_v2_card_popups/_form.html.erb
|
|
344
359
|
- app/views/spree/payway_v2_card_popups/show.html.erb
|
|
360
|
+
- app/views/spree/vpago_payments/_success_script.html.erb
|
|
345
361
|
- app/views/spree/vpago_payments/_transaction_checker.html.erb
|
|
346
362
|
- app/views/spree/vpago_payments/checkout.html.erb
|
|
347
363
|
- app/views/spree/vpago_payments/forms/spree/gateway/_acleda_mini_app.html.erb
|
|
@@ -350,8 +366,10 @@ files:
|
|
|
350
366
|
- app/views/spree/vpago_payments/forms/spree/gateway/_true_money.html.erb
|
|
351
367
|
- app/views/spree/vpago_payments/forms/spree/gateway/_vattanac.html.erb
|
|
352
368
|
- app/views/spree/vpago_payments/forms/spree/gateway/_vattanac_mini_app.html.erb
|
|
369
|
+
- app/views/spree/vpago_payments/forms/spree/gateway/_wing_mini_app.html.erb
|
|
353
370
|
- app/views/spree/vpago_payments/processing.html.erb
|
|
354
371
|
- app/views/spree/vpago_payments/processing_scripts/spree/gateway/_payway_v2.html.erb
|
|
372
|
+
- app/views/spree/vpago_payments/processing_scripts/spree/gateway/_wing_mini_app.html.erb
|
|
355
373
|
- app/views/spree/vpago_payments/success.html.erb
|
|
356
374
|
- app/views/spree/wing_redirects/show.html.erb
|
|
357
375
|
- bin/rails
|
|
@@ -397,6 +415,7 @@ files:
|
|
|
397
415
|
- lib/vpago/acleda/payment_request_updater.rb
|
|
398
416
|
- lib/vpago/acleda/transaction_status.rb
|
|
399
417
|
- lib/vpago/acleda_mini_app/checkout.rb
|
|
418
|
+
- lib/vpago/acleda_mini_app/session_hash_validator.rb
|
|
400
419
|
- lib/vpago/acleda_mobile/base.rb
|
|
401
420
|
- lib/vpago/acleda_mobile/callback_validator.php
|
|
402
421
|
- lib/vpago/acleda_mobile/callback_validator.rb
|
|
@@ -406,7 +425,9 @@ files:
|
|
|
406
425
|
- lib/vpago/acleda_mobile/transaction_status.rb
|
|
407
426
|
- lib/vpago/acleda_v2/base.rb
|
|
408
427
|
- lib/vpago/acleda_v2/checkout.rb
|
|
428
|
+
- lib/vpago/acleda_v2/payment_request_updater.rb
|
|
409
429
|
- lib/vpago/acleda_v2/transaction_status.rb
|
|
430
|
+
- lib/vpago/http_timeouts.rb
|
|
410
431
|
- lib/vpago/payment_amount_calculator.rb
|
|
411
432
|
- lib/vpago/payment_request_updater.rb
|
|
412
433
|
- lib/vpago/payment_status_marker.rb
|
|
@@ -430,10 +451,13 @@ files:
|
|
|
430
451
|
- lib/vpago/true_money/transaction_status.rb
|
|
431
452
|
- lib/vpago/vattanac/base.rb
|
|
432
453
|
- lib/vpago/vattanac/checkout.rb
|
|
454
|
+
- lib/vpago/vattanac/payment_request_updater.rb
|
|
433
455
|
- lib/vpago/vattanac/transaction_status.rb
|
|
434
456
|
- lib/vpago/vattanac_mini_app/base.rb
|
|
435
457
|
- lib/vpago/vattanac_mini_app/checkout.rb
|
|
436
458
|
- lib/vpago/vattanac_mini_app/refund_issuer.rb
|
|
459
|
+
- lib/vpago/wing_mini_app/checkout.rb
|
|
460
|
+
- lib/vpago/wing_mini_app/webhook_verifier.rb
|
|
437
461
|
- lib/vpago/wing_sdk/base.rb
|
|
438
462
|
- lib/vpago/wing_sdk/checkout.rb
|
|
439
463
|
- lib/vpago/wing_sdk/payment_request_updater.rb
|