spree_vpago 2.0.5.pre.beta → 2.0.6

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: 693e45fc6915c023a690b5aa8c3e44cf18e21bcb5c6cc7fd8d520ee964db418a
4
- data.tar.gz: 602e1ac04e520e6b11452125ae7a88801a8545845df3d5417cb46008ec04bf0a
3
+ metadata.gz: 15ef60f028340ceaa61336833ec624092ed9f32447fd7adbde31345b0eadd725
4
+ data.tar.gz: fbf8efefd803b39458c5e6f10b216098f4c22a65a84e3af61ebe580c592e4b69
5
5
  SHA512:
6
- metadata.gz: ae4e9828ecb2d4cdc9d7abb038b5304ea5f7871a33fba13af4907e87b5351f9c15630137d7c4ae76796a2d469b55003806098f9fb5e8a4a37d83ade2d3e118d9
7
- data.tar.gz: ff5ea0f427d105324e5d9726c0b7dc44ac84acac1ca8659aeb7f119c60244f577cd0a33e57b1057c0d48ca2f59344894eee7612c71f88b10fc4aa496e34632c7
6
+ metadata.gz: '089f3456f9992f1337974039c22e2d1484df07bf6c75053ebf53cb61927d53f6e16b6a086dcefababbc14d7b2ee2d4ec0ff61f08d0535cc2a6169dd80c0db53b'
7
+ data.tar.gz: d243bf13344af8e1a0c2c01ee05732c56c34761dccd25ef05cb428b0f3d6c12cf834646cb3942c6edac10fbe44318b71eb77d062578ce1b383e628f0204d968d
data/.env.example CHANGED
@@ -1,3 +1,11 @@
1
1
  #pre-auth
2
2
  PAYWAY_V2_PRE_AUTH_COMPLETE_PATH=""
3
3
  PAYWAY_V2_PRE_AUTH_CANCEL_PATH=""
4
+
5
+ #vattanac-mini-app
6
+ VATTANAC_PUBLIC_KEY=""
7
+ VATTANAC_AES_SECRET_KEY=""
8
+ BOOKMEPLUS_PRIVATE_KEY=""
9
+
10
+ VATTANAC_PARTNER_CODE=""
11
+ VATTANAC_REFUND_URL=""
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spree_vpago (2.0.5.pre.beta)
4
+ spree_vpago (2.0.6)
5
5
  faraday
6
6
  google-cloud-firestore
7
7
  spree_api (>= 4.5)
@@ -188,7 +188,7 @@ GEM
188
188
  faraday-http-cache (2.5.0)
189
189
  faraday (>= 0.8)
190
190
  faraday-net_http (3.0.2)
191
- faraday-retry (2.3.1)
191
+ faraday-retry (2.3.2)
192
192
  faraday (~> 2.0)
193
193
  ffaker (2.21.0)
194
194
  ffi (1.15.5)
@@ -259,7 +259,7 @@ GEM
259
259
  multi_json (~> 1.11)
260
260
  os (>= 0.9, < 2.0)
261
261
  signet (>= 0.16, < 2.a)
262
- grpc (1.72.0)
262
+ grpc (1.73.0)
263
263
  google-protobuf (>= 3.25, < 5.0)
264
264
  googleapis-common-protos-types (~> 1.0)
265
265
  hashdiff (1.1.0)
@@ -1,5 +1,7 @@
1
1
  module Spree
2
2
  class Gateway::VattanacMiniApp < PaymentMethod
3
+ preference :partner_code, :string
4
+ preference :refund_url, :string
3
5
 
4
6
  def method_type
5
7
  'vattanac_mini_app'
@@ -14,27 +16,23 @@ module Spree
14
16
  true
15
17
  end
16
18
 
17
-
18
19
  # override
19
20
  # purchase is used when pre auth disabled
20
21
  def purchase(_amount, _source, gateway_options = {})
21
22
  _, payment_number = gateway_options[:order_id].split('-')
22
23
  payment = Spree::Payment.find_by(number: payment_number)
23
-
24
+
24
25
  params = {}
25
26
 
26
27
  params[:payment_response] = payment.transaction_response
27
-
28
28
 
29
- if payment.transaction_response["status"] == 'SUCCESS'
29
+ if payment.transaction_response['status'] == 'SUCCESS'
30
30
  ActiveMerchant::Billing::Response.new(true, 'Payway Gateway: Purchased', params)
31
31
  else
32
32
  ActiveMerchant::Billing::Response.new(false, 'Payway Gateway: Purchasing Failed', params)
33
33
  end
34
-
35
34
  end
36
35
 
37
-
38
36
  # override
39
37
  def void(_response_code, gateway_options)
40
38
  _, payment_number = gateway_options[:order_id].split('-')
@@ -42,7 +40,7 @@ module Spree
42
40
 
43
41
  if payment.vattanac_mini_app_payment?
44
42
  params = {}
45
- success, params[:refund_response] = vattanac_mini_app_refund(payment)
43
+ success, params[:refund_response] = vattanac_mini_app_refund(payment)
46
44
 
47
45
  if success
48
46
  ActiveMerchant::Billing::Response.new(true, 'Payway Gateway: successfully canceled.', params)
@@ -54,14 +52,11 @@ module Spree
54
52
  end
55
53
  end
56
54
 
57
-
58
55
  def vattanac_mini_app_refund(payment)
59
-
60
56
  refund_issuer = Vpago::VattanacMiniApp::RefundIssuer.new(payment, {})
61
57
  refund_issuer.call
62
58
 
63
59
  [refund_issuer.success?, refund_issuer.response]
64
-
65
60
  end
66
61
 
67
62
  def cancel(_response_code)
@@ -8,13 +8,7 @@
8
8
  display: none;">
9
9
  </p>
10
10
 
11
- <h1 id="status">THIS IS CURRENT STATE</h1>
12
- <p id="reason_code"></p>
13
- <p id="processing"></p>
14
- <p id="reason_message"></p>
15
-
16
11
  <script>
17
-
18
12
  function detectMobileOS() {
19
13
  const ua = navigator.userAgent || navigator.vendor || window.opera;
20
14
  if (/iPad|iPhone|iPod/.test(ua) && !window.MSStream) return 'iOS';
@@ -44,43 +38,53 @@
44
38
  window.listenToProcessingState({
45
39
  firebaseConfigs: firebaseConfigs,
46
40
  documentReferencePath: "<%= @payment.user_informer.document_reference_path %>",
41
+
47
42
  onPaymentIsProcessing: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
48
- document.getElementById("status").innerText = "Payment is processing";
49
- document.getElementById("reason_code").innerText = reasonCode;
50
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
51
- document.getElementById("reason_message").innerText = reasonMessage;
43
+ console.log("Status: Payment is processing");
44
+ console.log("Reason Code:", reasonCode);
45
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
46
+ console.log("Reason Message:", reasonMessage);
52
47
  },
48
+
53
49
  onOrderIsProcessing: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
54
- document.getElementById("status").innerText = "Order is processing";
55
- document.getElementById("reason_code").innerText = reasonCode;
56
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
57
- document.getElementById("reason_message").innerText = reasonMessage;
50
+ console.log("Status: Order is processing");
51
+ console.log("Reason Code:", reasonCode);
52
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
53
+ console.log("Reason Message:", reasonMessage);
58
54
  },
55
+
59
56
  onOrderIsCompleted: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
60
- document.getElementById("status").innerText = "Order is completed";
61
- document.getElementById("reason_code").innerText = reasonCode;
62
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
63
- document.getElementById("reason_message").innerText = reasonMessage;
57
+ console.log("Status: Order is completed");
58
+ console.log("Reason Code:", reasonCode);
59
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
60
+ console.log("Reason Message:", reasonMessage);
64
61
  },
62
+
65
63
  onOrderProcessFailed: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
66
- document.getElementById("status").innerText = "Order process failed";
67
- document.getElementById("reason_code").innerText = reasonCode;
68
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
69
- document.getElementById("reason_message").innerText = reasonMessage;
64
+ console.log("Status: Order process failed");
65
+ console.log("Reason Code:", reasonCode);
66
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
67
+ console.log("Reason Message:", reasonMessage);
70
68
  },
69
+
71
70
  onPaymentIsRefunded: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
72
- document.getElementById("status").innerText = "Payment is refunded";
73
- document.getElementById("reason_code").innerText = reasonCode;
74
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
75
- document.getElementById("reason_message").innerText = reasonMessage
71
+ console.log("Status: Payment is refunded");
72
+ console.log("Reason Code:", reasonCode);
73
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
74
+ console.log("Reason Message:", reasonMessage);
76
75
  },
76
+
77
77
  onPaymentProcessFailed: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
78
- document.getElementById("status").innerText = "Payment process failed";
79
- document.getElementById("reason_code").innerText = reasonCode;
80
- document.getElementById("processing").innerText = processing ? "Processing..." : "No more process.";
81
- document.getElementById("reason_message").innerText = reasonMessage;
78
+ console.log("Status: Payment process failed");
79
+ console.log("Reason Code:", reasonCode);
80
+ console.log("Processing:", processing ? "Processing..." : "No more process.");
81
+ console.log("Reason Message:", reasonMessage);
82
82
  },
83
+
83
84
  onCompleted: function (orderState, paymentState, processing, reasonCode, reasonMessage) {
85
+ console.log("Status: Completed — redirecting to success URL");
86
+ console.log("Reason Code:", reasonCode);
87
+ console.log("Reason Message:", reasonMessage);
84
88
  let successPath = "<%= @payment.success_url %>";
85
89
  window.location.href = successPath;
86
90
  },
@@ -0,0 +1,12 @@
1
+ ## Vattanac Mini App Payment Configuration
2
+
3
+ To configure Vattanac Mini App payment, set the following preferences on the payment method:
4
+
5
+ 1. Add the **Partner Code** (`preferred_partner_code`) – this value is sent in the HTTP request header as `Partner-Code`.
6
+ 2. Add the **Refund URL** (`preferred_refund_url`) – this URL is used to trigger refund API requests.
7
+
8
+ ### Example:
9
+
10
+
11
+ - Partner Code: `your-partner-code`
12
+ - Refund URL: `https://your-api.com/refund`
@@ -1,7 +1,7 @@
1
1
  module SpreeVpago
2
2
  module_function
3
3
 
4
- VERSION = '2.0.5-beta'.freeze
4
+ VERSION = '2.0.6'.freeze
5
5
 
6
6
  def version
7
7
  Gem::Version.new VERSION
@@ -1,7 +1,6 @@
1
1
  module Vpago
2
2
  module VattanacMiniApp
3
3
  class Base
4
-
5
4
  def initialize(payment, options = {})
6
5
  @options = options
7
6
  @payment = payment
@@ -41,11 +40,11 @@ module Vpago
41
40
  end
42
41
 
43
42
  def partner_code
44
- ENV['VATTANAC_PARTNER_CODE'].presence
43
+ @payment.payment_method.preferred_partner_code
45
44
  end
46
45
 
47
46
  def refund_url
48
- ENV['VATTANAC_REFUND_URL'].presence
47
+ @payment.payment_method.preferred_refund_url
49
48
  end
50
49
  end
51
50
  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.0.5.pre.beta
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-11 00:00:00.000000000 Z
11
+ date: 2025-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -339,6 +339,7 @@ files:
339
339
  - db/migrate/20241202104014_add_enable_pre_auth_to_spree_payment_method.rb
340
340
  - db/migrate/20250121044614_add_transaction_response_to_spree_payments.rb
341
341
  - docs/acleda.md
342
+ - docs/vattanac_mini_app.md
342
343
  - gemfiles/spree_3_7.gemfile
343
344
  - gemfiles/spree_4_0.gemfile
344
345
  - gemfiles/spree_4_1.gemfile
@@ -407,9 +408,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
407
408
  version: 3.2.0
408
409
  required_rubygems_version: !ruby/object:Gem::Requirement
409
410
  requirements:
410
- - - ">"
411
+ - - ">="
411
412
  - !ruby/object:Gem::Version
412
- version: 1.3.1
413
+ version: '0'
413
414
  requirements:
414
415
  - none
415
416
  rubygems_version: 3.4.1