springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证
转:springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证
开发前必读以及准备工作:
1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请开发者前往微信开放平台接入。
2、在申请到认证公众号之前,开发者可以先通过测试号申请系统,快速申请一个接口测试账号,立即开始接口测试开发。
微信公众号测试账号官方申请链接:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login微信扫描关注后登录
登录进来后即可看到申请的微信公众号测试账号信息以及appID和appsecret
一、接口开发
请求方式:http get请求(只能用get方式)
- @Controller
- @RequestMapping(value = "msg")
- public class WeChatActionController {
- /**
- * 微信消息接收和token验证
- * @param request
- * @param response
- * @throws IOException
- */
- @RequestMapping("/weChatToken")
- public void weChat(HttpServletRequest request, HttpServletResponse response) throws IOException {
- boolean isGet = request.getMethod().toLowerCase().equals("get");
- if (isGet) {
- // 微信加密签名
- String signature = request.getParameter("signature");
- // 时间戳
- String timestamp = request.getParameter("timestamp");
- // 随机数
- String nonce = request.getParameter("nonce");
- // 随机字符串
- String echostr = request.getParameter("echostr");
- // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
- if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
- try {
- PrintWriter print = response.getWriter();
- print.write(echostr);
- print.flush();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
检验微信加密签名信息的工具类
- public class CheckoutUtil {
- // 与测试账号接口配置信息中的Token要一致
- private static String token = "999";
- /**
- * 验证签名
- * @param signature
- * @param timestamp
- * @param nonce
- * @return
- */
- public static boolean checkSignature(String signature, String timestamp, String nonce) {
- String[] arr = new String[] { token, timestamp, nonce };
- Arrays.sort(arr);// 将token、timestamp、nonce三个参数进行字典序排序
- StringBuilder content = new StringBuilder();
- for (int i = 0; i < arr.length; i++) {
- content.append(arr[i]);
- }
- MessageDigest md = null;
- String tmpStr = null;
- try {
- md = MessageDigest.getInstance("SHA-1");
- // 将三个参数字符串拼接成一个字符串进行sha1加密
- byte[] digest = md.digest(content.toString().getBytes());
- tmpStr = byteToHex(digest );
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
- return tmpStr != null ? tmpStr.equals(signature) : false;
- }
- //十六进制字节数组转为字符串
- private static String byteToHex(final byte[] hash) {
- Formatter formatter = new Formatter();
- for (byte b : hash) {
- formatter.format("%02x", b);
- }
- String result = formatter.toString();
- formatter.close();
- return result;
- }
- }
二、配置接口信息
点击接口配置信息右侧的修改,填写接口的url和Token(任意填写都可以)提交。这个url用于服务端验证此处配置的Token
点击提交,显示Token验证成功,至此微信公众号测试账号接口配置以及Token验证已经完成,接着为了拥有微信更多的JS接口调用权限,继续按照下面过程配置JS安全接口域名。
三、配置JS接口安全域名
JS接口安全域名右侧的修改,填入上面配置的域名信息(注意是域名,不带http,不带www,例如:baidu.com)
四、配置网页授权
填写安全域名(跟上面的一样,填写域名信息,不带http,不带www)
更多JavaEE资料请关注下面公众号,欢迎广大开发者朋友一起交流。笔者电话(微信):18629374628
springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证相关推荐
- 公众号基本配置(token验证失败)|公众平台测试账号接口配置信息(token验证失败)
1.公众号基本配置(token验证失败) <?php define("TOKEN", "你自己的token");$wechatObj = new Call ...
- 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证
技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本 ...
- 微信公众号开发的测试账号配置
1.首先,你需要一个具有公网IP的域名 例如www.demo.com,它的域名解析的IP是123.123.123.123 2.在微信公众平台登录你的账号 微信公众平台:https://mp.weixi ...
- 阿里云服务器+微信公众号配置(Token验证不通过)
推荐使用CentOS操作系统,本人在使用Ubuntu操作系统时安装第三方软件不是很顺利,导致在微信公众号服务器配置的Token验证失败不通过上浪费大量时间. 以下是 CentOS 和 Ubuntu的介 ...
- rest接口_深度干货 | 测试REST服务接口
openEA开源社区 开源,我们是认真的! 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:较新的BPM版本中,提供了SOAP和REST两种接口,这里我讲下 ...
- 查询话费余额php接口,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...
PHP余额查询接口代码示例 请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://api.weimi.cc/2/accoun ...
- 微信公众号测试账号的接口配置信息配置失败
记录一次配置失败的问题 问题发生环境: 因为项目之前配置是好的,后来域名备案,更换域名后,备案后重新配置,提示报错: 后面怎么调试都不合适,于是想到是否是域名配置时候哪里配置不合适,打开阿里云控制台, ...
- php微信公众号测试账号密码,微信公众号测试账号配置失败竟然是因为一个字符...
开发环境: 1.SAE新浪云平台 2.PHP环境 3.在微信申请了一个测试用的公众平台开发账号 4.从微信官方下载的一个php文档 5.token也是默认的weixin,(这个第一次可以不用改,但如果 ...
- 微信公众平台开发测试账号配置URL失败的问题
配置URL的时候老提示失败,如下图: 解决的办法是:由于我的WSServlet的doGet()方法里面没有返回微信请求的随机字符串 ,在doGet里面添加如下代码 就可以 // 微信加密签名 ...
最新文章
- Hbase原理、基本概念、基本架构
- hdu 1106 排序
- JAVA8 Stream方法使用详解Filter、map等用法(一)
- java读取excel数据保存到数据库中_java读取excel的内容(可保存到数据库中)
- MySQL ACID及四种隔离级别的解释
- my appointment Fiori customizing里的Calendar checkbox的实现逻辑
- 是先打工还是直接创业?答案让我惊呆了!
- python自己重启自己程序_python 自动重启本程序
- 10.java 关键字与保留字
- 【转】Oracle DECODE函数的语法介绍
- 网页设计师必备的35套图标(免费下载)
- Excel 2007中的新文件格式
- Android源码中学习文档如何查看
- testlink xml转excel
- Android音视频开发
- ORACLE 查询表空间使用情况
- win10虚拟机连接不上内网服务器,win10虚拟机网络设置_win10虚拟机怎么连接网络...
- 使用Excel和Tableau分析淘宝母婴产品上新策略
- 用C语言编写高斯消元法解线性方程组
- 西电考研复试操作系统期末题问题——小题总结
热门文章
- 2017年智能家居四大行业预测
- vue element-ui 在el-tabs组件 最右侧添加按钮
- Windows10环境下安装虚拟机virtualbox详解
- JavaWeb(第一实验)---通过Eclipse建立简单登录界面,将jsp技术和html技术结合!(附具体代码)
- 苹果se2_小米学习苹果?即将发布小屏手机,卢伟冰微博喊话网友|卢伟冰|手机|iphone|安卓手机...
- Intel ax200 WiFi6吞吐量测试
- 博士论文致谢火了:“我从来不曾优秀过,也从来不曾放弃过!”
- 怀着忐忑的心情在这里开博啦!
- 经典卷积神经网络总结:LeNet-5、AlexNet、ZFNet、VGG、GoogleNet、ResNet
- Delphi几种程序自杀的方法