focas-client 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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