在二次开发微信,首先要成为微信开发者,在微信开发者平台注册,还要注册一个微信公众号,注册过程很简单,唯一的要求就是要绑定银行卡的微信账号扫一下二维码.然后就能注册成功微信公众号了.
在注册微信公众号之后有两种模式,一个是编辑模式,还有一个就是开发者模式.编辑模式其实也是一个后台操作的过程,在编辑模式下基本上一些基本的功能都能实现,像关键字回复,被关注的时候回复,还有订阅号每天能够推送一条信息给关注此微信的人,这些功能都能符合宣传人的功能,但是我们是开发者,怎么能满足于这些了,我们要动态信息,比如像用户发送一个地名回复那个地名的天气等.
在正式开发的过程中我们首先要搭建好我们的环境,首先我是准备将我的项目上传到百度BAE上面,需要费用,但是每天只要四毛钱,但是我首先还是没有直接将应用上传上去,我是使用一个工具将我自己的ip地址映射到公网上面去的,然后自己打开tomcat,通过映射的地址就能访问到我电脑的应用.
前面有一个很好用的工具,但是现在好像是没用了,我是用的这个ngrok.exe,这个工具的服务器是在美国所以用起来有点慢,但是我觉得是很是适合我们初学者使用,错误能在MyEclipse控制台打印.便于调错!
使用方法:
打开cmd,将目录切到此工具的目录下面
输入nrgok 端口号(tomcat的端口号)然后回车:
然后就会显示映射的地址了
复制http:一直到->前就是你将本地的应用映射到公网的网址了,加上你的项目名,就能访问到应用了


然后在开启开发者模式首先要这几个步骤:
第一步:填写服务器配置:
将映射的地址接上项目名然后加上servlet的访问名字
第二步:验证服务器地址的有效性
由于验证是GET方法,所以在servlet中doGet()方法中实现:
第三步:依据接口文档实现业务逻辑
验证的具体步骤:
1.在doGet方法中获取到微信服务器中发过去的数据,有这几个数据:
signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp:时间戳
nonce::随机数
echostr:随机字符串
2.在request中获取到这几个数据后,创建一个验证的方法传入signature,nonce,timestamp,创建一个token(可以随便写,但是要和微信填写url的时候的token是一样的)
3.验证方法:
贴代码吧:

private static final String TOKEN="weixin";public static boolean cheackWeinxi(String signature,String nonce,String timestamp){//将数据存到一个数组中String[] arr=new String[]{TOKEN,timestamp,nonce};//排序Arrays.sort(arr);//生成字符串StringBuffer sbf=new StringBuffer();for(int i=0;i<arr.length;i++){sbf.append(arr[i]);}String content=sbf.toString();String con=null;try {MessageDigest md=MessageDigest.getInstance("SHA-1");//拼接后额字符串进行sha1byte[] digest=md.digest(content.toString().getBytes());con=byteTOStr(digest);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return con.equals(signature.toUpperCase());}private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',  '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; private static String byteTOStr(byte[] arrs){String strs="";for(int i=0;i<arrs.length;i++){strs+=byteToHexStr(arrs[i]);}return strs;}/*** 将字节转换成十六进制的字符* @param by* @return*/private static String byteToHexStr(byte by){char[] tempArr=new char[2];tempArr[0]=HEX_DIGITS[(by>>>4) & 0X0F];tempArr[1]=HEX_DIGITS[by & 0X0F];String s=new String(tempArr);return s;}private static String getFormattedText(byte[] bytes) {  int len = bytes.length;  StringBuilder buf = new StringBuilder(len * 2);  // 把密文转换成十六进制的字符串形式  for (int j = 0; j < len; j++) {  buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0X0F]);  buf.append(HEX_DIGITS[bytes[j] & 0X0F]);  }  return buf.toString();  }  public static String encode(String str) {  if (str == null) {  return null;  }  try {  MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");  messageDigest.update(str.getBytes());  return getFormattedText(messageDigest.digest());  } catch (Exception e) {  throw new RuntimeException(e);  }  }  

在servlet中判断,如果是真则返回echostr,则验证成功,
然后在微信的后台会提醒你验证成功!
写这个博客只是让我以后没有事可以看看,不喜勿喷!

自学微信二次开发(1)相关推荐

  1. 微信二次开发SDK使用教程--手机检测到有人点赞/取消点赞通知服务端

    微信二次开发SDK使用教程--手机检测到有人点赞/取消点赞通知服务端 case CircleLikeNotice : {//手机检测到有人点赞/取消点赞通知 log.debug("socke ...

  2. JEECG开源社区, 成立了微信二次开发项目,欢迎有兴趣朋友参与

    JEECG的"微网站""微应用"案例终于出炉了,大家速来围观        功能点:         微网站:一个微信网站         微应用:我的楼盘  ...

  3. 微信网站-微信应用-微信二次开发-演示方案

    JEECG的"微网站""微应用"案例终于出炉了,大家速来围观        功能点:         微网站:一个微信网站         微应用:我的楼盘 功 ...

  4. windows版微信Hook开发SDK之C#版-微信二次开发

    微信二次开发,对接你的系统! 功能列表: 提醒功能 比如淘宝,京东,拼多有订单了,通过微信机器人去提醒供应商发货. 比如生日快到,微信提醒谁要过生日了. 提醒女朋友,每天早上自动给女朋友们提醒早上好, ...

  5. 聚播群控微信二次开发sdk完整API

    聚播群控微信二次开发sdk完整API功能: 微信加好友功能API 1.导入手机通讯录 2.手机通讯录加好友 3.加指定微信群好友 4.自动通过微信好友请求 5.手机模拟定位 6.附近人加好友 7.各种 ...

  6. java获取微信xml数据格式的文件_(5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

  7. 微信API接口、微信二次开发API调用

    微信API接口.微信二次开发API调用 微信协议接口调用-加微信好友及通过好友请求 加微信好友 /**       * 微信自动添加好友      * @author wechatno:tangjin ...

  8. 自学微信小程序开发第四天-研究弹性盒子(FlexBox)的伸缩布局,微信小程序的CSS使用实例

    @TOC 组件都了解的差不多了,下面就是页面整体布局设计了.在HTML中,使用的是DIV + CSS的布局方式,也可以用在小程序里.不过因为移动端的分辨率不统一,使得布局的自适应十分重要.所以研究一下 ...

  9. 自学微信小程序开发第五天- 页面切换相关

    自学微信小程序开发第五天- 页面切换相关 创建多个页面 页面间跳转 页面间传值 另一个页面跳转的方式(重定向) 点击跳转元素时的样式 导航API 研究过页面样式设计后,就是多页面的呈现了,这就需要研究 ...

最新文章

  1. Javascript:必须知道的Javascript知识点之“字面量和对应类型”
  2. asp.net程序调用NTFS分区下Oracle客户端
  3. php中 param,php中bind_param()函数用法分析
  4. Pub / Sub本地模拟器
  5. 【HDU - 4185】Oil Skimming (二分图,建图,匈牙利算法)
  6. python负数的表示方法_python输入负数
  7. sde java_arcgis SDE for Java
  8. [QA翻译]如何在Storm里拆分stream流?
  9. 运动目标跟踪(四)--搜索算法优化搜索方向之Camshift
  10. 高光谱图像异常探测导读
  11. 手机H5-调用百度地图导航
  12. 彻底关闭Windows更新
  13. 031-JVM-合并写(write combining)
  14. 可长时间佩戴的耳机真的存在吗?骨传导耳机是否对耳朵伤害更小?
  15. NGUI图集分解 切割
  16. KTIT:知识技术和信息技术
  17. 详解SYN Flood攻击原理与防范
  18. java消息总线ibus_SpringCloud Bus 消息总线
  19. 【Mac】加快Magic Mouse的移动速度
  20. 搭载广和通5G LAN模组FM650-CN的5G工业网关已率先商用落地

热门文章

  1. Telephone--短信发送/接收流程
  2. linux视频对话框,抖音对话框视频怎么做?如何在视频画面上添加对话气泡框?视频加对话气泡的方法...
  3. 聚观早报 | 蔚来手机公司正式成立;苹果将取消iPad全系耳机孔
  4. Android程序打包安装过程
  5. 完美解决:调用sklearn出现诸如ImportError: cannot import name ‘LogisticR‘ from ‘sklearn.linear_model‘ (D:\Progr
  6. 关于pyecharts可视化中国经济、人口等数据
  7. 安装Office365后版本信息显示为Office2016
  8. linux抓bpdu包,用Python发送手工构建的BPDU(生成树协议包)
  9. 计算机显示器型号参数单价,飞利浦电脑显示器价格表一览【详解】
  10. AGV搬运机器人以在物流、电商等仓储企业中成为标配