现在实习的公司要做微信开发,然而一直没安排任务,所以一直在看微信接口,记录下学习的内容

微信开发肯定要看的就是微信公众平台开发者文档,上面有每种接口的调用格式,刚开始学习的时候自己申请了一个订阅号,个人类型的,这个玩玩还可以,学习的话,貌似有点接口没有权限调用,所以我学习的时候是用的微信测试号,至于测试号的申请,很简单,在文档里面,开发者工具下面就可以看到。

微信开发,第一步,接入指南,看文档上面的

当然,弄这个之前要有一个服务器,或者就应用放在网上,微信后台其实和网站开发后台差不多

url填写域名加action的地址,比如说我的一个servlet ,

@WebServlet("/msg")
public class TestWeixin extends HttpServlet {

那么我的url就应该填写 域名/msg

token是用来校验请求是不是微信服务器发过来的,这里填写的token就是程序里面用的token,

至于EncodingAESKey 随机生成,我自己测试接口的时候没用这个,是以明文形式,真正开发的时候应该会用这个,我还没接触正在的微信开发。

填写完提交后,微信服务器会根据填写的url发get请求,带上4个参数signature,timestamp,nonce,echostr

参数的作用,我就抄开发者文档的:

signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

timestamp:时间戳

nonce:随机数

echostr:随机字符串

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

加密后的字符串和signature相等,则返回echostr,此时校验成功

根据上面的步骤,可以看到,微信服务器是判断是否校验成功 是 根据 是否返回 echostr这个随机字符串的,

如果不进行校验,直接把得到的echostr返回给微信服务器也是可以校验成功的。当然,最好还是进行校验。

校验的代码,就是新建一个servlet

在doGet方法里面进行校验

@WebServlet("/msg")
public class TestWeixin extends HttpServlet {private static final long serialVersionUID = 1L;private String TOKEN = "luolei";/*** @see HttpServlet#HttpServlet()*/public TestWeixin() {super();// TODO Auto-generated constructor stub
    }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");String[] str={TOKEN,timestamp,nonce};Arrays.sort(str);String yanzheng = str[0]+str[1]+str[2];String result = DigestUtils.sha1Hex(yanzheng.getBytes());if(result.equals(signature)){response.getWriter().print(echostr);}}

上面的 token换成自己的token

还有DigestUtils.sha1Hex()方法 是commons-codec  jar包里面的类。可以自己搜索怎么sha1加密,

刚刚说了,可以不进行校验,doget里面只留:

String echostr = request.getParameter("echostr");

response.getWriter().print(echostr);

这两行也是可以校验成功的

最后上传服务器,我是用bae应用引擎,上传应用,将得到的二级域名+action的key填到url里面,token按照情况自己填写,就可以了

转载于:https://www.cnblogs.com/luolei/p/4682647.html

java微信学习 接入相关推荐

  1. java微信企业号接入_微信企业号登录授权Java实现根据userid换openid

    前提是授权先获取到userid  代码在这里http://my.oschina.net/xshuai/blog/497300 根据userid换取openid 需要第三步里面的方法.自己拼接json格 ...

  2. java微信开发平台_Java微信公众平台开发(1) 接入微信公众平台

    前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 通 ...

  3. JAVA微信小程序在线教育视频学习小程序系统毕业设计 开题报告

    本文给出的java微信小程序系统毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序视频点播系统,前台用户使用 ...

  4. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  5. Java微信公众号开发之微信公众平台接入开发者

    微信开发者接入官方文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 一.微信公共号通讯机制 作为开发 ...

  6. JAVA微信开发-新手接入指南

    相信很多人对微信开发已经不那么陌生,我也是从一个微信开发的菜鸟经过各种问题的折磨,然后去搜索引擎搜索各种文章阅读,但是基本都是零散的资料,没有一个统一.系统的阐述微信应用如何开发.作者结合自己的实际开 ...

  7. Java微信公众平台开发(一)--接入微信公众平台

    转载自崔用志博客:http://www.cuiyongzhi.com/ 前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我 ...

  8. Java微信公众平台开发(一)——接入微信公众平台

    前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 在 ...

  9. 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)

    微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java) 使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码 ...

最新文章

  1. LeetCode_每日一题今日份_343.整除拆分
  2. VUE安装依赖命令总结
  3. Python学习笔记(序列和元组)
  4. java代下订单管理模块_用java语言开发一个订单管理系统
  5. 当Typora开始收费,开源免费的MarkText编辑器火了:一周新增2k+star
  6. Option,Some,None
  7. input最大长度限制问题
  8. HoloLens开发手记 - 使用混合现实捕捉 Using mixed reality capture
  9. Java 8 异步 API、循环、日期,用好提高生产力!
  10. Diablo III 卡Checking for updates的问题解决
  11. 需求分析解决方案文案,展示图文结合的文案的视觉感。运用屏幕摄影师Snaglt实现屏幕图像文本捕获与编辑,为技术文案的编写提供素材支持。
  12. 求助微软商店下载的Ubuntu打开后显示目标路径参数错误,进入路径强制打开显示0x80070005错误。各种方法都试验了
  13. 过年倒计时 java swing 附源码
  14. Qt编写可视化大屏电子看板系统2-配色方案
  15. 财务需要哪些计算机能力,建设财务共享中心,财务人员应具备哪些能力?
  16. Typora:Typora快捷键
  17. 在线文件/文档预览/分页分片预览 之开源kkfileview(word转pdf,pdf截取,pdf转图片,Aspose jobConverter , OpenOffice ,libreoffice )
  18. python 仪表盘图片读数_OpenCV 表盘指针自动读数的示例代码
  19. c#中将一个实体类复制到另一个实体类
  20. 使用Excel下载数据库里的数据

热门文章

  1. 用SQL语句更改数据库名,表名,列名
  2. Gridview SummaryItem 格式化数字
  3. Hadoop localhost: frankxulei@localhost: Permission denied (publickey,password)
  4. WEB/H5性能优化总结
  5. 软件工程15 个人阅读作业1
  6. redhat oracle 开机自启动
  7. 分布式 ID的 9 种生成方式
  8. Mysql1 晨考题
  9. python红楼梦词频统计_用 Python 分析《红楼梦》(2)-阿里云开发者社区
  10. 镜像上传到linux失败,Docker push镜像失败解决方法