扫码生成的带参二维码后,微信推送事件的请求参数appId是公众号的appId,请求体中解密出来是第三方的appId
两个appId不一致??
根据官方文档中,消息和事件推送配置说明:该 URL 用于接收已授权公众号/小程序接的消息和事件,消息内容、消息格式、签名方式、加密方式与普通公众号/小程序接接收的一致,唯一区别在于签名 token 和加密 symmetric_key 使用的是服务方申请时所填写的信息。由于消息具体内容不会变更,故根据消息内容里的 ToUserName,服务方是可以区分出具体消息所属的公众号/小程序。但是现在,请求参数的appId是公众号的,请求体解密出来的是服务方的appid
问题描述:公众号授权第三方平台,生成带参二维码。之后扫描二维码,用户关注公众号(或已经关注),微信推送事件。微信推送事件是进行加密后的消息,请求参数appId是公众号的appId,加密数据中解密出来的appId是第三方平台appId.
具体报错是在:官方消息加解密提供的技术方案,为开发者提供的示例代码JAVA中:WXBizMsgCrypt.decrypt(String text)【190-192行,代码如下】 :【appid校验失败】
【if (!from_appid.equals(appId)) {
throw new AesException(AesException.ValidateAppidError);
}】
第三方appId : wxe013f98b452f2f44
公众号appId : wx40e539187a964df7
附:扫码带参二维码推送事件官方文档【https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html】
具体如下:扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
微信推送事件是进行加密后的消息,消息加解密说明官方文档
【https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Message_encryption_and_decryption_instructions.html】