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 +4 -4
- data/CHANGELOG.md +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/lib/focas/config.rb +2 -0
- data/lib/focas/payment.rb +61 -0
- data/lib/focas/version.rb +1 -1
- data/lib/generators/focas/templates/initializer.rb +6 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74330bb8c48da9e0697d4a6960d2deac6a3c5f1d157b8ac6b12109f1912e08e8
|
4
|
+
data.tar.gz: ac10d85a495cd9527c79b728d81b73208af58b79c5ea175584065461599bea0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d7de62c28c8a71929c5db46a8be26398f00046b920133d3529f637493a70d69a0f757e94d482d4d2d14664c8503b5f7aeda6ed46c80296e519d73035bb8f186
|
7
|
+
data.tar.gz: 36056fa2f61e7f3c653834e3d47d0cf3953a92eaf5a7ee087f4194917b6518c0eec3b9684b6ff5bd20918a4f13e71cd47a18073ac5c40e0f249a259588c05cf8
|
data/CHANGELOG.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
## 0.1.
|
1
|
+
## 0.1.3 (開發中)
|
data/Gemfile.lock
CHANGED
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
@@ -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.
|
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-
|
11
|
+
date: 2023-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|