kakaocert 1.0.2 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kakaocert.rb +80 -17
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5301fc96b1edd037217325a3145ef8d9dfdc3750
4
- data.tar.gz: 3fdd2d526a1c171dc82056e8c240042f9bdd984c
3
+ metadata.gz: 1ca22f1db95a15d429232d5e7bac2d15ed98471a
4
+ data.tar.gz: bee2396c32b3a455a9a4e4ee31ac48b7a12ea643
5
5
  SHA512:
6
- metadata.gz: 61394d4fb68c3630c75281ebb9a00fedc6d175970b2261975c04e897ec4f7830ecda45caa701e38e92a5c5519ad874142fca43d23bce03ed810de8a2936b9a21
7
- data.tar.gz: 5ec2e9d63eea7b95b2c936434665c9f694483dcef39687b2eb71a2da28d0cb6747aa9829c5434870233ba35e9bead799cece718f3cc1cf87d313ab529fdbbead
6
+ metadata.gz: da16022794cec3f4421dd72a9bffe14e9b8814d1687edd3c345aecd4499789655298e53f13e2df2470e679641aac114f3005ecc7b40554666851de76ede5c64d
7
+ data.tar.gz: 62174273527f7b3663a0d6412d9ad7cd20714a2f9700fd1dc430d4dec011dada23a9b0a3530a7576ebe2b56fb1a60def0b1dd55ae2efbcc035bde02a435125a6
data/lib/kakaocert.rb CHANGED
@@ -13,11 +13,13 @@ require 'linkhub'
13
13
  class KakaocertService
14
14
 
15
15
  ServiceID_REAL = "KAKAOCERT"
16
- ServiceURL_REAL = "https://kakaocert-api.linkhub.co.kr"
17
- KAKAOCERT_APIVersion = "1.0"
16
+ KAKAOCERT_APIVersion = "2.0"
17
+ ServiceURL = "https://kakaocert-api.linkhub.co.kr"
18
+ ServiceURL_Static = "https://static-kakaocert-api.linkhub.co.kr"
19
+ ServiceURL_GA = "https://ga-kakaocert-api.linkhub.co.kr"
18
20
  BOUNDARY = "==KAKAOCERT_RUBY_SDK=="
19
21
 
20
- attr_accessor :token_table, :scopes, :linkhub, :ipRestrictOnOff
22
+ attr_accessor :token_table, :scopes, :linkhub, :ipRestrictOnOff, :useStaticIP, :useGAIP
21
23
 
22
24
  # Generate Linkhub Class Singleton Instance
23
25
  class << self
@@ -27,6 +29,8 @@ class KakaocertService
27
29
  @instance.linkhub = Linkhub.instance(linkID, secretKey)
28
30
  @instance.scopes = ["member","310","320","330"]
29
31
  @instance.ipRestrictOnOff = true
32
+ @instance.useStaticIP = false
33
+ @instance.useGAIP = false
30
34
 
31
35
  return @instance
32
36
  end
@@ -44,6 +48,23 @@ class KakaocertService
44
48
  @ipRestrictOnOff = value
45
49
  end
46
50
 
51
+ def setUseStaticIP(value)
52
+ @useStaticIP = value
53
+ end
54
+
55
+ def setUseGAIP(value)
56
+ @useGAIP = value
57
+ end
58
+
59
+ def getServiceURL()
60
+ if @useGAIP
61
+ return ServiceURL_GA
62
+ elsif @useStaticIP
63
+ return ServiceURL_Static
64
+ else
65
+ return ServiceURL
66
+ end
67
+ end
47
68
 
48
69
  # Get Session Token by checking token-cached hash or token Request
49
70
  def getSession_Token(corpNum)
@@ -60,14 +81,14 @@ class KakaocertService
60
81
  else
61
82
  # Token's expireTime must use parse() because time format is hh:mm:ss.SSSZ
62
83
  expireTime = DateTime.parse(targetToken['expiration'])
63
- serverUTCTime = DateTime.strptime(@linkhub.getTime())
84
+ serverUTCTime = DateTime.strptime(@linkhub.getTime(@useStaticIP, @useGAIP))
64
85
  refresh = expireTime < serverUTCTime
65
86
  end
66
87
 
67
88
  if refresh
68
89
  begin
69
90
  # getSessionToken from Linkhub
70
- targetToken = @linkhub.getSessionToken(ServiceID_REAL, corpNum, @scopes, @ipRestrictOnOff ? "" : "*")
91
+ targetToken = @linkhub.getSessionToken(ServiceID_REAL, corpNum, @scopes, @ipRestrictOnOff ? "" : "*", @useStaticIP, @useGAIP)
71
92
 
72
93
  rescue LinkhubException => le
73
94
  raise KakaocertException.new(le.code, le.message)
@@ -102,7 +123,7 @@ class KakaocertService
102
123
  headers["x-pb-userid"] = userID
103
124
  end
104
125
 
105
- uri = URI(ServiceURL_REAL + url)
126
+ uri = URI(getServiceURL() + url)
106
127
  request = Net::HTTP.new(uri.host, 443)
107
128
  request.use_ssl = true
108
129
 
@@ -132,10 +153,10 @@ class KakaocertService
132
153
  "Accept-Encoding" => "gzip,deflate",
133
154
  }
134
155
 
135
- apiServerTime = @linkhub.getTime()
156
+ apiServerTime = @linkhub.getTime(@useStaticIP, @useGAIP)
136
157
 
137
158
  hmacTarget = "POST\n"
138
- hmacTarget += Base64.strict_encode64(Digest::MD5.digest(postData)) + "\n"
159
+ hmacTarget += Base64.strict_encode64(Digest::SHA256.digest(postData)) + "\n"
139
160
  hmacTarget += apiServerTime + "\n"
140
161
 
141
162
  hmacTarget += KAKAOCERT_APIVersion + "\n"
@@ -143,7 +164,7 @@ class KakaocertService
143
164
  key = Base64.decode64(@linkhub._secretKey)
144
165
 
145
166
  data = hmacTarget
146
- digest = OpenSSL::Digest.new("sha1")
167
+ digest = OpenSSL::Digest.new("sha256")
147
168
  hmac = Base64.strict_encode64(OpenSSL::HMAC.digest(digest, key, data))
148
169
 
149
170
  headers["x-kc-auth"] = @linkhub._linkID+' '+hmac
@@ -158,7 +179,7 @@ class KakaocertService
158
179
  headers["Authorization"] = "Bearer " + getSession_Token(corpNum)
159
180
 
160
181
 
161
- uri = URI(ServiceURL_REAL + url)
182
+ uri = URI(getServiceURL() + url)
162
183
 
163
184
  https = Net::HTTP.new(uri.host, 443)
164
185
  https.use_ssl = true
@@ -191,7 +212,7 @@ class KakaocertService
191
212
  if clientCode.to_s == ''
192
213
  raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
193
214
  end
194
- httppost("/SignToken/Request", clientCode, esignRequestInfo.to_json, "", "")["receiptId"]
215
+ httppost("/SignToken/Request", clientCode, esignRequestInfo.to_json, "", "")
195
216
  end
196
217
 
197
218
  def requestVerifyAuth(clientCode, verifyAuthRequestInfo)
@@ -201,7 +222,18 @@ class KakaocertService
201
222
  httppost("/SignIdentity/Request", clientCode, verifyAuthRequestInfo.to_json, "", "")["receiptId"]
202
223
  end
203
224
 
204
- def getCMSResult(clientCode, receiptID)
225
+ def getCMSState(clientCode, receiptID)
226
+ if clientCode.to_s == ''
227
+ raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
228
+ end
229
+ if receiptID.to_s == ''
230
+ raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
231
+ end
232
+
233
+ httpget("/SignDirectDebit/Status/#{receiptID}", clientCode, "")
234
+ end
235
+
236
+ def getVerifyAuthState(clientCode, receiptID)
205
237
  if clientCode.to_s == ''
206
238
  raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
207
239
  end
@@ -209,10 +241,10 @@ class KakaocertService
209
241
  raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
210
242
  end
211
243
 
212
- httpget("/SignDirectDebit/#{receiptID}", clientCode, "")
244
+ httpget("/SignIdentity/Status/#{receiptID}", clientCode, "")
213
245
  end
214
246
 
215
- def getVerifyAuthResult(clientCode, receiptID)
247
+ def getESignState(clientCode, receiptID)
216
248
  if clientCode.to_s == ''
217
249
  raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
218
250
  end
@@ -220,10 +252,12 @@ class KakaocertService
220
252
  raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
221
253
  end
222
254
 
223
- httpget("/SignIdentity/#{receiptID}", clientCode, "")
255
+ uri = "/SignToken/Status/#{receiptID}"
256
+
257
+ httpget(uri, clientCode, "")
224
258
  end
225
259
 
226
- def getESignResult(clientCode, receiptID)
260
+ def verifyCMS(clientCode, receiptID)
227
261
  if clientCode.to_s == ''
228
262
  raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
229
263
  end
@@ -231,9 +265,38 @@ class KakaocertService
231
265
  raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
232
266
  end
233
267
 
234
- httpget("/SignToken/#{receiptID}", clientCode, "")
268
+ httpget("/SignDirectDebit/Verify/#{receiptID}", clientCode, "")
235
269
  end
236
270
 
271
+ def verifyAuth(clientCode, receiptID)
272
+ if clientCode.to_s == ''
273
+ raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
274
+ end
275
+ if receiptID.to_s == ''
276
+ raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
277
+ end
278
+
279
+ httpget("/SignIdentity/Verify/#{receiptID}", clientCode, "")
280
+ end
281
+
282
+ def verifyESign(clientCode, receiptID, signature = '')
283
+ if clientCode.to_s == ''
284
+ raise KakaocertException.new('-99999999', '이용기관코드가 입력되지 않았습니다.')
285
+ end
286
+ if receiptID.to_s == ''
287
+ raise KakaocertException.new('-99999999', '접수아이디가 입력되지 않았습니다.')
288
+ end
289
+
290
+ uri = "/SignToken/Verify/#{receiptID}"
291
+
292
+ if signature.to_s != ''
293
+ uri += "/"+signature
294
+ end
295
+
296
+ httpget(uri, clientCode, "")
297
+ end
298
+
299
+
237
300
 
238
301
  end
239
302
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kakaocert
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Linkhub Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-23 00:00:00.000000000 Z
11
+ date: 2021-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: linkhub
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.0
19
+ version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.0
26
+ version: 1.4.0
27
27
  description: Kakaocert API SDK
28
28
  email: code@linkhub.co.kr
29
29
  executables: []