失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信公众号开发-java版 腾讯课堂(开发接入)

微信公众号开发-java版 腾讯课堂(开发接入)

时间:2019-12-19 15:50:41

相关推荐

微信公众号开发-java版 腾讯课堂(开发接入)

微信公众号开发-java版 腾讯课堂

微信测试号申请地址: 微信二维码直接扫描登录

1.新建web项目

2.内网穿透映射公网ip (免费隧道需要支付宝实名认证)

3.微信接入验证签名 TOKEN自己定义 接入成功微信保存 路径和TOKEN

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

package wxTest;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays;/*** Created by Administrator on /3/15/0015.*/public class wxService {/*** 验证签名* @param TOKEN* @param timestamp* @param nonce* @param signature* @return* 1)将token、timestamp、nonce三个参数进行字典序排序* 2)将三个参数字符串拼接成一个字符串进行sha1加密* 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/public static boolean check(String TOKEN, String timestamp, String nonce, String signature) {//1)将token、timestamp、nonce三个参数进行字典序排序String[] strings = {TOKEN, timestamp, nonce};Arrays.sort(strings);String str =strings[0]+strings[1]+strings[2];// 将三个参数字符串拼接成一个字符串进行sha1加密String mysid =sha1(str);System.err.println(mysid);System.err.println(signature);return mysid.equalsIgnoreCase(signature);}private static String sha1(String str) {//获取加密对象MessageDigest md = null;StringBuffer sb = new StringBuffer();try {md = MessageDigest.getInstance("sha1");byte[] digest = md.digest(str.getBytes());char[] chars={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};for (byte b:digest){sb.append(chars[(b>>4)&15]);sb.append(chars[b&15]);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}}

package wxTest;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;/*** Created by Administrator on /3/15/0015.*/@WebServlet("/wx")public class wxServlet extends HttpServlet {public static final String TOKEN ="13245";protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {System.err.println("post");}protected void doGet( HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {System.err.println("get");/*** 验证消息的确来自微信服务器**signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp 时间戳nonce 随机数echostr 随机字符串*/String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (wxService.check(TOKEN,timestamp,nonce,signature)){System.err.println("接入成功");PrintWriter writer = response.getWriter();writer.print(echostr);writer.flush();writer.close();}else{System.err.println("接入失败");}}}

如果觉得《微信公众号开发-java版 腾讯课堂(开发接入)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。