package com.kede.wechat.service.impl; import com.kede.common.utils.RSAEncrypt; import com.kede.wechat.service.ConversationContentService; import com.tencent.wework.Finance; import org.json.JSONArray; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service("ConversationContentService") public class ConversationContentServiceImpl implements ConversationContentService { @Value(value = "${conversationContent.corpid}") private String corpid; @Value(value = "${conversationContent.secret}") private String secret; static String priKey ="-----BEGIN PRIVATE KEY-----\n" + "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCnh5N/kiyeNx/y\n" + "dDKe3FO8HWj8tuQQUCkCc8ol1Sqmcs9ey7S2189UDbZOPeY2xiiMD6AdFVUK5Y0P\n" + "gbX/XZFVizhwXseE+1IV1k0w3C++5Y4Zll7nZoJ05ANMbj+dlamAlNYOutmc0lZf\n" + "CGXM5oeu+U0XDWE1+uY7TRAGV3OcA7GBraXiothncbkNf0ZwfBEGVyLNHcNODgwz\n" + "ECc0KJuEF2V+UAt11HloT60atSmdiktwbJ6KOJ62TM/eU+F/5d3UJLdw0Xb8kEFn\n" + "PYK/1mD8PGKFA6F0wSajNLc6iPg5mgiOS5j02N2+nEN8m7vIdL7Hd0yrigf5kEdl\n" + "x9PC7OYpAgMBAAECggEAIUhSCVok+xnAgw6Kr/zdtdWx8eLz1DnYq+ANHQ8IdiEB\n" + "Cbg2osylJ/HBcjHh9qfPjmPcT2rZhlysdZQzcBRKt0/9WnW59bVoTWZR148m/Snl\n" + "3Td+i0JWUJqr/Rc6FDiTgDQRgsOkT/+JoT+t2dNCyYRFyHqkAXFjJAzfTiM5mJjg\n" + "h8q7bU/LXoc49kuaNYmt5rV1nACoIh7MmKZpmR4OKXDWrl52Xt5qCEonp3bAH/S3\n" + "HaTqsoqot7fF5aZWEuDWUeYQPzgVSsdw2k9Lq1c8aoE15IRfQCxtBOYpk8LEDJty\n" + "JIGHrzBEHP7cok4UdBWbfuI1YjqmjefQovQumKqfcQKBgQDlXDrFFvx+k9pUI2bo\n" + "KXcqroOcpdsssO5uJOG1PwuM02wIR0hP1d89fItFwLLuzjb+jeyN3qwFgoh21fkk\n" + "Z3HkxubMY4fpXk1mAsTPUZxll8YYgGE7tXk1Rk5xsBMzlFRW88N7Ww/rQMBOlpJA\n" + "6UfZGFYMezb1vXf7u3M4w/N22wKBgQC6/OF5DsCHAOui8CPXS2z2YTKuoOJmHKIe\n" + "vBeXy+ic+YRuTBXgA0Z1wL4xDW/LeCqoTmetbTuvGSyahMV4QSK0pxH9gk80sH4+\n" + "YEza3DLASxr4gSsr2fL6siuXN/OHyMClQb6JVa0yuPG1zLzShaIXYVAyz1m9rU1B\n" + "JpQfbEV8SwKBgGnBDvAVWzLZ5Y9qC2b8x4+Mi+7MorSGmEl9A/1YJnE2gteGVpdJ\n" + "G/fz1xvAcECgIMdalToM8/BOcbGpk4jvkZpVA9I2ClLWQoXIvQqCrMRDKPnfJ/Yq\n" + "BMtFsaHF9/SObhzxpK7aHAry/ji+QI1hgtlc2UBEB+FjDVGq6sO/xiCFAoGAV/3Y\n" + "PJdskhskx7AprY6Y3/gtWW/sGhEvWTc6Avy5oeTpJN45DQl9hrwExCCGk0EhEcKT\n" + "l1Dn3SYDj1MbedNs+YYFOT6w9yJ2xfObNwKX/1VYg8iFAEW3ybE+QhLaTvNxdFLT\n" + "zty6fDv7wolt8cNg24+3pbFdkZyT1izJV2Aj8rECgYBZQMObUgJ57n8FrXCdcdSa\n" + "MGsFYl8KUZa1zvzhoi3h7YtbVNNtSHcEK7VDyIheBt9pFCN7nuDX3jW2XYW2USEC\n" + "T7Pab2DAXPkRmXspWNID21G+AqqGSLD4pk9+ZmqevTfAtI+ajiu5NH1guH73rVOM\n" + "xGjQ5dCmWpUGt4fmO+zWIw==\n" + "-----END PRIVATE KEY-----"; static String pubKey ="-----BEGIN PUBLIC KEY-----\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp4eTf5Isnjcf8nQyntxT\n" + "vB1o/LbkEFApAnPKJdUqpnLPXsu0ttfPVA22Tj3mNsYojA+gHRVVCuWND4G1/12R\n" + "VYs4cF7HhPtSFdZNMNwvvuWOGZZe52aCdOQDTG4/nZWpgJTWDrrZnNJWXwhlzOaH\n" + "rvlNFw1hNfrmO00QBldznAOxga2l4qLYZ3G5DX9GcHwRBlcizR3DTg4MMxAnNCib\n" + "hBdlflALddR5aE+tGrUpnYpLcGyeijietkzP3lPhf+Xd1CS3cNF2/JBBZz2Cv9Zg\n" + "/DxihQOhdMEmozS3Ooj4OZoIjkuY9NjdvpxDfJu7yHS+x3dMq4oH+ZBHZcfTwuzm\n" + "KQIDAQAB\n" + "-----END PUBLIC KEY-----"; @Override public List getChatData() { String message = null; List list = new ArrayList<>(); long sdk = Finance.NewSdk(); System.out.println(Finance.Init(sdk, corpid, secret)); long ret = 0; int seq = 0; int limit = 20; long slice = Finance.NewSlice(); ret = Finance.GetChatData(sdk, seq, limit, null, null, 3, slice); if (ret != 0) { System.out.println("getchatdata ret " + ret); } String getchatdata = Finance.GetContentFromSlice(slice); JSONObject jo = new JSONObject(getchatdata); JSONArray chatdata = jo.getJSONArray("chatdata"); System.out.println("消息数:" + chatdata.length()); for (int i = 0; i < chatdata.length(); i++) { String item = chatdata.get(i).toString(); // item:{ // "publickey_ver":1, // "encrypt_chat_msg":"XSeHr+qM0YfX/q5WWvmnVEuL2E4U0RclkIbK9JnWQq7Y/0Ynir3srKh+9DH6BqRj/NYXKmUC65+0WRo // QboW3dC200XTqVNj+z0kljl11HdNmjuS3p7g0L+DYG5Bdz6Lo8FuHf/5WkOVi/R5VxOO6FvU+PediEOSCBN2dVHCeyIvExCk5mh // o+ME9QV/Q19HujmHpxzl3cu1XvBAZ7YvIpd2d/BCCI9JwmBc5bXr2FQ0r/PFkZadKGjw0cxqPyNIBkNc+ic0wHhWSZFTvY3qDW2 // FFAdkYW68w8PA5f+8gD9VUuxKzz/j3Fu/6547Ayyuo93lPtbud5lAWXyeLexyHujFmdr300MA44BoYZsuTqdVsHbtEGLw967kO1 // oHcImidD416ZuQh2VZiOYTJMtDZALdB1tXramb7kFj0AsKloFLKeg3ks3TYRKwEmM9wJ/y2hGDJzq5xncBFFShbLao5u", // "msgid":"1634016854685227651_1749628622146_external", // "encrypt_random_key":"kJ3XJM7CB7DGZqFxSfT8+EDWfr8vZmVVKzKLl5FM47Sd7iUSlgZF/a4dm5sTpCMW3uzk/m1LZV4odH // RyVO2+AaVJsidMoLV2LmmWiCAuXkzdK4yDbGItkvpZGrilgAlJjR8EhsUuqXOjvxkUemGvKMhrUqKdCaO4p3GYT/cxMRJDUmrP0v // TQqdgwznQOSubbBFDdMTSAfEtZnGp5tOQdCNFCbIqks4/Y8Isd/nd/Kq3QNsXjE+GdZkqVuOqRujOeCeqFRJF022i2KFuJQ+R+7X // 1es92NKBbaNT1AlRNfjtACH1KrPRLlEnmAS0EUIWWmn45/kOpH3T4ovOuNDnrafw==", // "seq":1} JSONObject data = new JSONObject(item); String encrypt_random_key = data.getString("encrypt_random_key"); String encrypt_chat_msg = data.getString("encrypt_chat_msg"); long msg = Finance.NewSlice(); try { message = RSAEncrypt.decryptRSA(encrypt_random_key, priKey); ret = Finance.DecryptData(sdk, message, encrypt_chat_msg, msg); if (ret != 0) { System.out.println("getchatdata ret " + ret); // return; } String str = String.valueOf(Finance.GetContentFromSlice(msg)); System.out.println("decrypt ret:" + ret + " msg:" + str); Finance.FreeSlice(msg); list.add(str); } catch (Exception e) { e.printStackTrace(); } } Finance.FreeSlice(slice); return list; } }