配置微信公众号二次开发接口java代码
来源:互联网 发布:淘宝森女部落 编辑:程序博客网 时间:2024/05/22 01:57
想做微信二次开发的朋友、看完这篇、配置接口应该没问题了。
微信公众平台开发概述
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读本接口文档来帮助开发。
为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。
请开发者注意:
1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。
2、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。
3、在开发过程中,可以使用接口调试工具来在线调试某些接口。
4、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。
5、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台官网-开发者中心处可以设置接口报警),来发现和解决问题。
6、公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。
7、公众平台接口调用仅支持80端口。
接入概述
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
下面详细介绍这3个步骤。
第一步:填写服务器配置
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。
servlet类
<span style="font-size:18px;">package com.wexin;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.czy.util.CheckUtil;/** * Servlet implementation class Test * @author 陈郑游 * 2016-05-14 */public class Test extends HttpServlet {private static final long serialVersionUID = 1L; /** * 接口验证接口 * * */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();//获取属性:微信加密签名|时间戳|随机数|随机字符串String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");//判断输出字符串if(CheckUtil.checkSignature(signature,timestamp,nonce)){out.print(echostr);}}/** * 请求响应 * * */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 将请求、响应的编码均设置为UTF-8(防止中文乱码)request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");// 调用核心业务类接收消息、处理消息String testservice = TestService.processRequest(request);// 响应消息PrintWriter out = response.getWriter();out.print(testservice);out.close();//后台测试System.out.println(testservice);}}</span>
token、字符串排序
<span style="font-size:18px;">package com.czy.util;import java.util.Arrays;/** * 连接微信接口工具类: * 开发者通过检验signature对请求进行校验(下面有校验方式)。 * 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容, * 则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下: *1)将token、timestamp、nonce三个参数进行字典序排序 *2)将三个参数字符串拼接成一个字符串进行sha1加密 *3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 * * */public class CheckUtil {private static final String token = "chenzy";//获取三个参数public static boolean checkSignature(String signature,String timestamp,String nonce){//数组String[] arr=new String[]{token,timestamp,nonce};//排序(将token、timestamp、nonce三个参数进行字典序排序)Arrays.sort(arr);//生成字符串StringBuffer content = new StringBuffer();for (int i = 0; i < arr.length; i++) {content.append(arr[i]);}//sha1加密(将三个参数字符串拼接成一个字符串进行sha1加密)String temp = sha1Dom.getSha1(content.toString());//返回signature(开发者获得加密后的字符串可与signature对比,标识该请求来源于微信)return temp.equals(signature);}}</span>
sha1加密代码:工具包(网上都有下载就好了)
<span style="font-size:18px;">package com.czy.util.dom;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;//sha1加密代码:工具包public class sha1Dom {//sha1加密public static String getSha1(String str){ if (null == str || 0 == str.length()){ return null; } char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char[] buf = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }return null;}}</span>
在介绍一个映射工具:ngrok
为给url做映射用的:
http://www.tunnel.mobi/ 自己下载
在CMD命令中先切换到ngrok所在的位置再进行如下操作
方法一:ngrok 8080(该方法已被和谐掉了)
方法二:ngrok -config ngrok.cfg -subdomain example 80
说明:
example-自己任意设置;
8080-tomcat的端口号
- 配置微信公众号二次开发接口java代码
- java二次开发微信公众号授权
- 微信公众平台二次开发JAVA
- java微信公众号支付接口
- Java开发微信公众号-接口测试帐号接口配置及Java源代码
- 微信公众号二次开发(1)
- 微信公众号二次开发(2)
- 微信公众号二次开发框架-微擎
- 微信公众号配置JAVA
- 微信公众号PHP接口校验代码
- 微信公众测试号使用Java Spring MVC,接口配置token验证。
- 微信公众号接口配置信息失败 tp3.2
- 微信公众号接口调用配置常见误区
- 微信公众帐号开发-接口配置
- 微信公众号开发接口指南(java实现)
- Java微信开发之公众号支付接口
- 微信公众号开发---红包高级接口(java)
- java 微信公众号支付接口开发总结
- haproxy /admin跳转 不会在接口上再次加上admin
- Activity 与Fragments 使用总结
- SDUT 1269 走迷宫
- Android 获得手机信息工具类
- matlab调用opencv的函数
- 配置微信公众号二次开发接口java代码
- 699 - The Falling Leaves
- SQlite数据库使用总结
- 百炼 1753:Flip Game
- MeanJS配置经验
- 手动创建活动(activity)--1
- CentOS搭建NTP服务器
- SDUT 1304 取数字
- git 常用命令