java微信开发之接口连接

个人学习注册订阅号就行,把资料尽可能完善,不然开发时权限不够,然后登陆,点击订阅号然后扫码就可以微信关注。

左侧一栏可以做一些操作,当然作为一个程序员还是编码爽,点击“开发”,在“开发者工具”中有开发文档可以研读,在“基本配置“开始正式的开发配置,看图片

url就是微信服务器将消息等传给你的服务器时你的服务器中项目地址,这里不是目录而是地址可以看web.xml中自己接收token的地址,token和项目文件中的token一直即可,其它的有随机生成的,有选择的选择明文即可。这时提交会token验证失败,我用的是ngrok将本地地址(localhost:8080)映射到外网,ngrok显示微信服务器已经发给我的服务器,token验证失败是因为尚未编码,上代码

代码目录

主要代码

       String signature = request.getParameter("signature");//接收微信get请求传过来的签名,
       String timestamp = request.getParameter("timestamp");//接受的签名与时间戳timestamp,nonce随机数,echpstr随机字符串三个经过字典排序,组成一个字符串,然后进行sha1加密,比较一致标示是来自微信的请求
       String nonce = request.getParameter("nonce");
       String echostr = request.getParameter("echostr");
       PrintWriter out = response.getWriter();
       System.out.println("---"+"signature="+signature+"timestamp="+timestamp+"nonce="+nonce+"echostr="+echostr);
       if (this.checkSignature(signature, timestamp, nonce)) {
           out.print(echostr);//只有你返回参数echostr时,他才会认为你这个接口是通的,才会提交成功
       }
        
       out.close();

out = null;

public static boolean checkSignature(String signature, String timestamp, String nonce){
        String[] arr = new String[]{token, timestamp, nonce};//存入数组中
        //字典排序
        Arrays.sort(arr);
         
        StringBuilder content = new StringBuilder();//将三个字符串依次连接为StringBuilder的一个对象
        for(int i = 0; i < arr.length; i++){
            content.append(arr[i]);
        }
        MessageDigest md = null;//java自带的加密类
        String tmpStr = null;
          
        try {
            md = MessageDigest.getInstance("SHA-1");
            //SHA-1加密
            byte[] digest = md.digest(content.toString().getBytes());//对组合后的字符串进行 sha1加密
            tmpStr = byteToStr(digest);//将字节转换为字符串
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        content = null;
        // 比对 判断
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()): false;
    }

private static String byteToStr(byte[] digest) {
         // TODO Auto-generated method stub
         String strDigest = "";
         for(int i = 0; i < digest.length; i++){
             strDigest += byteToHexStr(digest[i]);
         }
         return strDigest;
     }
     private static String byteToHexStr(byte b) {
         
         char[] Digit = {‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘};
         char[] tempArr = new char[2];
         tempArr[0] = Digit[(b >>> 4) & 0X0F];
         tempArr[1] = Digit[b & 0X0F];
           
         String s = new String(tempArr);
         return s;
     }

注意是servlet的get请求地址写对,token一致,地址是80端口并且能 外网访问就没问题了,token就能验证成功。

时间: 2024-11-07 20:30:52

java微信开发之接口连接的相关文章

java微信开发API解析(五)-用户管理

java微信开发API解析(五)-用户管理 全局说明 * 详细说明请参考前两篇文章. 本文说明 *本文分为五部分: * 工具类MyHttpUtils的封装 * 用户分组管理文档的简单阅读解析 * 分组bean的构建以及各种分组管理的实现源码 * 用户管理的应用场景 * 测试的微信号二维码 * 本文只分析用户管理的用户分组管理部分,其它都大同小异,不再分析处理.如需要,请留言. * 以后原理分析会越来越简洁,具体原理分析请查看以前文章. * 下一篇文章会对于用户普通消息.自定义菜单消息.自动完成用

java微信开发API解析(七)-网页开发-微信网页授权

java微信开发API解析(七)-网页开发-微信网页授权 全局说明 * 详细说明请参考前两篇文章. 本文说明 本文主要完成获取用户基本信息的工作,包括(昵称.头像.地址.国家等基本信息) 对于snsapi_base和snsapi_userinfo我们只演示关于snsapi_userinfo.因为snsapi_userinfo更难,如果能够理解snsapi_userinfo,那么snsapi_base不在话下. 对于该部分(微信网页开发)我们只介绍如何获取用户基本信息,对于开发样式库,js-SDK

分享 Java微信开发SDK

分享 Java微信开发SDK •发布于 4周前  •作者 朋也  •432 次浏览  •最后一次编辑是 2周前  •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin weixin-java-tools fastweixin 第一个是jfinal框架开发的微信开发sdk,貌似没什么文档,大家知道哪地方有文档可以在下方留言 第二个是在github上找的,fork人数也不少,文档写的挺好,基于maven方式搭建,开发起来也很方便 第三个是在osc上看到的,可以整合s

java微信开发

所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发. 如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微信公众平台的管理界面,打开开发模式,配置好你的服务器即可. 使用java微信开发,就是你配置的服务器中的应用程序是使用java开发. 使用java开发微信的步骤: 1.进入微信公众平台开启开发模式. 2.搭建你自己的服务器,必须是80端口,且必须有域名. 3.寻找一个快速开发的框架,强烈推荐开源的wecha

java微信开发API解析(六)-综合运用(消息处理、自定义菜单响应处理、用户自动分组处理;包含源码)

java微信开发API解析(六) 全局说明 * 详细说明请参考前两篇文章. 本文说明 * 本文主要是对前面学习的知识进行综合整合. * 我们对需要的bean.工具类.xml.file进行必要的包装. * 我们构建一个可以直接使用的Java微信应用. * 文后包含该部分效果的测试微信公众号 * 文后包含构建好的源码供下载 bean的构建 public class Access_token,获取Access_token对应的bean. private String access_token; pri

java商城开发中的连接池的配置

在对java商城开发以及jsp商城的开发中,连接池的使用以及配置更为重要,为什么会如此说了,下面我们的开发人员就来带大家深入的了解一下java开发过程中的连接池. 数据库每个读写操作需要一个连接,而它的访问流程大概如下: 应用数据层向DataSource请求数据库连接 DataSource使用数据库Driver打开数据库连接 创建数据库连接,打开TCP socket 应用读/写数据库 如果该连接不再需要就关闭连接 关闭socket 容易推断出打开/关闭数据库连接是开销很大的操作.PostgreS

微信开发 消息接口

感觉微信开发就是要调用微信的接口,所以在没安排工作的时候看和试着调用微信接口,调用微信接口需要发送http的get和post请求,所以最好先写个httputil类,专门发送get和post请求,然而我的java网络编程学的并不好,于是百度一些代码,然后自己封装一些,可以正常使用就行了,代码如下 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import

Java微信开发-崔用志-微信开发-java版本

  今天看到一些关于微信开发的知识蛮好的博客,分享给大家,希望对大家有帮助. 微信开发准备(一)--Maven仓库管理新建WEB项目 微信开发准备(二)--springmvc+mybatis项目结构的搭建 微信开发准备(三)--框架以及工具的基本使用 Mybatis工具Generator 微信开发准备(四)--nat123内网地址公网映射实现 Java微信公众平台开发(一)--接入微信公众平台 Java微信公众平台开发(二)--微信服务器post消息体的接收 Java微信公众平台开发(三)--接

java web开发(二) 接口开发

java web开发(一) 环境搭建讲解了如何搭建基础项目,如果你还没了解,可以先去看看!今天我们就来看看接口的开发,打算使用比较古老的或者说比较原始方法实现的接口. 一.数据库设计. 我打算做一个简单的学生信息管理系统,数据库名为students_manage,并且先设计一张学生表,表名为student. 1.打开Sqlyong工具,如果还没创建连接,可以点击新建,输入名称,点击确定即可, 2.然后在保存的连接中选择,刚刚新建的连接,只需要在密码输入框中输入,安装数据库时的设置的密码,点击连接