Commit fb9da191adb498f81c265f3a3464ac341cbac95b
1 parent
de4098a8
Exists in
master
feat:增加金润对接钉钉审批接口
Showing
1 changed file
with
20 additions
and
13 deletions
Show diff stats
jinrun/audit/审批接口.md
| ... | ... | @@ -36,9 +36,8 @@ public static String getMD5Lower(String input) { |
| 36 | 36 | 数据加密采用AES算法 |
| 37 | 37 | 加密模式: CBC |
| 38 | 38 | 填充方式:PKCS5Padding |
| 39 | -偏移量:iv(则一提供) | |
| 40 | 39 | 加密内容:data(加密数据) |
| 41 | -密钥:appSecret(则一提供) | |
| 40 | +密钥:aesSecret(则一提供) | |
| 42 | 41 | 输出:base64 |
| 43 | 42 | 字符集:utf-8 |
| 44 | 43 | 注:无敏感数据则无需加密 |
| ... | ... | @@ -46,13 +45,19 @@ public static String getMD5Lower(String input) { |
| 46 | 45 | ### 数据加密示例 |
| 47 | 46 | |
| 48 | 47 | ```java |
| 49 | -public static String aesEncrypt(String source, String secret) { | |
| 48 | +public static String encrypt(String plaintext, String aesSecret) { | |
| 49 | + byte[] keyBytes = Base64.getDecoder().decode(keyBase64); | |
| 50 | + SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "AES"); | |
| 51 | + byte[] iv = new byte[16]; | |
| 52 | + SecureRandom secureRandom = new SecureRandom(); | |
| 53 | + secureRandom.nextBytes(iv); | |
| 54 | + IvParameterSpec ivParam = new IvParameterSpec(iv); | |
| 50 | 55 | Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); |
| 51 | - SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), "AES"); | |
| 52 | - IvParameterSpec ivSpec = new IvParameterSpec(IV_BYTES); | |
| 53 | - byte[] byteContent = source.getBytes("UTF-8"); | |
| 54 | - cipher.init(1, keySpec, ivSpec); | |
| 55 | - byte[] result = cipher.doFinal(byteContent); | |
| 56 | + cipher.init(1, secretKey, ivParam); | |
| 57 | + byte[] ciphertext = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8)); | |
| 58 | + byte[] result = new byte[16 + ciphertext.length]; | |
| 59 | + System.arraycopy(iv, 0, result, 0, 16); | |
| 60 | + System.arraycopy(ciphertext, 0, result, 16, ciphertext.length); | |
| 56 | 61 | return Base64.getEncoder().encodeToString(result); |
| 57 | 62 | } |
| 58 | 63 | ``` |
| ... | ... | @@ -155,12 +160,13 @@ public static String aesEncrypt(String source, String secret) { |
| 155 | 160 | |
| 156 | 161 | #### 请求示例Java-SDK方式 |
| 157 | 162 | |
| 158 | -##### [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 163 | +##### [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-2.0.0.jar) | |
| 159 | 164 | |
| 160 | 165 | ```java |
| 161 | 166 | public static void main(String[] args) { |
| 162 | 167 | String appKey = "bd95591ce63f4a78a54658c2d8ad5ff6"; |
| 163 | 168 | String appSecret = "734a18117f614e60859efb8eea27c680"; |
| 169 | + String aesSecret = "wJ3472SLpkZLnjtwMArhRg=="; | |
| 164 | 170 | ZYClient ZYClient = new ZYClient(appKey, appSecret); |
| 165 | 171 | String data = "{\n" + |
| 166 | 172 | " \"code\": \"JR202510200000003\",\n" + |
| ... | ... | @@ -190,7 +196,7 @@ public static void main(String[] args) { |
| 190 | 196 | " }\n" + |
| 191 | 197 | " ]\n" + |
| 192 | 198 | "}"; |
| 193 | - HttpResponseData httpResponseData = ZYClient.doPost(Constants.TEST_HOST + "/tms-service-api/audit/send", AesUtils.aesEncrypt(data, appSecret)); | |
| 199 | + HttpResponseData httpResponseData = ZYClient.doPost(Constants.TEST_HOST + "/tms-service-api/audit/send", AesUtils.aesEncrypt(data, aesSecret)); | |
| 194 | 200 | } |
| 195 | 201 | ``` |
| 196 | 202 | |
| ... | ... | @@ -276,12 +282,13 @@ public static void main(String[] args) { |
| 276 | 282 | |
| 277 | 283 | #### 请求示例Java-SDK方式 |
| 278 | 284 | |
| 279 | -##### [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 285 | +##### [下载SDK](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-2.0.0.jar) | |
| 280 | 286 | |
| 281 | 287 | ```java |
| 282 | 288 | public static void main(String[] args) { |
| 283 | 289 | String appKey = "bd95591ce63f4a78a54658c2d8ad5ff6"; |
| 284 | 290 | String appSecret = "734a18117f614e60859efb8eea27c680"; |
| 291 | + String aesSecret = "wJ3472SLpkZLnjtwMArhRg=="; | |
| 285 | 292 | ZYClient ZYClient = new ZYClient(appKey, appSecret); |
| 286 | 293 | String data = "{\n" + |
| 287 | 294 | " \"code\": \"JR202510200000002\",\n" + |
| ... | ... | @@ -290,7 +297,7 @@ public static void main(String[] args) { |
| 290 | 297 | " \"remark\": \"付款金额错误, 撤销重新提交\",\n" + |
| 291 | 298 | " \"username\": \"001073\"\n" + |
| 292 | 299 | "}"; |
| 293 | - HttpResponseData httpResponseData = ZYClient.doPost(Constants.TEST_HOST + "/tms-service-api/audit/cancel", AesUtils.aesEncrypt(data, appSecret)); | |
| 300 | + HttpResponseData httpResponseData = ZYClient.doPost(Constants.TEST_HOST + "/tms-service-api/audit/cancel", AesUtils.aesEncrypt(data, aesSecret)); | |
| 294 | 301 | } |
| 295 | 302 | ``` |
| 296 | 303 | |
| ... | ... | @@ -378,7 +385,7 @@ public static void main(String[] args) { |
| 378 | 385 | |
| 379 | 386 | ### 则一Java-sdk |
| 380 | 387 | |
| 381 | -##### [下载Java-sdk](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-1.0.0.jar) | |
| 388 | +##### [下载Java-sdk](https://zeyi-tms-product.oss-cn-hangzhou.aliyuncs.com/file/jar/java-sdk/zy-java-sdk-2.0.0.jar) | |
| 382 | 389 | |
| 383 | 390 | ## 更新日志 |
| 384 | 391 | ... | ... |