1、数据回调
说明:就是一个简单的get请求,直接根据提供jar包进行调用,详细的参数说明都已经在下面代码注释中
@GetMapping("weixin/roll_back")
public String getPrividerToken(CallBackReq callBackReq) throws AesException {
String response = weiXinLogic.callBackVerife(callBackReq);
return response;
}
get请求参数接收体 省略get 和 set方法
public class CallBackReq {
/** 企业微信加密签名 需要检验*/
private String msg_signature;
/**时间戳。与nonce结合使用,用于防止请求重放攻击。 */
private String timestamp;
/**随机数。与timestamp结合使用,用于防止请求重放攻击。*/
private String nonce;
/** 加密的字符串 ,需要解密得到消息内容明文,解密后有random、msg_len、msg、receiveid四个字段,其中msg即为消息内容明文*/
private String echostr;
}
调用推荐jar 推荐的方法信息。 下载参考地址

// jar包方法返回信息
public String callBackVerife(CallBackReq callBackReq) throws AesException {
// 解析参数信息 参数值需要做Urldecode处理
// 创建验证函数信息 -- token 和 encodingAesKey 都是应用详情里面的参数信息。 corpid 是企业的 id 信息 登陆服务商平台、服务商信息里面有
WXBizMsgCrypt wxBizMsgCrypt = new WXBizMsgCrypt(token, encodingAesKey, corpid);
// 调用验证URL函数直接一步到位
return wxBizMsgCrypt.VerifyURL(callBackReq.getMsg_signature(), callBackReq.getTimestamp(), callBackReq.getNonce(), callBackReq.getEchostr());
}
二、指令回调 -- 保证接口可以get请求也可以 post 请求
指令回调有一个坑。因为数据推送也是这个接口,可能是get方法也可能是post方法,直接参考以下代码即可
@RequestBody(required = false) String req 这个用于接收post请求参数信息。并且表示非必填
CallBackReq callBackReq 用于接收get请求参数信息
根据不同请求方式处理调用不同的处理逻辑
@RequestMapping(value = "weixin/receive_authority")
@ResponseBody
public String receiveDataInfo(@RequestBody(required = false) String req, CallBackReq callBackReq) throws AesException, IOException, SAXException, ParserConfigurationException, ParamException, BusinessException {
// post 请求
if (null != req){
logger.info("请求参数BusinessReceiveReq 为:{}", JSONObject.toJSONString(req));
weiXinLogic.processBusinessReceive(req, callBackReq);
return WinxinThirdConstant.WEIXIN_SUCCESS;
}else {
// get 请求
logger.info("请求参数 callBackReq 为 {}", JSONObject.toJSONString(callBackReq));
return weiXinLogic.callBackVerife(callBackReq);
}
}
POST 请求获取到的数据解析方式
解析完成之后 根据不同的type类型进行不同处理即可 ,以下方法为 weiXinLogic.processBusinessReceive(req, callBackReq); 的简写
// 对msg_signature进行检验 并且解密获得消息结构体
WXBizMsgCrypt wxBizMsgCrypt = new WXBizMsgCrypt(token, encodingAesKey, suiteId);
// 回调的key值
String msgStructure = wxBizMsgCrypt.DecryptMsg(req.getMsg_signature(), req.getTimestamp(), req.getNonce(), xmlData);
logger.info("指令回调获取到的数据为:{}", msgStructure);
网友评论