转:springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证

开发前必读以及准备工作:

1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请开发者前往微信开放平台接入。

2、在申请到认证公众号之前,开发者可以先通过测试号申请系统,快速申请一个接口测试账号,立即开始接口测试开发。

微信公众号测试账号官方申请链接:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login微信扫描关注后登录

登录进来后即可看到申请的微信公众号测试账号信息以及appID和appsecret

一、接口开发

请求方式:http get请求(只能用get方式)

  1. @Controller
  2. @RequestMapping(value = "msg")
  3. public class WeChatActionController {
  4. /**
  5. * 微信消息接收和token验证
  6. * @param request
  7. * @param response
  8. * @throws IOException
  9. */
  10. @RequestMapping("/weChatToken")
  11. public void weChat(HttpServletRequest request, HttpServletResponse response) throws IOException {
  12. boolean isGet = request.getMethod().toLowerCase().equals("get");
  13. if (isGet) {
  14. // 微信加密签名
  15. String signature = request.getParameter("signature");
  16. // 时间戳
  17. String timestamp = request.getParameter("timestamp");
  18. // 随机数
  19. String nonce = request.getParameter("nonce");
  20. // 随机字符串
  21. String echostr = request.getParameter("echostr");
  22. // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
  23. if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
  24. try {
  25. PrintWriter print = response.getWriter();
  26. print.write(echostr);
  27. print.flush();
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }
  33. }
  34. }

检验微信加密签名信息的工具类

  1. public class CheckoutUtil {
  2. // 与测试账号接口配置信息中的Token要一致
  3. private static String token = "999";
  4. /**
  5. * 验证签名
  6. * @param signature
  7. * @param timestamp
  8. * @param nonce
  9. * @return
  10. */
  11. public static boolean checkSignature(String signature, String timestamp, String nonce) {
  12. String[] arr = new String[] { token, timestamp, nonce };
  13. Arrays.sort(arr);// 将token、timestamp、nonce三个参数进行字典序排序
  14. StringBuilder content = new StringBuilder();
  15. for (int i = 0; i < arr.length; i++) {
  16. content.append(arr[i]);
  17. }
  18. MessageDigest md = null;
  19. String tmpStr = null;
  20. try {
  21. md = MessageDigest.getInstance("SHA-1");
  22. // 将三个参数字符串拼接成一个字符串进行sha1加密
  23. byte[] digest = md.digest(content.toString().getBytes());
  24. tmpStr = byteToHex(digest );
  25. } catch (NoSuchAlgorithmException e) {
  26. e.printStackTrace();
  27. }
  28. // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
  29. return tmpStr != null ? tmpStr.equals(signature) : false;
  30. }
  31. //十六进制字节数组转为字符串
  32. private static String byteToHex(final byte[] hash) {
  33. Formatter formatter = new Formatter();
  34. for (byte b : hash) {
  35. formatter.format("%02x", b);
  36. }
  37. String result = formatter.toString();
  38. formatter.close();
  39. return result;
  40. }
  41. }

二、配置接口信息

点击接口配置信息右侧的修改,填写接口的url和Token(任意填写都可以)提交。这个url用于服务端验证此处配置的Token

点击提交,显示Token验证成功,至此微信公众号测试账号接口配置以及Token验证已经完成,接着为了拥有微信更多的JS接口调用权限,继续按照下面过程配置JS安全接口域名。

三、配置JS接口安全域名

JS接口安全域名右侧的修改,填入上面配置的域名信息(注意是域名,不带http,不带www,例如:baidu.com)

四、配置网页授权

填写安全域名(跟上面的一样,填写域名信息,不带http,不带www)

更多JavaEE资料请关注下面公众号,欢迎广大开发者朋友一起交流。笔者电话(微信):18629374628 

springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证相关推荐

  1. 公众号基本配置(token验证失败)|公众平台测试账号接口配置信息(token验证失败)

    1.公众号基本配置(token验证失败) <?php define("TOKEN", "你自己的token");$wechatObj = new Call ...

  2. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本 ...

  3. 微信公众号开发的测试账号配置

    1.首先,你需要一个具有公网IP的域名 例如www.demo.com,它的域名解析的IP是123.123.123.123 2.在微信公众平台登录你的账号 微信公众平台:https://mp.weixi ...

  4. 阿里云服务器+微信公众号配置(Token验证不通过)

    推荐使用CentOS操作系统,本人在使用Ubuntu操作系统时安装第三方软件不是很顺利,导致在微信公众号服务器配置的Token验证失败不通过上浪费大量时间. 以下是 CentOS 和 Ubuntu的介 ...

  5. rest接口_深度干货 | 测试REST服务接口

    openEA开源社区 开源,我们是认真的! 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:较新的BPM版本中,提供了SOAP和REST两种接口,这里我讲下 ...

  6. 查询话费余额php接口,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...

    PHP余额查询接口代码示例 请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://api.weimi.cc/2/accoun ...

  7. 微信公众号测试账号的接口配置信息配置失败

    记录一次配置失败的问题 问题发生环境: 因为项目之前配置是好的,后来域名备案,更换域名后,备案后重新配置,提示报错: 后面怎么调试都不合适,于是想到是否是域名配置时候哪里配置不合适,打开阿里云控制台, ...

  8. php微信公众号测试账号密码,微信公众号测试账号配置失败竟然是因为一个字符...

    开发环境: 1.SAE新浪云平台 2.PHP环境 3.在微信申请了一个测试用的公众平台开发账号 4.从微信官方下载的一个php文档 5.token也是默认的weixin,(这个第一次可以不用改,但如果 ...

  9. 微信公众平台开发测试账号配置URL失败的问题

    配置URL的时候老提示失败,如下图: 解决的办法是:由于我的WSServlet的doGet()方法里面没有返回微信请求的随机字符串 ,在doGet里面添加如下代码 就可以 // 微信加密签名     ...

最新文章

  1. Hbase原理、基本概念、基本架构
  2. hdu 1106 排序
  3. JAVA8 Stream方法使用详解Filter、map等用法(一)
  4. java读取excel数据保存到数据库中_java读取excel的内容(可保存到数据库中)
  5. MySQL ACID及四种隔离级别的解释
  6. my appointment Fiori customizing里的Calendar checkbox的实现逻辑
  7. 是先打工还是直接创业?答案让我惊呆了!
  8. python自己重启自己程序_python 自动重启本程序
  9. 10.java 关键字与保留字
  10. 【转】Oracle DECODE函数的语法介绍
  11. 网页设计师必备的35套图标(免费下载)
  12. Excel 2007中的新文件格式
  13. Android源码中学习文档如何查看
  14. testlink xml转excel
  15. Android音视频开发
  16. ORACLE 查询表空间使用情况
  17. win10虚拟机连接不上内网服务器,win10虚拟机网络设置_win10虚拟机怎么连接网络...
  18. 使用Excel和Tableau分析淘宝母婴产品上新策略
  19. 用C语言编写高斯消元法解线性方程组
  20. 西电考研复试操作系统期末题问题——小题总结

热门文章

  1. 2017年智能家居四大行业预测
  2. vue element-ui 在el-tabs组件 最右侧添加按钮
  3. Windows10环境下安装虚拟机virtualbox详解
  4. JavaWeb(第一实验)---通过Eclipse建立简单登录界面,将jsp技术和html技术结合!(附具体代码)
  5. 苹果se2_小米学习苹果?即将发布小屏手机,卢伟冰微博喊话网友|卢伟冰|手机|iphone|安卓手机...
  6. Intel ax200 WiFi6吞吐量测试
  7. 博士论文致谢火了:“我从来不曾优秀过,也从来不曾放弃过!”
  8. 怀着忐忑的心情在这里开博啦!
  9. 经典卷积神经网络总结:LeNet-5、AlexNet、ZFNet、VGG、GoogleNet、ResNet
  10. Delphi几种程序自杀的方法