java微信公众号开发及源码分享


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则为二维码的链接地址。

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页