java微信公众号开发源码下载

刚做完微信公众号项目,分享一下代码,经验!初写博客,格式写得不好,还请见谅。有不懂的可以留言或加qq 505281494交流下。

一.

第一步进行服务器接口配置,提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

(对应github源码中的WXCommon.Validate方法,token需在此方法中配置  与填写一致)

本地调试就需要做端口映射到外网,推荐ngrok,需指定80端口

(微信公众平台会通过80端口访问本机)

如果启用安全模式 可能遇到的问题:

消息的加解密接口JCE无限制权限策略

java.security.InvalidKeyException:illegalKey Size

异常java.security.InvalidKeyException:illegalKey Size的解决方案:

在官方网站下载JCE无限制权限策略文件,下载对应的jdk版本后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME% \lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

二:接口配置成功后,微信公众号接收到的消息和事件推送都会以Xml数据包通过POST请求发送到此接口。如:

详情见微信开发者文档。

github中源码中的工具包(MessageUtil)

parseXMLCrypt方法:安全模式下解析XML消息,然后封装到一个map中。

ParseXML方法:明文模式下解析XML消息

getTextXmlMessage,getVoiceXmlMessage等方法:获取文本,声音回复的XML格式消息。(回复消息时需交换接收时XML的ToUserName和FromUserName)。

可根据消息,事件的XML标签内容不同判断用户的操作,然后回复相应的消息。尽量先回复消息,再处理之后的业务。因为:

三:接口调用

WXCommonUtil. Getaccess_token:

首先获得接口调用凭证。有效期:2小时。  存进redis中,设置过期时间。(需要appid和appsecret)

HttpRequestUtil.httpsRequest方法:

/**

* 发送https请求

*

*@param requestUrl 请求地址

*@param requestMethod 请求方式(GET、POST)

*@param postStr 提交的数据

*@return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)

*/

MyX509TrustManager类:

发送Https请求时的证书信任管理器类,实现了接口X509TrustManager的类。  接口X509TrustManager有下述三个公有的方法需要我们实现:

  ⑴ oid checkClientTrusted(X509Certificate[]chain, String authType)

throws CertificateException

  该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,因此我们只需要执行默认的信任管理器的这个方法。JSSE中,默认的信任管理器类为TrustManager。

  ⑵ oid checkServerTrusted(X509Certificate[]chain, String authType)

throwsCertificateException

  该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。

  ⑶ X509Certificate[] getAcceptedIssuers()

返回受信任的X509证书数组。

一些常用的接口:(需用到access_token)

1.    根据openid获取用户消息

2.    发送模板消息

3.    自定义菜单

4.    获取用户列表

四.微信网页授权登录和带参数的二维码:

1.授权登录跳转网址:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

获取code后请求以下链接

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

可得到:

带参数的二维码:

然后会得到

url则为二维码的链接地址。

java微信公众号开发及源码分享相关推荐

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

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

  2. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  3. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  4. 微信公众号引流源码?基本上没啥用!

    简介: 微信公众号引流源码?基本上没啥用! 这套源码可以对接微信公众号,给公众号引流也是个不错的选择 源码的bug基本上我都已经修复了,可以正常使用. 附带网盘下载地址: http://www.rry ...

  5. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  6. Java微信公众号开发(一:接入平台,验证token)

    Java微信公众号开发(一:接入平台,验证token) 开发环境: 环境:JDK1.8 框架:springBoot 首先,在我们接入微信公众平台之前,我们需要注册微信公众号的开发者账号,获取开发者ID ...

  7. 分享一套微信门户应用管理系统源码 微信公众号平台开发框架源码

    微信门户开发框架源码 微信公众号平台开发框架源码 源码分享,需要源码学习可私信我获取. 微信门户应用管理系统,采用基于 MVC + Bootstrap + Ajax + Enterprise Libr ...

  8. JAVA微信公众号开发第8篇JSSDK图片上传预览

    简介 博主微信JSSDK&图片上传预览基于微信分享做拓展,所以一些配置操作请点击查阅JAVA微信公众号开发第7篇JSSDK&微信分享博文 页面 <html><head ...

  9. Java微信公众号开发(附源码!!!)

    笔者最近在为一个艺考服务团队开发手机端的服务,由于开发app需要的时间较长,所以选择开发微信公众号.本人比较擅长Java开发,所以本文是基于Java语言的公众号开发.话不多说,直接进入正题. 准备工作 ...

最新文章

  1. php mysql设置null,MySQL和PHP – 插入NULL而不是空string
  2. springboot 主键重复导致数据重复_Springboot实现防重复提交和防重复点击(附源码)...
  3. Verilog以及VHDL所倡导的的代码准则
  4. servlet之servletResponse
  5. 重构alert,confirm
  6. 聊聊flink Table的ScalarFunction
  7. 应用于CDN的GSLB系统
  8. 已知可生成0~4的rand5(),实现生成0~6的rand7()
  9. iOS新版微信底部返回横条问题
  10. PMP读书笔记(第6章)
  11. 用带参数的方法给空数组放元素,寻找数组里面的值是否存在。
  12. 给python小白的几个小练习(附答案详解哦)
  13. ObjC学习2-语法循环、条件,原来像学C语言一样啊!
  14. Java中的自动拆箱装箱(AutoboxingUnboxing)
  15. Q96:PT(3):基于噪声的纹理(Noise-Based Textures)(0)——概述
  16. 杭电计算机2016年机试真题详解
  17. asm冗余 oracle_ORACLE 11G RAC ASM磁盘的三种冗余模式
  18. Schwartz-Zippel Lemma
  19. C# dataGridView上下移动选中行
  20. nginx代理内网1521,3306数据库端口

热门文章

  1. python语法基础知识第四关第二题_Python基础语法习题二
  2. 基于插件式的开发框架
  3. 分享个自己开发的夸克网盘资源搜索引擎
  4. 王树森:学 DRL 走过的弯路太多,想让大家避开
  5. 《策略驱动型数据中心——ACI技术详解》——1.3 数据中心设计
  6. JavaScript 内存溢出解决办法 亲测有效
  7. CodeLab:Android fundamentals 04.2:Input controls
  8. NetworkManager network-manager 的 /etc/NetworkManager/system-connections/*.nmconnection
  9. 一个有意思的404页面
  10. 商业贷款买房的7个步骤