按照官方文档下载sdk(windows或linux),里面包含使用demo,目前使用的是windows的sdk,然后将动态链接库.dll文件放到windows的C盘System32文件夹下,这时运行demo,控制台会显示0(Finance.Init(sdk, R.CORPID, R.SECRET)初始化成功,使用前必须初始化),sdk是调用Finance.NewSdk()生成的;如果控制下还显示getchatdata :{“errcode”:301042,“errmsg”:“get chatdata whiteip not match, hint: [1599354620_109_ee5ba2a913b13f4fc1b127091c758464], from ip: 223.104.64.207, more info at https://open.work.weixin.qq.com/devtool/query?e=301042”,“chatdata”:[]},则表示你的ip没有添加到企业微信会话功能的信任ip中,所以"chatdata":[],需要添加。
另外特别注意,企业微信保存的三天的消息内容,如果你设置的seq值为0,而limit设置的值太小(不超过1000),可能控制显示null,或者拉取到的密文返回参数中publickey_ver(公钥版本号为旧的)。解encrypt_random_key(版本的公钥进行非对称加密后base64加密的密文)时要使用自己在存档功能设置的公钥版本对应的私钥去解,不然会报错,同时公钥使用的RSA psck1的算法加密,所以解密时留意采用相同的方式去解。解RSA前要先对64编码进行解码,可使用Base64.decodeBase64(str);然后使用Cipher rsa = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");构造PKCS1的Cipher,使用里面的API进行初始化和解码操作。最终返回的byte [] 可使用new String(rsaDecode,"UTF-8");得到string类型的encrypt_random_key。接下来可用Finance解析密文的API解析密文了。