focas-client 0.1.6 → 0.1.8
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/lib/focas/config.rb +50 -0
- data/lib/focas/payment.rb +7 -61
- data/lib/focas/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11c68d05214acea7703f3cff2606620e97d69ccccb3eb7388b7aa67a9433362b
|
4
|
+
data.tar.gz: 26268e6e37ddf84838731d261833326b7e302c36f773aca886d18650d070d4a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e0a77e689ada7cdeb6c84d7230bf9707a74f640880c6ebd078b0f509bec1f8fdc9d1837734fea1159c26dd847ce090cb4115c1e8c5d03ab84b7a3f7ded14175
|
7
|
+
data.tar.gz: 739e18dedc19d9730149ccf1448a3db0abec7a5414242e521b4466dcc961caa9b58e28a4c668b61297b825d8ca71cdff3d7ac226449983f2c2974d2418fa378d
|
data/CHANGELOG.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
## 0.1.
|
1
|
+
## 0.1.8 (開發中)
|
data/Gemfile.lock
CHANGED
data/lib/focas/config.rb
CHANGED
@@ -100,5 +100,55 @@ module Focas
|
|
100
100
|
def create_lidm
|
101
101
|
lidm = "#{Time.now.strftime("%Y%m%d%H%M%S")}_#{SecureRandom.hex(2).upcase}"
|
102
102
|
end
|
103
|
+
|
104
|
+
def check_resp_token(data)
|
105
|
+
# 資料錯誤的先 return
|
106
|
+
return false if not data
|
107
|
+
|
108
|
+
ret = data.transform_keys(&:to_sym)
|
109
|
+
return false if not ret[:respToken]
|
110
|
+
|
111
|
+
begin
|
112
|
+
# to hash
|
113
|
+
resp_token = ret[:respToken]
|
114
|
+
|
115
|
+
options = Config.options
|
116
|
+
settings = options.transform_keys(&:to_sym)
|
117
|
+
|
118
|
+
# 檢查 ret[:status] 成功或失敗
|
119
|
+
if ret[:status] == '0'
|
120
|
+
# 成功
|
121
|
+
tmp_arr = %W(
|
122
|
+
#{ret[:status]}
|
123
|
+
#{ret[:lidm]}
|
124
|
+
#{settings[:token]}
|
125
|
+
#{ret[:authCode]}
|
126
|
+
#{ret[:authRespTime]}
|
127
|
+
#{settings[:MerchantID]}
|
128
|
+
#{settings[:TerminalID]}
|
129
|
+
)
|
130
|
+
|
131
|
+
hash_string = tmp_arr.join('&')
|
132
|
+
else
|
133
|
+
# 失敗
|
134
|
+
tmp_arr = %W(
|
135
|
+
#{ret[:status]}
|
136
|
+
#{ret[:errcode]}
|
137
|
+
#{ret[:lidm]}
|
138
|
+
#{settings[:token]}
|
139
|
+
#{ret[:authRespTime]}
|
140
|
+
#{settings[:MerchantID]}
|
141
|
+
#{settings[:TerminalID]}
|
142
|
+
)
|
143
|
+
end
|
144
|
+
|
145
|
+
# 開始驗證 token
|
146
|
+
hash_token = Digest::SHA256.hexdigest(hash_string).upcase
|
147
|
+
return (resp_token.upcase == hash_token)
|
148
|
+
rescue
|
149
|
+
return false
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
103
153
|
end
|
104
154
|
end
|
data/lib/focas/payment.rb
CHANGED
@@ -46,75 +46,23 @@ module Focas
|
|
46
46
|
@response['Status'] == 'SUCCESS'
|
47
47
|
end
|
48
48
|
|
49
|
-
def check_resp_token(data)
|
50
|
-
# 資料錯誤的先 return
|
51
|
-
return false if not data.present?
|
52
|
-
|
53
|
-
ret = data.transform_keys(&:to_sym).to_h
|
54
|
-
return false if not ret[:respToken].present?
|
55
|
-
|
56
|
-
|
57
|
-
begin
|
58
|
-
# to hash
|
59
|
-
resp_token = ret[:respToken]
|
60
|
-
|
61
|
-
options = Config.options
|
62
|
-
settings = options.transform_keys(&:to_sym).to_h
|
63
|
-
|
64
|
-
# 檢查 ret[:status] 成功或失敗
|
65
|
-
if ret[:status] == '0'
|
66
|
-
# 成功
|
67
|
-
tmp_arr = %W(
|
68
|
-
#{ret[:status]}
|
69
|
-
#{ret[:lidm]}
|
70
|
-
#{settings[:token]}
|
71
|
-
#{ret[:authCode]}
|
72
|
-
#{ret[:authRespTime]}
|
73
|
-
#{settings[:merchant_id]}
|
74
|
-
#{settings[:terminal_id]}
|
75
|
-
)
|
76
|
-
|
77
|
-
hash_string = tmp_arr.join('&')
|
78
|
-
else
|
79
|
-
# 失敗
|
80
|
-
tmp_arr = %W(
|
81
|
-
#{ret[:status]}
|
82
|
-
#{ret[:errcode]}
|
83
|
-
#{ret[:lidm]}
|
84
|
-
#{settings[:token]}
|
85
|
-
#{ret[:authRespTime]}
|
86
|
-
#{settings[:merchant_id]}
|
87
|
-
#{settings[:terminal_id]}
|
88
|
-
)
|
89
|
-
end
|
90
|
-
|
91
|
-
# 開始驗證 token
|
92
|
-
hash_token = Digest::SHA256.hexdigest(hash_string).upcase
|
93
|
-
return (resp_token.upcase == hash_token)
|
94
|
-
rescue
|
95
|
-
return false
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
49
|
private
|
100
50
|
|
101
51
|
def set_trade_info
|
102
52
|
options = Config.options
|
103
|
-
@trade_info = options.transform_keys(&:to_sym)
|
104
|
-
# 應移除 token,不該曝光
|
105
|
-
@trade_info.delete(:token)
|
53
|
+
@trade_info = options.transform_keys(&:to_sym)
|
106
54
|
|
107
55
|
local_date = Time.now.strftime('%Y%m%d')
|
108
56
|
local_time = Time.now.strftime('%H%M%S')
|
109
57
|
trade_time = "#{local_date}#{local_time}"
|
110
|
-
|
58
|
+
|
111
59
|
# 訂單編號&交易金額&驗證參數&特店代號&端末代號&交易時間
|
112
60
|
tmp_arr = %W(
|
113
61
|
#{@lidm}
|
114
62
|
#{@purch_amt}
|
115
|
-
#{
|
116
|
-
#{
|
117
|
-
#{
|
63
|
+
#{@trade_info[:token]}
|
64
|
+
#{@trade_info[:MerchantID]}
|
65
|
+
#{@trade_info[:TerminalID]}
|
118
66
|
#{trade_time}
|
119
67
|
)
|
120
68
|
|
@@ -133,10 +81,8 @@ module Focas
|
|
133
81
|
LocalTime: local_time
|
134
82
|
}
|
135
83
|
|
136
|
-
|
137
|
-
|
138
|
-
# 同是 hash 再來 merge
|
139
|
-
@trade_info = (options.to_h.merge!(individual_trade_info)).transform_keys(&:to_sym)
|
84
|
+
# 應移除 token,不該曝光
|
85
|
+
@trade_info.merge!(individual_trade_info).delete(:token)
|
140
86
|
end
|
141
87
|
end
|
142
88
|
end
|
data/lib/focas/version.rb
CHANGED