spree_vpago 2.0.8.pre.beta → 2.0.8.pre.beta2

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: a199976c2692ad4d201ea9890163e430f6ac62eaa65104585718ca081c303fa4
4
- data.tar.gz: 076e9460e262219196e66ee01e280274d8920bba2d484989e5caf5eee86a9eeb
3
+ metadata.gz: d006f101539dd059e92dd575c6a40c036a753638e0f095c4680fb8fec2e3fc27
4
+ data.tar.gz: 5b7137318a4d5be9fea18f55951414bfc973d39cef0d67b8459aacefcee78c01
5
5
  SHA512:
6
- metadata.gz: 67e72026f867e78955f05fe93aed5dfa86d1ef51a919d8af699c372db0067f6a40ad11cbe39d96f6354f33f49117084ecf17f09fc5a23b3f7dfa116635eff961
7
- data.tar.gz: 877c24547ea819b7b10fe4c2410b30f6776e859b72b382e11c712854247b02cfa44bbcb39f7c1807d8bd6e2cbda344549e1c151ed7f18a43b95a34bdc92be1a1
6
+ metadata.gz: 40a1984b36bf03669c53488af115deac0ca3b694fe5c039864b0589abf94be54bdd47154d19b47e5a834af13e2ec581dd55e90d54f6021e6543d6c1e0980c3bd
7
+ data.tar.gz: d0fa00d9485ac9493cbe82d49e1c7a4f5f671f000ea7dd385e17b08dc7304cacb061ff9c3bc3d106bc5bbb76883e2afd8ab7029f702fb1da64ab6fee97251ce4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spree_vpago (2.0.8.pre.beta)
4
+ spree_vpago (2.0.8.pre.beta2)
5
5
  faraday
6
6
  google-cloud-firestore
7
7
  spree_api (>= 4.5)
@@ -33,6 +33,12 @@ module Spree
33
33
 
34
34
  @order = @payment.order
35
35
  raise CanCan::AccessDenied unless @order.completed?
36
+
37
+ if params[:offsite_payment].present?
38
+ redirect_to @payment.payment_url, allow_other_host: true
39
+ else
40
+ render :success
41
+ end
36
42
  end
37
43
 
38
44
  # POST
@@ -10,6 +10,7 @@ module Spree
10
10
  preference :private_key, :text
11
11
  preference :merchant_scheme, :string
12
12
  preference :merchant_android_package_name, :string
13
+ preference :redirection_type, :string
13
14
 
14
15
  def method_type
15
16
  'true_money'
@@ -9,6 +9,7 @@ module Vpago
9
9
  :success_url,
10
10
  :process_payment_url,
11
11
  :processing_app_url,
12
+ :payment_url,
12
13
  to: :url_constructor
13
14
  end
14
15
 
@@ -60,7 +61,6 @@ module Vpago
60
61
  def vattanac_mini_app_payment?
61
62
  payment_method.type_vattanac_mini_app?
62
63
  end
63
-
64
64
  end
65
65
  end
66
66
 
@@ -17,7 +17,19 @@ module Vpago
17
17
  def processing_app_url = "#{@payment.payment_method.preferred_merchant_scheme}/vpago_payments/processing?#{query}"
18
18
 
19
19
  def query
20
- { payment_number: payment.number, order_number: order.number, order_jwt_token: order_jwt_token }.to_query
20
+ params = {
21
+ payment_number: payment.number,
22
+ order_number: order.number,
23
+ order_jwt_token: order_jwt_token
24
+ }
25
+
26
+ params[:offsite_payment] = true if payment.payment_method.type_true_money?
27
+
28
+ params.to_query
29
+ end
30
+
31
+ def payment_url
32
+ "#{base_url}/book/payment?number=#{@payment.order.number}&tk=#{@payment.order.token}"
21
33
  end
22
34
 
23
35
  private
@@ -1,10 +1,10 @@
1
1
  <% @checkout = ::Vpago::TrueMoney::Checkout.new(@payment) %>
2
- <% webview_url = @checkout.generate_payment_urls[:deeplink] rescue nil %>
2
+ <% webview_url = @checkout.generate_payment_urls[:webview] rescue nil %>
3
3
 
4
4
  <% if webview_url.present? %>
5
5
  <script>
6
6
  document.addEventListener("DOMContentLoaded", function () {
7
- window.location.href = "<%= j webview_url %>";
7
+ window.top.location.href = "<%= j webview_url %>";
8
8
  });
9
9
  </script>
10
10
  <% else %>
@@ -1,7 +1,7 @@
1
1
  module SpreeVpago
2
2
  module_function
3
3
 
4
- VERSION = '2.0.8-beta'.freeze
4
+ VERSION = '2.0.8-beta2'.freeze
5
5
 
6
6
  def version
7
7
  Gem::Version.new VERSION
@@ -69,6 +69,10 @@ module Vpago
69
69
  }
70
70
  end
71
71
 
72
+ def redirection_type
73
+ payment_method.preferred_redirection_type
74
+ end
75
+
72
76
  def check_transaction_url
73
77
  "#{payment_method.preferred_check_transaction_url}/#{external_ref_id}"
74
78
  end
@@ -126,6 +130,10 @@ module Vpago
126
130
  def signature_input
127
131
  "#{timestamp}#{payload.to_json}"
128
132
  end
133
+
134
+ def processing_url
135
+ "#{@payment.processing_url}&offsite_payment=true"
136
+ end
129
137
  end
130
138
  end
131
139
  end
@@ -2,19 +2,26 @@ module Vpago
2
2
  module TrueMoney
3
3
  class Checkout < Base
4
4
  def generate_payment_urls
5
+ request_body = {
6
+ payment_info: payload.to_json,
7
+ redirectionType: redirection_type
8
+ }
9
+
10
+ if redirection_type == 'mobileapp'
11
+ request_body[:merchantDeepLink] = @payment.processing_app_url
12
+ request_body[:merchantAndroidPackageName] = merchant_android_package_name
13
+ else
14
+ request_body[:refererLink] = @payment.processing_url
15
+ end
16
+
5
17
  response = Faraday.post(generate_payment_url) do |req|
6
18
  req.headers = default_headers
7
- req.body = {
8
- payment_info: payload.to_json,
9
- redirectionType: 'mobileapp',
10
- merchantDeepLink: @payment.processing_app_url,
11
- merchantAndroidPackageName: merchant_android_package_name
12
- }.to_json
19
+ req.body = request_body.to_json
13
20
  end
14
21
 
15
22
  body = parse_json(response.body)
16
23
 
17
- raise "Generate Payment Error: #{response.status} - #{body['message'] || response.body}" unless response.success? && body['status']['code'] == '000001'
24
+ raise "Generate Payment Error: #{response.status} - #{body['message'] || response.body}" unless response.success? && body.dig('status', 'code') == '000001'
18
25
 
19
26
  {
20
27
  webview: body['data']['webview'],
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.0.8.pre.beta
4
+ version: 2.0.8.pre.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-15 00:00:00.000000000 Z
11
+ date: 2025-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday