kakaocert 1.0.2 → 2.1.0

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.
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: []