java微信开发_java微信开发管理平台开源框架 - CSDN
精华内容
参与话题
  • Java+微信公众号开发学习总结(一)

    千次阅读 2018-08-09 16:02:23
    这两天自己想学习微信公众号开发,于是在网上搜索并上手练习,在这个过程中因为各种问题,(描述不完整,有的文章不知道怎么就蹦出个新的常量,也没说在哪定义的,还有jar包版本的问题坑了我一天的时间)所以特此在...

    这两天自己想学习微信公众号开发,于是在网上搜索并上手练习,在这个过程中因为各种问题,(描述不完整,有的文章不知道怎么就蹦出个新的常量,也没说在哪定义的,还有jar包版本的问题坑了我一天的时间)所以特此在这记录。

    1.首先,先得注册一个微信公众号,上度娘搜索微信公众平台,进入这个页面注册(已有账号的跳过这个步骤):

    2.然后用Eclipse新建一个项目,这里我建的是web项目,jdk是1.8,tomcat是8.5.

    3.为了和微信建立连接,建好工程后先新建一个类,命名为:CheckUtil,它的作用是作为和微信连接的校验工具,代码如下:

    import java.security.MessageDigest;
    import java.util.Arrays;
    
    public class CheckUtil {
    	public static final String  tooken = "自行定义"; //开发者自行定义Tooken
    	public static boolean checkSignature(String signature,String timestamp,String nonce){
    		//1.定义数组存放tooken,timestamp,nonce
    		String[] arr = {tooken,timestamp,nonce};
    		//2.对数组进行排序
    		Arrays.sort(arr);
    		//3.生成字符串
    		StringBuffer sb = new StringBuffer();
    		for(String s : arr){
    			sb.append(s);
    		}
    		//4.sha1加密,网上均有现成代码
    		String temp = getSha1(sb.toString());
    		//5.将加密后的字符串,与微信传来的加密签名比较,返回结果
    		return temp.equals(signature);
    	}
    
    	public static String getSha1(String str){
            if(str==null||str.length()==0){
                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 (Exception e) {
                // TODO: handle exception
                return null;
            }
        }
    }

    4.然后新建一个servlet,重写doGet方法接收微信发来的GET请求,部分代码如下:

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		response.setContentType("text/html");
    		String signature = request.getParameter("signature");
    		String timestamp = request.getParameter("timestamp");
    		String nonce = request.getParameter("nonce");
    		String echostr = request.getParameter("echostr");
    		PrintWriter out = response.getWriter();
    		if(CheckUtil.checkSignature(signature, timestamp, nonce)){
    			//如果校验成功,将得到的随机字符串原路返回
    			out.print(echostr);
    		}
    	}

    5.代码写完后,这里需要一个工具将我们的内网链接映射为公网,这样微信才能访问到我们的后台,这里我采用的是一款免费的映射工具ngrok,去度娘搜索下载即可,下载完后解压放在一个指定位置,同时按住win键+R键,输入cmd,回车进入dos环境,切换到ngrock所在盘符,输入ngrock http 8080 回车(在这之前先启动tomcat):

    6.回车后等待一会,即可得到公网链接,下图所示阴影区域给出的链接,即可直接访问本机127.0.0.1:8080下的链接内容,分别是http协议和https协议对应的地址:

    7.登录微信公众号平台,滑到最下面,点击左下角的开发——基本配置:

    点击提交按钮,提示提交成功就说明微信能访问到我们自己的后台了。

    展开全文
  • 转:https://jingyan.baidu.com/article/b907e627b1e4bb46e7891cf0.html在微信开发中,利用微信的接口主动给微信关注用户发送消息。这个主要是利用微信的客服接口来实现该功能,具体的实现如下: /** * 微信公共...

    转:https://jingyan.baidu.com/article/b907e627b1e4bb46e7891cf0.html

    在微信开发中,利用微信的接口主动给微信关注用户发送消息。这个主要是利用微信的客服接口来实现该功能,具体的实现如下:

        /**

         * 微信公共账号发送给账号

         * @param content 文本内容

         * @param toUser 微信用户  

         * @return

         */

        public  void sendTextMessageToUser(String content,String toUser){

           String json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"text\", \"text\": {\"content\": \""+content+"\"}}";

           //获取access_token

           GetExistAccessToken getExistAccessToken = GetExistAccessToken.getInstance();

           String accessToken = getExistAccessToken.getExistAccessToken();

           //获取请求路径

           String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+accessToken;

           System.out.println("json:"+json);

           try {

               connectWeiXinInterface(action,json);

           } catch (Exception e) {

               e.printStackTrace();

           }

       }

        /**

         * 微信公共账号发送给账号(本方法限制使用的消息类型是语音或者图片)

         * @param mediaId 图片或者语音内容

         * @param toUser 微信用户  

         * @param messageType 消息类型

         * @return

         */

        public  void sendPicOrVoiceMessageToUser(String mediaId,String toUser,String msgType){

            String json=null;

            if(msgType.equals(REQ_MESSAGE_TYPE_IMAGE)){

                 json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"image\", \"image\": {\"media_id\": \""+mediaId+"\"}}";

            }else if(msgType.equals(REQ_MESSAGE_TYPE_VOICE)){

                json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"voice\", \"voice\": {\"media_id\": \""+mediaId+"\"}}";

            }

            //获取access_token

           GetExistAccessToken getExistAccessToken = GetExistAccessToken.getInstance();

           String accessToken = getExistAccessToken.getExistAccessToken();

           //获取请求路径

           String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+accessToken;

           try {

               connectWeiXinInterface(action,json);

           } catch (Exception e) {

               e.printStackTrace();

           }

       }

        /**

         *  发送图文给所有的用户

         * @param openId 用户的id

         */

        public  void sendNewsToUser(String openId){

            MediaUtil mediaUtil = MediaUtil.getInstance();

            ArrayList<Object> articles = new ArrayList<Object>();

           Article a = new Article();

           articles.add(a);

           String str = JsonUtil.getJsonStrFromList(articles);

            String json = "{\"touser\":\""+openId+"\",\"msgtype\":\"news\",\"news\":" +

                    "{\"articles\":" +str +"}"+"}";

            json = json.replace("picUrl", "picurl");

            System.out.println(json);

            //获取access_token

           String access_token = mediaUtil.getAccess_token();

           //获取请求路径

           String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+access_token;

           try {

               connectWeiXinInterface(action,json);

           } catch (Exception e) {

               e.printStackTrace();

           }

        }

        /**

         * 连接请求微信后台接口

         * @param action 接口url

         * @param json  请求接口传送的json字符串

         */

        public  void connectWeiXinInterface(String action,String json){

            URL url;

           try {

               url = new URL(action);

               HttpURLConnection http = (HttpURLConnection) url.openConnection();

               http.setRequestMethod("POST");

               http.setRequestProperty("Content-Type",

                       "application/x-www-form-urlencoded");

               http.setDoOutput(true);

               http.setDoInput(true);

               System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒

               System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒

               http.connect();

               OutputStream os = http.getOutputStream();

               os.write(json.getBytes("UTF-8"));// 传入参数

               InputStream is = http.getInputStream();

               int size = is.available();

               byte[] jsonBytes = new byte[size];

               is.read(jsonBytes);

               String result = new String(jsonBytes, "UTF-8");

               System.out.println("请求返回结果:"+result);

               os.flush();

               os.close();

           } catch (Exception e) {

               e.printStackTrace();

           }

        }


    展开全文
  • java语言开发微信小程序(一)

    千次阅读 2018-10-10 17:14:29
    出于兴趣,自己用java搞了一次小程序,现在记录下来,就权当笔记吧。当然也希望能给看到这篇文章的同志一些帮助。这篇文章分两部分,这部分先介绍小程序开发的一些基础知识,包括需要做的准备。按照习惯,先贴一个小...

    出于兴趣,自己用java搞了一次小程序,现在记录下来,就权当笔记吧。当然也希望能给看到这篇文章的同志一些帮助。这篇文章分两部分,这部分先介绍小程序开发的一些基础知识,包括需要做的准备。按照习惯,先贴一个小程序的文档链接,API.小程序

    注册小程序

    要开发,首先自然需要有一个账号。在浏览器搜索“微信公众平台”,或者直接访问https://mp.weixin.qq.com/,可以看到账号分三类:服务号,订阅号和小程序。前两者这里不多说,直接点击小程序进去注册即可。

    配置服务器

    小程序本身已经提供了很多接口,可以满足开发者大部分需要。但是如果已经有实现了的服务,那么在小程序里只需要调用服务接口就可以了(甚至可以用已经写好的网页)。如果正好有这方面的需求,那么首先需要在小程序控制台做相关的配置

    1. appid和秘钥

    进入菜单 设置——》开发设置
    首先在开发者ID可以获取appID和秘钥(AppSecret)。appid是小程序的唯一标识,在开发中需要用到。

    1. 服务器域名

    进入菜单 设置——》开发设置
    服务器域名做相关的配置。 其中request合法域名就是java的服务接口部署的服务器域名,如果有上传下载文件等特殊的需求,也可以配置相应的服务器。我的小程序用到了引用的web-view,所以还配置了业务域名。如果是在测试环境,可以用ngrok映射一个域名,但是需要注意,微信公众号和小程序的域名都必须用https协议,所以不管是自己生成还是购买,都是必须装SSL证书的

    有关生成SSL证书的操作,可以看我另外一篇文章(也是转载别人的),可以点这里

    关联设置

    设置——》关联设置 可以将小程序和公众号以及开放平台绑定到一起。当然这样做是有意义的,比如公众号支持在菜单里跳转小程序,小程序中也可以跳转进入公众号。最重要的原因是微信的unionid的使用机制,如果要获取用户的unionid,就必须将公众号和小程序绑定到开放平台。这里要说一点我遇到的问题,就是如果用户只用了你的小程序,而没有关注你的公众号,那么还是无法获取到unionid的

    协助开发

    如果需要一个团队时,那么需要保证成员们有开发的权限,进入小程序首页,点击 用户身份 ,可以添加用户成员,给其赋予相关的权限即可,一般情况下,赋予以下几种应该就可以满足了

    开发者工具

    微信公众平台官网提供 微信web开发者工具,直接下载安装就可使用。这里可以直接看官方文档安装开发者工具

    项目结构

    根据这个链接,创建一个简单的小程序,然后就可以看一下项目的构成。具体的细节可以看文档,这里只说几个我个人认为值得注意的点。

    1. project.config.json文件

    根据文档说的,这个文件是保存一些个性化的设置,其中 appid 这个属性就是上面提到的appid。根据这个东西,项目完成之后,从开发工具向小程序控制台上传时才会知道项目的身份,即它属于哪个账号。当然了,如果把这个值改一下,那开发人员根本就打不开这个项目。

    1. app.json文件

    所有页面都必须写进pages数组,注意不能写后缀。因为开发者没创建一个wxml文件,都会自动生成js,json和wxss文件,所以pages数组中的元素,只需要根据文件名就会找到这四个不同类型的文件。
    tabBar对象就是定义的导航菜单,需要把点击导向的页面定义在list数组中。

    1. app.js文件

    这个文件有一个globleData对象,里面定义小程序的全局变量,可以在任何页面去使用,比如可能需要在这里定义baseurl,或者用户信息等公共数据。需要注意,如果要使用app.js定义的内容,首先需要在使用的页面获取应用实例 const app = getApp(),然后可以使用例如 app.globleData.全局变量名 的用法。

    展开全文
  • Java微信公众号开发

    2020-07-30 23:32:04
    项目框架SpringMVC+Mybatis,微信工具jar包引用 配置集成微信工具 微信公众号参数配置 开发接入 主入口接口 接入,消息处理等
  • 为帮助开发者更方便、更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调试工作。你可以...

    为帮助开发者更方便、更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调试工作。你可以:

    •     使用自己的微信号来调试微信网页授权

    •     调试、检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出

    •     使用基于 weinre 的移动调试功能

    •     利用集成的 Chrome DevTools 协助开发 

    该工具界面主要由几大部分组成,如下图所示:

    1.jpg

    顶部菜单栏是刷新、后退、选中地址栏等动作的统一入口,以及微信客户端版本的模拟设置页。左侧是微信的 webview 模拟器,可以直接操作网页,模拟用户真实行为。右侧上方是地址栏,用于输入待调试的页面链接,以及清除缓存按钮。右侧下方是相关的请求和返回结果,以及调试界面和登录按钮。

    (一)调试微信网页授权

    之前在开发基于微信的网页授权的功能时,开发者通常需要手机上输入 URL 进而获取用户信息,从而进行开发和调试工作,可是因为手机的诸多限制,这个过程很不方便。 通过使用微信 web 开发者工具,从此开发者可以直接在 PC 或者 Mac 上进行这种调试了。具体操作步骤为:

    ①开发者可以在调试器中点击“登录”,使用手机微信扫码登录,从而使用真实的用户身份(支持测试号)来开发和调试微信网页授权。请确认手机登录页,绑定的公众号为“微信 web 开发者工具”,如下图所示: 

    2.jpg

    ②为了保证开发者身份信息的安全,对于希望调试的公众号,我们要求开发者微信号与之建立绑定关系。具体操作为:公众号登录管理后台,启用开发者中心,在开发者工具——web 开发者工具页面,向开发者微信号发送绑定邀请。绑定页面如下图所示: 

    3.jpg

    ③开发者在手机微信上接受邀请,即可完成绑定。每个公众号最多可同时绑定10个开发者微信号。邀请确认页面如下图所示:

    4.jpg

    ④完成登录和绑定后,开发者就可以开始调试微信网页授权了,注意只能调试自己绑定过的公众号,在微信 web 开发者工具中打开类似的授权页 URL,webview 模拟器显示效果如图:

    5.2.png

    (二)模拟JSSDK权限校验

    通过 web 开发者工具,可以模拟 JSSDK 在微信客户端中的请求,并直观地看到鉴权结果和 log。以微信 JSSDK DEMO 页面为例:http://demo.open.weixin.qq.com/jssdk  在调试器中打开该 URL,可以方便地在右侧的 JS-SDK Tab 中看到当前页面 wx.config 的校验情况和 JSSDK 的调用 log。 如下是校验通过的页面:

    6.jpg

    如下是校验未通过的页面:

    7.jpg

    在“权限列表” Tab 中,可以查询到当前页面拥有权限的 JS-SDK 列表:

    8.jpg

    (三)移动调试

    我移动调试从来就没有成功过,所以这里不做说明!

    (四)Chrome DevTools

    微信 web 开发者工具集成了 Chrome DevTools。同之前在 PC 上的调试体验一致,可以快速上手。如下图所示:

    9.jpg

    下载地址:http://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html#.E4.B8.8B.E8.BD.BD.E5.9C.B0.E5.9D.80 

    微信web开发者工具使用的简单介绍就到这里,感谢你的翻阅,如果你有所疑问可以留言讨论!

    展开全文
  • java开发Demo~微信扫码登录demo

    万次阅读 热门讨论 2018-04-17 15:22:34
    这一切的前提,请将微信公众平台 全部配好。(这个公众平台配明白,不容易的) 开发所需15个工具类 可以在我的资源中下载 详细代码不写 说明下WeiXinUtil.java中的参数 Ip白名单页数需要设置的,否则会...
  • 1.开发语言使用Java  2.使用微信接口测试账号进行本地测试  3.使用natapp(原ngrok)将本地地址映射到外网地址实现微信公众号的本地调试 准备工作 最近学习微信公众平台的开发,在申请一个微信公众号的时候,...
  • Java微信公众号开发之接入

    万次阅读 多人点赞 2018-02-06 10:22:29
    微信公众号
  • Java开发微信公众号(一)——微信开发环境搭建

    万次阅读 多人点赞 2017-12-10 16:32:22
    1.开发语言使用Java 2.使用微信接口测试账号进行本地测试 3.使用natapp(原ngrok)将本地地址映射到外网地址实现微信公众号的本地调试 准备工作最近学习微信公众平台的开发,在申请一个微信公众号的时候,发现...
  • Java微信公众号开发(一:接入平台,验证token) 开发环境: 环境:JDK1.8 框架:springBoot 首先,在我们接入微信公众平台之前,我们需要注册微信公众号的开发者账号,获取开发者ID(AppID),并设置你自己的开发者...
  • 这里开始开发啦,请主动打开发文档! 我们先了解一下系统的原理:(摘取于https://www.cnblogs.com/mydomain/p/8303736.html) 微信公众平台的数据交互线路一般按照“微信用户客户端—微信服务器(我的公众号)—网...
  • 后台技术选型: JDK8 MySQL ... 微信小程序 小程序端 扫码点餐 菜品分类显示 模拟支付 评论系统 购物车
  • 微信小程序java开发流程分享

    万次阅读 2017-06-05 09:49:46
    前段时间,我接触了微信开发小程序,在开发过程中,我不得不承认微信小程序开发的简单粗暴,不多说,直接hight。 微信小程序可以去公众平台下载。有64位和32位的。在这里我就不多哔哔了。 下载完微信小程序后,...
  • 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解...
  • 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解...
  • 微信开发本地调试工具(模拟微信客户端)开源免费微信管家系统(java)源码下载微信部署需要依靠80端口,如何快速有效的调试本地微信开发程序,捷微团队(jeewx-java微信开源系统),采用微信开发调试工具,供本地...
  • 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解...
  • 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 详情 qq2326321088
  • 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解...
  • 微信公众平台企业号实战项目开发_校信通,讲解微信企业号开发实战项目。从项目角度,重点讲解微信web开发的相关知识点。
1 2 3 4 5 ... 20
收藏数 105,388
精华内容 42,155
关键字:

java微信开发