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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f4c2dd2a7ee103cb94df29d1a5533b61c54cbbe8fa647b9adec894fe7f5c1f1
4
- data.tar.gz: 0ded5275be6dc6d829d6e1f419cc6fd8d1cc6760e483d043f4f10c39e2f4e313
3
+ metadata.gz: 11c68d05214acea7703f3cff2606620e97d69ccccb3eb7388b7aa67a9433362b
4
+ data.tar.gz: 26268e6e37ddf84838731d261833326b7e302c36f773aca886d18650d070d4a0
5
5
  SHA512:
6
- metadata.gz: 101f07e62ccb8deaff3d828c3ace67c5c74f0cb999a621f001a0d13023e6675bc1de301a43e2e82ff089ccaf20e14debd34b2d2ca254d054ff68668fb7454b33
7
- data.tar.gz: eebd858ae046191478d553db46e455c4b1bdd98358564c08328cd18d59c93a42569099953f5c85e48f8bb6315de3809b53e1ea0f201071ae65a5422e97851972
6
+ metadata.gz: 3e0a77e689ada7cdeb6c84d7230bf9707a74f640880c6ebd078b0f509bec1f8fdc9d1837734fea1159c26dd847ce090cb4115c1e8c5d03ab84b7a3f7ded14175
7
+ data.tar.gz: 739e18dedc19d9730149ccf1448a3db0abec7a5414242e521b4466dcc961caa9b58e28a4c668b61297b825d8ca71cdff3d7ac226449983f2c2974d2418fa378d
data/CHANGELOG.md CHANGED
@@ -1 +1 @@
1
- ## 0.1.6 (開發中)
1
+ ## 0.1.8 (開發中)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- focas-client (0.1.6)
4
+ focas-client (0.1.8)
5
5
  activesupport (>= 4.0)
6
6
 
7
7
  GEM
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).to_h
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
- #{options[:token]}
116
- #{options[:merchant_id]}
117
- #{options[:terminal_id]}
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
- individual_trade_info.merge!(options[:trade_info]) if options[:trade_info]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Focas
4
- VERSION = '0.1.6'
4
+ VERSION = '0.1.8'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: focas-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lin (pct)