公众号
由于单位名称改变,公众号注销时打款验证失败怎么办?
小程序和微信公众号链接访问是提示“非微信官方网页,请确认是否继续访问。”,点击恢复申请没用,需要帮忙恢复下 [图片][图片][图片]
公众号表格不能设置自适应宽度?表格属性也没了
private String generateQrCode(String appId, String accessToken, String enterpriseId) { Map<String, Object> params = new HashMap<>(); params.put("action_name", "QR_LIMIT_STR_SCENE"); Map<String, Object> actionInfo = new HashMap<>(); Map<String, Object> scene = new HashMap<>(); scene.put("scene_str", enterpriseId); actionInfo.put("scene", scene); params.put("action_info", actionInfo); RestTemplate restTemplate = new RestTemplate(); String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + accessToken; // 添加请求日志 log.info("生成二维码请求参数 - appId: {}, accessToken: {}, url: {}", appId, accessToken, url); log.info("请求参数: {}", params); try { Map<String, Object> response = restTemplate.postForObject(url, params, Map.class); // 添加响应日志 log.info("生成二维码响应结果: {}", response); if (response != null && response.containsKey("ticket")) { String ticket = (String) response.get("ticket"); String qrCodeUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket; log.info("成功生成二维码: {}", qrCodeUrl); return qrCodeUrl; } else { log.error("生成二维码失败,响应中未包含ticket字段"); if (response != null && response.containsKey("errcode")) { log.error("微信API错误 - errcode: {}, errmsg: {}", response.get("errcode"), response.get("errmsg")); } } } catch (Exception e) { log.error("生成二维码请求异常", e); } return null; } 这里生成了带参数的二维码,扫码关注时会同步触发事件 @PostMapping("/{appId}/callback") public String msgCallback(@PathVariable("appId") String appId, @RequestParam(value = "signature", required = false) String signature, @RequestParam(value = "timestamp", required = false) String timestamp, @RequestParam(value = "nonce", required = false) String nonce, @RequestParam(value = "encrypt_type", required = false) String encryptType, @RequestParam(value = "msg_signature", required = false) String msgSignature, @RequestBody(required = false) String requestBody) throws DocumentException { log.info("=== 收到微信消息与事件推送 ==="); // POST请求 - 处理事件通知 log.info("收到POST请求,消息体: {}", requestBody); // 检查密钥设置 String encodingAesKey = wechatConfig.getAesKey(); String token = wechatConfig.getToken(); String comappId = wechatConfig.getAppId(); log.info("encodingAesKey: {}", encodingAesKey); log.info("token: {}", token); log.info("comappId: {}", comappId); // 解析 XML 消息 Map<String, String> msgMap = WxMessageUtils.parseXml(requestBody); String encrypt = msgMap.get("Encrypt"); // 解密消息 String decryptedXml; try { WxBizMsgCrypt wxBizMsgCrypt = new WxBizMsgCrypt(token, encodingAesKey, comappId); decryptedXml = wxBizMsgCrypt.decrypt(encrypt); log.info("解密后的消息: {}", decryptedXml); } catch (Exception e) { log.error("消息解密失败, 密文: {}, 错误: {}", encrypt, e.getMessage()); return "success"; } // 解析解密后的 XML 消息 msgMap = WxMessageUtils.parseXml(decryptedXml); log.info("解析后的消息: {}", msgMap); String msgType = msgMap.get("MsgType"); String event = msgMap.get("Event"); if ("event".equals(msgType) && "subscribe".equals(event)) { // 处理关注事件 String openid = msgMap.get("FromUserName"); String eventKey = msgMap.get("EventKey"); log.info("收到关注事件 - openid: {}, eventKey: {}, raw message: {}", openid, eventKey, decryptedXml); if (eventKey != null && !eventKey.isEmpty()) { String enterpriseId = eventKey.replace("qrscene_", ""); log.info("解析二维码参数 - 原始值: {}, 处理后: {}", eventKey, enterpriseId); wechatWarnService.saveOpenidAndEnterpriseId(openid, enterpriseId); } } else if ("event".equals(msgType) && "SCAN".equals(event)) { // 处理扫描二维码事件 String openid = msgMap.get("FromUserName"); String eventKey = msgMap.get("EventKey"); log.info("用户扫描二维码,openid: {}, eventKey: {}", openid, eventKey); // TODO: 根据 eventKey 的值进行相应的处理,如果 eventKey 表示企业ID,可以调用 saveOpenidAndEnterpriseId 方法 } return wxCallbackService.handleCallback(appId, signature, timestamp, nonce, encryptType, msgSignature, requestBody); } 现在问题是扫码点关注时后端 提示解密错误 09:22:49.551 [http-nio-8081-exec-94] DEBUG c.r.s.m.S.selectReadedList - [debug,135] - <== Total: 1 09:22:52.695 [http-nio-8081-exec-95] INFO c.r.w.c.WxCallbackController - [msgCallback,207] - === 收到微信消息与事件推送 === 09:22:52.696 [http-nio-8081-exec-95] INFO c.r.w.c.WxCallbackController - [msgCallback,209] - 收到POST请求,消息体: <xml> <ToUserName><![CDATA[gh_5ab73d995f8e]]></ToUserName> <Encrypt><![CDATA[oPyM/kz3Ov78khziMZMhaPT6bZsrIXPGUhyP9xxG8Hg2OIbK2Xqv/PePVJKzyE2YaPZNCoJp57bSsQxN9eWynKy+r9uYMT7Qknp72mUzQCWhcmKn1nl8AsgTokHpAVoYHdffoab/9HqOOGuM2rHa+pr1pmn68u7r8qBCdTnxaL8HZ4BG54T7jUecLa4urZ+9CfDK3bbIZgbxdtw8xXjWFa+fTBvBIdI49F3YEgvfv0ImmbNe+h09mH5RrA8+nV1FOHhsvisHftUX9lvFiqEb92m7OflZIzGiog0sYwOMYW4RK7qlD0aIUQGm17A7t1M51QiO4a9w4ABrR0zMCsSbCyhwfK9HdIeo5dEPRqcPX7LjrKEFgsj+Go06RvtEbMSUm1GvTjMI9u6nJ11C67F16puVBlVgoMm7mq94603KzJMP2hBslwYDJCfjBKLTAzbmcbFHzrcaLb96bKe1lV6Mmm4r0miQg/oOdkxq1rW52Vp8rBs4pqRrlk1FqUDBiXmCW0I3N34Ow3UYqcF5Phyq+C2M7f0dHJ91yTosZsPOZbxHuvtgOi7xMBYR+kHK8nEKw0kjHEnNtQLOSeTl1m48ajTnnlN3sLPqUIp63ZGyEhZQGmBVHwu6Nu/Nv5H2zDry]]></Encrypt> </xml> 09:22:52.696 [http-nio-8081-exec-95] INFO c.r.w.c.WxCallbackController - [msgCallback,215] - encodingAesKey: WxEncryptKey19345abcdef67890ghijkl12345mnxo 09:22:52.696 [http-nio-8081-exec-95] INFO c.r.w.c.WxCallbackController - [msgCallback,216] - token: WxcGeorge925811XwgE01B322115 09:22:52.696 [http-nio-8081-exec-95] INFO c.r.w.c.WxCallbackController - [msgCallback,217] - comappId: wxa7d1e80a0ba554c8 09:22:52.738 [http-nio-8081-exec-95] INFO c.r.w.u.WxBizMsgCrypt - [<init>,46] - AES密钥初始化成功, 长度: 32 09:22:52.739 [http-nio-8081-exec-95] INFO c.r.w.u.WxBizMsgCrypt - [decrypt,156] - Base64解码后的密文长度: 480 09:22:52.742 [http-nio-8081-exec-95] ERROR c.r.w.u.WxBizMsgCrypt - [decrypt,168] - 解密过程发生错误 javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989) at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845) at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446) at javax.crypto.Cipher.doFinal(Cipher.java:2165) at com.ruoyi.wechatpublic.util.WxBizMsgCrypt.decrypt(WxBizMsgCrypt.java:159) at com.ruoyi.wechatpublic.controller.WxCallbackController.msgCallback(WxCallbackController.java:227) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 如果是不通过二维码扫码关注没有这个问题是什么原因
[图片] 20万+阅读,曝光量才8000,看着不合理啊,3万的3000,19万怎么才4800,而且ecpm这么低,20万加阅读量才10块钱,改完版前后差太多了吧!
遇到几次公众号内容修改后浏览无误,但推送后又变成修改前的内容,或者是有一段内容位置错了。是不是系统有bug?
公众号、小程序H5商城,打开提示非微信官方网页,已申请多次解封,还是提示? 业务域名已经配置,浏览器缓存也清理了,申请解封了一次,好了几天,现在又出来了。这个如何解决? 业务域名 https://shop.shuyitang.vip 已提问多次了,官方没有人回复吗?这解决问题的效率真的让人头痛。 @微信朋友圈&外链咨询
注册时,根据提示注册为了服务号,但是后期需要做大量宣传,想转为公众号。查了方法可以账号转移,但是手续比较复杂。能不能先注销服务号,再用邮箱和身份信息再次注册公众号?服务号没有法人绑定,注销期间需要注意什么?
1
订阅号如何一天发多次?
已认证的微信公众号开通”客服“功能,为什么还要再次主体认证? [图片]
我的微信公众号实名认证不了,这个怎么解决? [图片]
H5如何实现文件下载、下载成功后打开查看?
我的服务号只能选择发表,不能选择发布,群发次数不够怎么办
我想把公众号主体的名字改过来就行,不用迁移啊??
服务号应该采取平铺,框里太乱了,订阅号里面有内容就够了,服务号应该把号平铺方便看哪一个号的模板提醒,折叠后像以前的微信列表一样显示
谁有以下材料的电子模板,从来没有提交过不知道模版是什么样的?有知道的告诉一下谢谢了!公众号主体承诺书+原账号与目标账号关系说明![图片]
[图片][图片]十多分钟多了300多票,比之前一起投的还多,后台数据只有一些阅读量,不能直接反应是不是刷票,这种情况应该怎么办?
微信短信验证码过于频繁多久能用?
【公众号】: 亲爱的七十码 【浏览器UA】: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62 isNewEditor true 【页面链接】: https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&reprint_confirm=0×tamp=1743319324215&type=77&appmsgid=100000467&token=1015357468&lang=zh_CN 【问题描述】: 请描述问题发生时的操作步骤,并最好能附出现问题的截图
需要先修正主体,修正通过后再申请注销。
可登录公众号/服务号后台,点击【设置与开发】->【账号设置】->【主体信息】->【详情】->【名称修正】,根据页面提供所需资料即可申请修改同步,审核时间为3-7个工作日。