微信公众号平台api之验证、接收文本消息和自动回复文本消息
<%@ page contentType="text/html;charset=UTF-8"%> <%@ page import="java.util.*"%> <%@ page import="java.security.*"%> <%@ page import="java.io.*"%> <%@ page import="org.w3c.dom.*"%> <%@ page import="javax.xml.parsers.*"%> <% Enumeration parameterNames = request.getParameterNames(); String parameterName = null; String parameterValue = null; while (parameterNames.hasMoreElements()) { parameterName = (String) parameterNames.nextElement(); parameterValue = request.getParameter(parameterName); System.out.println("weixin_test-param:"+parameterName+"="+parameterValue); } String TOKEN = "这里填写您设置的TOKEN值"; String echostr = request.getParameter("echostr"); String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); System.out.println("weixin_test:echostr="+echostr+",signature="+signature+",timestamp="+timestamp+",nonce="+nonce); List values = new ArrayList(); values.add(TOKEN); values.add(timestamp); values.add(nonce); Collections.sort(values); StringBuffer content = new StringBuffer(); for (int i = 0; i < values.size(); i++) { content.append(values.get(i)); } MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] b = md.digest(content.toString().getBytes("UTF-8")); String stmp = ""; StringBuffer signInfo = new StringBuffer(); for (int n = 0; n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0XFF); if (stmp.length() == 1){ signInfo.append("0"); signInfo.append(stmp); }else{ signInfo.append(stmp); } } System.out.println("weixin_test:signInfo="+signInfo+",signature="+signature); if(signInfo.toString().equals(signature)){ out.clear(); out.print(echostr); System.out.println("weixin_test(001):ok"); //receive user's message from weixin platform BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = br.readLine())!=null){ sb.append(line); } System.out.println("weixin_message:"+sb.toString()); //recieved message :text if(sb.length()>0){ Element root=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(sb.toString().getBytes("UTF-8"))).getDocumentElement(); NodeList nodes = root.getChildNodes(); int count = nodes.getLength(); String textContent = null; String FromUserName = null; String ToUserName = null; boolean isText = false; for(int i=0;i<count;i++){ String nodeName = nodes.item(i).getNodeName(); String nodeValue = nodes.item(i).getFirstChild().getNodeValue(); if("MsgType".equals(nodeName) && "text".equals(nodeValue)){ isText = true; } if("Content".equals(nodeName)){ textContent = nodeValue; } if("FromUserName".equals(nodeName)){ FromUserName = nodeValue; } if("ToUserName".equals(nodeName)){ ToUserName = nodeValue; } } System.out.println("weixin_message:textContent="+textContent); //reply text message if(isText){ StringBuffer replyInfo = new StringBuffer(); Date d = new Date(); long CreateTime = d.getTime()/1000; replyInfo.append("<xml>"); replyInfo.append("<ToUserName>"); replyInfo.append("<![CDATA[").append(FromUserName).append("]]>"); replyInfo.append("</ToUserName>"); replyInfo.append("<FromUserName>"); replyInfo.append("<![CDATA[").append(ToUserName).append("]]>"); replyInfo.append("</FromUserName>"); replyInfo.append("<CreateTime>"); replyInfo.append(CreateTime); replyInfo.append("</CreateTime>"); replyInfo.append("<MsgType>"); replyInfo.append("<![CDATA[text]]>"); replyInfo.append("</MsgType>"); replyInfo.append("<Content>"); replyInfo.append("<![CDATA[hello,你好!]]>"); replyInfo.append("</Content>"); replyInfo.append("</xml>"); out.clear(); out.print(replyInfo.toString()); } } return; }else{ System.out.println("weixin_test:err"); } %>
相关推荐
JAVA实现了微信公众号的接收普通和被动回复消息的类型
dotnet-DotNETCore实现微信公众号被关注时推送消息dotnet-DotNETCore实现微信公众号被关注时推送消息dotnet-DotNETCore实现微信公众号被关注时推送消息dotnet-DotNETCore实现微信公众号被关注时推送消息dotnet-...
采用.net开发的webapi程序,用户与微信公众号交互。包括接收用户信息,主动推送信息(图文)到指定用户。完整的程序,可直接运行。注释详尽。已在实际项目中使用。
PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号管理系统 PHP微信公众号...
主要介绍了Python开发之快速搭建自动回复微信公众号功能的相关资料,需要的朋友可以参考下
asp.net微信公众号接收文本消息 下载后只需要更改微信的appid appSecret和token即可使用
微信公众号使用fastapi对接werobot框架的视图生成源代码,自己编写的原创代码,100%可用!
作为计算机学院的学生的学生,时刻在打计算机学院官网的主意,前段时间我的一个好基友在我面前炫耀他的能够查课表的公众号(服务模拟登录返回数据),把我眼红得,所以我暗自下决心,自己一定要弄个微信公众号来玩...
以订单推送为例,主要为大家详细介绍了java实现微信公众号发送模版消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
微信消息事件转发功能:微信公众平台/企业微信的服务器设置只能填写1个url,用本系统可以同时转发给多个url。如用户关注事件、用户发送的消息等,可以同时发送给多个服务器站点。 支付宝开放平台多域名回调功能:每...
微信公众号运营计划方案(最新范文模板) .pdf微信公众号运营计划方案(最新范文模板) .pdf微信公众号运营计划方案(最新范文模板) .pdf微信公众号运营计划方案(最新范文模板) .pdf微信公众号运营计划方案(最新范文模板)...
微信公众号自动抢票,后台数据显现
主要介绍了C#微信公众号开发之接收事件推送与消息排重的方法,详细分析了事件推送与消息排重的使用技巧,对微信开发有一定参考借鉴价值,需要的朋友可以参考下
微信公众号接口调用 java demo, maven工程, 包含获得微信 AccessToken, 获得微信用户信息, 微信公众号用于调用微信JS接口的临时票据, 微信分享, 发送模板消息等
PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注微信公众号PHP扫码关注...
此项目是微信公众号批量自动化爬虫的核心实现, 面向开发者开源, 可以当做go语言包引入到自己项目中, 完整产品必须二次开发实现,QQ交流群: 563954381 微信的防作弊一直在不断更新完善,过于频繁的抓取可能导致微信...
微信公众号禁止分享页面.如何禁止微信公众号分享页面
目前微信公众号服务器配置只允许配置一个服务器地址,通过本应用可以无限配置多个服务器地址,实现多个平台同时使用一个微信公众号。同时允许添加多个公众号,多个平台,支持多开,无限制使用,有时候公众号接到多...
springboot实现微信公众号模版消息推送,用的是构架:springboot+redis,详细教程:https://blog.csdn.net/chenhongming888/article/details/95173079
基于OpenAI接口做的微信公众号自动回复,弱化版ChatGPT 介绍 能干什么? 通过调用OpenAI的接口智能回答问题。(API调用 或 用作公众号自动回复) 是ChatGPT吗? 不是。ChatGPT基于GPT-3.5,本项目是调用GPT-3,有很大...