focas-client 0.1.6 → 0.1.8

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: 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)