focas-client 0.1.2 → 0.1.3

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: b083e5b0da2910143a54d9374252cbad5a5fa17d3a9c3f617ac77c980ec42b7a
4
- data.tar.gz: a1067fbb7afca792242235e6bfae1b8d8e1884650d931028499b27ce20e68754
3
+ metadata.gz: 74330bb8c48da9e0697d4a6960d2deac6a3c5f1d157b8ac6b12109f1912e08e8
4
+ data.tar.gz: ac10d85a495cd9527c79b728d81b73208af58b79c5ea175584065461599bea0f
5
5
  SHA512:
6
- metadata.gz: d436deb7ebeabd939351d52e678105f89c167a764ceb1fee1090645208232280727b004f6a2e4c5df72b9e7a52280eb3c967e45ab76f3ae0dafead32cb16e0be
7
- data.tar.gz: 319c8d978c1202c7c3bff17b743619c1a50e64980f7f454094938c9e0616f12eb9235c2dd2a866cd2a0c4478c211fbb11f6db3a24282f91ca86257c5862b2619
6
+ metadata.gz: 4d7de62c28c8a71929c5db46a8be26398f00046b920133d3529f637493a70d69a0f757e94d482d4d2d14664c8503b5f7aeda6ed46c80296e519d73035bb8f186
7
+ data.tar.gz: 36056fa2f61e7f3c653834e3d47d0cf3953a92eaf5a7ee087f4194917b6518c0eec3b9684b6ff5bd20918a4f13e71cd47a18073ac5c40e0f249a259588c05cf8
data/CHANGELOG.md CHANGED
@@ -1 +1 @@
1
- ## 0.1.2 (開發中)
1
+ ## 0.1.3 (開發中)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- focas-client (0.1.2)
4
+ focas-client (0.1.3)
5
5
  activesupport (>= 4.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -33,6 +33,7 @@ $ rails generate focas:install
33
33
  - config.mer_id = '' # 通常是統編
34
34
  - config.marchant_id = '' # 商店 ID
35
35
  - config.terminal_id = '' # 付費終端機 ID
36
+ - config.token = '' # 驗證參數(token),須在商店設定好,請銀行人員人工放行
36
37
  - config.customize = 1 # 使用客製頁面1
37
38
  - config.auto_cap = 1 # 自動請款
38
39
  - config.encode_type = 'UTF-8' # 編碼一定要用 UTF-8,避免亂碼
data/lib/focas/config.rb CHANGED
@@ -16,6 +16,7 @@ module Focas
16
16
  mattr_accessor :api_base_url # 依據 production_mode 設定 api 網址
17
17
 
18
18
  OPTIONS = %w[
19
+ token
19
20
  merID
20
21
  MerchantID
21
22
  TerminalID
@@ -45,6 +46,7 @@ module Focas
45
46
  # 標 **[必] 為必填,另外 threeDSAuthInd 是 3DS 驗證,需要時就必填
46
47
  # TradeInfo 參數
47
48
  MAPPING_TABLE = {
49
+ token: 'token', # **[必] 驗證參數,於商店自行設定,然後請銀行人員人工放行
48
50
  merID: 'mer_id', # **[必] 網站特店自訂代碼(請注意 merID 與 MerchantID 不同), number <= 10
49
51
  MerchantID: 'merchant_id', # **[必] 收單銀行授權使用的特店代號(由收單銀行編製提供), number 固定 15
50
52
  TerminalID: 'terminal_id', # **[必] 收單銀行授權使用的機台代號(由收單銀行編製提供), number 固定 8
data/lib/focas/payment.rb CHANGED
@@ -45,11 +45,69 @@ module Focas
45
45
  @response['Status'] == 'SUCCESS'
46
46
  end
47
47
 
48
+ def check_resp_token(data)
49
+ # 資料錯誤的先 return
50
+ return false if not data.present?
51
+
52
+ ret = data.transform_keys(&:to_sym).to_h
53
+ return false if not ret[:respToken].present?
54
+
55
+
56
+ begin
57
+ # to hash
58
+ resp_token = ret[:respToken]
59
+
60
+ options = Config.options
61
+ settings = options.transform_keys(&:to_sym).to_h
62
+
63
+ # 檢查 ret[:status] 成功或失敗
64
+ if ret[:status] == '0'
65
+ # 成功
66
+ tmp_arr = %W(
67
+ #{ret[:status]}
68
+ #{ret[:lidm]}
69
+ #{settings[:token]}
70
+ #{ret[:authCode]}
71
+ #{ret[:authRespTime]}
72
+ #{settings[:merchant_id]}
73
+ #{settings[:terminal_id]}
74
+ )
75
+
76
+ hash_string = tmp_arr.join('&')
77
+ else
78
+ # 失敗
79
+ tmp_arr = %W(
80
+ #{ret[:status]}
81
+ #{ret[:errcode]}
82
+ #{ret[:lidm]}
83
+ #{settings[:token]}
84
+ #{ret[:authRespTime]}
85
+ #{settings[:merchant_id]}
86
+ #{settings[:terminal_id]}
87
+ )
88
+ end
89
+
90
+ # 開始驗證 token
91
+ hash_token = Digest::SHA256.hexdigest(hash_string).upcase
92
+ return (resp_token.upcase == hash_token)
93
+ rescue
94
+ return false
95
+ end
96
+ end
97
+
48
98
  private
49
99
 
50
100
  def set_trade_info
51
101
  options = Config.options
52
102
  @trade_info = options.transform_keys(&:to_sym).to_h
103
+ local_date = Time.now.strftime('%Y%m%d')
104
+ local_time = Time.now.strftime('%H%M%S')
105
+ trade_time = "#{local_date}#{local_time}"
106
+
107
+ # 訂單編號&交易金額&驗證參數&特店代號&端末代號&交易時間
108
+ hash_string = "#{@lidm}#{@purch_amt}#{@trade_info[:token]}#{@trade_info[:merchant_id]}#{@trade_info[:terminal_id]}#{trade_time}"
109
+
110
+ req_token = Digest::SHA256.hexdigest(hash_string).upcase
53
111
 
54
112
  individual_trade_info = {
55
113
  lidm: @lidm, # 商店訂單編號,如:用途_日期時間戳記_流水號
@@ -57,6 +115,9 @@ module Focas
57
115
  CurrencyNote: @currency_note, # 商品資訊
58
116
  # 回傳網址
59
117
  AuthResURL: @auth_res_url,
118
+ reqToken: req_token,
119
+ LocalDate: local_date,
120
+ LocalTime: local_time
60
121
  }
61
122
 
62
123
  individual_trade_info.merge!(options[:trade_info]) if options[:trade_info]
data/lib/focas/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Focas
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -8,6 +8,9 @@ Focas.configure do |config|
8
8
  # (0/1 使用財金資訊 正式站與否,預設為 0 測試站)
9
9
  config.production_mode = 0
10
10
 
11
+ # **[必] 驗證參數(請於商店設定,然後請銀行人員人工放行)
12
+ config.token = ''
13
+
11
14
  # **[必] 網站特店自訂代碼(請注意 merID 與 MerchantID 不同), number <= 10 (通常是統編)
12
15
  config.mer_id = ''
13
16
 
@@ -17,11 +20,12 @@ Focas.configure do |config|
17
20
  # **[必] 收單銀行授權使用的機台代號(由收單銀行編製提供), number 固定 8
18
21
  config.terminal_id = ''
19
22
 
23
+ # **[必] 客製化付款授權網頁辨識碼(0: 預設不客製 / 1-8: 樣式1-8)
24
+ config.customize = 0
25
+
20
26
  # 特店名稱,僅供顯示
21
27
  config.merchant_name = ''
22
28
 
23
- # **[必] 客製化付款授權網頁辨識碼(0: 預設不客製 / 1-8: 樣式1-8)
24
- config.customize = 1
25
29
 
26
30
  # ========
27
31
  # 其他參數
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: focas-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lin (pct)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-02 00:00:00.000000000 Z
11
+ date: 2023-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport