- 企业微信回调解密问题
在写企业微信回调解密时遇到一点问题 现象是修改成员与部门时的回调有时候能成功解密, 有时候不能, 而且有一个很特殊的现象就是我现在企业微信仅使用手机号添加成员, 这个回调能正常解密, 但是一旦成员确认, 然后登录企业微信, 这时候的回调是不能正常解密的 解密时报的错是: BadPaddingException 我看到文档(https://open.work.weixin.qq.com/api/doc/90000/90139/90968)的概述里面这么写的: AES采用CBC模式,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节,取AESKey前16字节 也就是说使用 AES/CBC/PKCS7Padding 即可 但是在实际使用过程中却出现有时候解密失败的情况, 我又参考了官方提供的那个包, 看到里面的解密程序使用的是 AES/CBC/NoPadding, 这个是采用不填充的方式, 然后程序里面就是手动编程将源数据填充到32的整数倍; 我又将我的程序也改成AES/CBC/NoPadding 的方式, 然后去解密之前报错的密文数据, 能够解密成功; 想问下官方文档说的是使用 PKCS#7 方式填充数据, 为什么实际数据要不填充才能解密呢?
2021-12-10 - 关于企业微信token可能随时过期的解决方案设计问题
企业微信的token是2小时更新一次, 4小时过期, 但是有一个重要的点, 是文档中的这句话: "企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。" 也就是说token随时可能失效, 我在使用java实现这些api时, 使用的是httpclient, 而且使用的是httpclient的执行链来在每个请求中加access_token, 这就避免了每次请求都得加上token的麻烦, 但是在获取到微信服务器响应token过期, 需要重试时的步骤遇到些问题, 我会读取第一次访问的entity, 判断是否过期, 然后假如没有过期则程序继续, 那么在实际使用api的地方将不能在读取entity, 会提示流已经关闭, 这是其中一个问题, 这个问题我大概看了写httpclient的api是可以解决的, 但是这就会在一次请求中发生多次io, 及其影响性能, 所以我直接放弃了这个方案 想问问做过的同僚是否有更好的解决方案或者不使用httpclient, 来解决token随时会生效, 需要重新获取token的问题
2021-11-24 - 关于企业微信api返回参数判断是否成功问题
在使用企业微信api时该如何去判断返回的是正常数据 在"开发指南 -> 开发前必读"中这样写到:根据errcode存在且不为0判断为失败,否则为成功, 从这句话可以知道, 如果 api 返回的数据中不包含 errcode 也是成功的 但是在"开发指南 -> 获取access_token"中的返回参数说明中对errcode的解释是: 出错返回码,为0表示成功,非0表示调用失败, 从这句话可以知道已经确定了在返回的数据里面有errcode参数 这两个文档说明是有冲突的, 应该按照哪个呢
2021-11-22 - 企业微信 扫码登录中 state参数作用是什么
在企业微信扫码登录中有一个参数叫state, 看了解释没看懂, 解释如下: 用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验 想问下这个参数是如何发挥作用去防止CSRF攻击的, 是怎样的一个具体的使用流程, 如: 展示二维码之前state从服务器拿, 用户扫码之后, 然后重定向到redirect_uri, state会跟着发送到服务器, 服务器再验证这个state值是否和刚才一致, 这么一个流程, 这个比如的流程只是一个假设,
2021-11-17 - 企业微信中应用间的access_token通用吗
我用我的自建应用获取token, 可以在当前自建应用内发送消息, 也可以用来访问通讯录的读取成员接口, 但是我用通讯录的secret获取的token却不能用来发送自建应用的消息, 提示48002, 看了错误解释, 涉及到多个应用的token是否通用问题, 想问下有没有办法使我的自建应用或者某个应用获取到的token能够在整个企业微信通用, 或者至少大部分通用, 想得到一个官方的确定答案, 因为在程序设计时需要涉及到是否支持多token情况
2021-11-16 - 图片的meta对应的JSON报文怎么获取
微信支付接口中, 在生成签名时, 如果是上传图片, 则需要获取图片meta对应的json报文参与签名, 这个json报文如何获取呢
2021-05-29 - 回调和证书加密时, 为什么有RSA的商户公钥不用, 要用单独的一个apiv3秘钥来加密呢
微信支付接口中, 回调和平台证书加密使用的是apiv3秘钥, 为什么有RSA的商户公钥不用, 要用单独的一个apiv3秘钥来加密呢
2021-05-29