微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发
本文主要讲解如何使用 weinxinFundation 进行二次开发。
步骤如下:
1.创建新的web项目。
在eclipse里新建一个dynamicly web project,比如本文叫weixinDemo

2.引用weinxinFundation
获得weinxinFundation的方法: 参考我的另一篇文章:http://www.cnblogs.com/vir56k/p/3664181.html
有两种引用方式: 1).如果你拿到的是个jar包,请按常规方式引用,程序员都知道。 2).如果你拿到的是源代码,请参考我的另一篇文章:http://www.cnblogs.com/vir56k/p/3778414.html
3.进入微信公众平台的后台,修改 token ,获得 appid和secret.
3.1).进入微信公众平台的后台页面:https://mp.weixin.qq.com/
3.2).找到“开发者ID” 下的 AppId 和 AppSecret 并记录下来,后面要用到。
3.3). 在 “服务器配置” 部分,设置 URL 和 Token,其中
URL是你后面要发布的sevlet的地址,比如:http://xxx.xxx.xxx.xxx/weinxinDemo/WeixinSvc,
注释:这里xxx.xxx.xxx.xxx是你的IP或者域名,weinxinDemo是 你的网站webSite的名称,WeixinSvc 是 sevlet的名称。
Token 是用于认证的标记,可以随便设置,不过要记下下来,后面要用。
注释:在演示中,我使用helloweixin作为我的token
4.建立一个新的servlet(集成自WeixinBaseServlet)用于接收 “来自微信服务的web调用”。
创建新的servLet,名字是WeixinSvc。注意这里和上一步里的 3.3 里的servlet名称相同。这个servlet集成自:WeixinBaseServlet,示例代码如下:
package weixinmobile.services; import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import weixinFundation.core.common.WeixinBaseServlet;
import weixinFundation.core.common.WeixinContext; /**
* 用于和 腾讯微信 交互的的servlet
*/
@WebServlet("/WeixinSvc")
public class WeixinSvc extends WeixinBaseServlet { /**
* @see HttpServlet#HttpServlet()
*/
public WeixinSvc() {
super();
} @Override
protected WeixinContext onInitWeixinContext() {
return new WeixinContextImpl();
} }
上面的代码写了一个WeixinContextImpl ,这里使用了一些“上下文配置信息”,我们下面实现它。
package weixinmobile.services; import weixinFundation.core.common.LinkedMessageWeixinContext;
import weixinmobile.services.handlers.EventMessageHandler;
import weixinmobile.services.handlers.TextMessageHandler; public class WeixinContextImpl extends LinkedMessageWeixinContext{
public static final String Token = "helloweixin"; public static final String appID = "你的appid";
public static final String appsecret = "你的appsecret"; @Override
public void onCreate() {
addHander(new TextMessageHandler());
addHander(new EventMessageHandler());
} @Override
public String getToken() {
return Token;
} }
上面的代码的onCreate加载了两个消息处理器,如下:
addHander(new TextMessageHandler()); //用于处理 字符文本消息的处理
addHander(new EventMessageHandler()); //用于处理 事件的消息处理
TextMessageHandler 和 EventMessageHandler 都继承自 WeixinMessageHandler
根据你的业务需要,你可以自定义这些消息的处理方式,你的主要业务,代码逻辑会集中在你自定义的Handler里。
在你自定义的Handler处理 来自 手机发来的消息或者点击事件,用户关注事件等,在这里可以对他们进行回复。
5.配置和使用 菜单
根据目前的规则,服务号才有菜单,你需要在 进入微信公众平台的后台开启它。
下面是根据我的 演示项目 weixinDemo里 创建菜单的方式,
进入我们的项目代码,创建一个 src/menu.txt 这里使用json描述了菜单,你根据自己的需要修改它。
你会看到有个 MenuSvc 的servlet,我在这个servlet里写了,自动获得认证,读取刚刚 menu. txt文件内容发送到微信后台的方法。
你需要在浏览器里执行者个servlet,格式如下:..../MenuSvc?a=create 就OK 了。这个MenuSvc 是我为了方便创建菜单写的,建议在正式发布时删除这个MenuSvc 以确保安全。
6.发布
经编译好的代码,部署在Tomcat下,确保外网通畅,大功告成。你就可以关注你自己的微信公众号了。
我的其他文章:
微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发
微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发的更多相关文章
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...
- OS开发UI篇—使用UItableview完成一个简单的QQ好友列表
本文转自:http://www.cnblogs.com/wendingding/p/3763330.html 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableVi ...
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)
一.实现效果 二.实现代码 1.数据模型部分 YYQQGroupModel.h文件 // // YYQQGroupModel.h // 02-QQ好友列表(基本数据的加载) / ...
- 跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(3)
4.3 构建一个灵活的用户界面 当设计你的应用程序要支持大范围的屏幕尺寸时,你可以在不同的布局配置中重用碎片,来根据可用的屏幕空间优化用户体验. 例如,在手持设备上,它可能是适应来在一个单窗格用户界面 ...
- 跟Google学习Android开发-起始篇-构建你的第一个应用程序(4)
说明:此系列教程翻译自Google Android开发者官网的Training教程,利用Chome浏览器的自动翻译功能作初译,然后在一些语句不顺或容易造成误解的地方作局部修正.方便英文不好的开发者查看 ...
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- 分享一下,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台就可以实现用户对接鹅厂,phpQQ微信扫码登陆
自己抓的QQ包以及整合了网上一些已经封装好了的代码具体如下:QQ: <?php class QQ extends Curl_Api { //获取登录验证码 public function QRc ...
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
随机推荐
- [转]What are mode and status columns under gp_segment_configuration table
February 16, 2017 10:39 Goal In this article we will try to understand and answer to the below two q ...
- 7 款顶级的开源 Web 分析软件
Web 分析无非就是 Web 流量的测量.但它并不限于测量网络流量,还包括: 分析 数据采集 为了了解和优化网页而上报网络数据 Google Analytics是最广泛使用的基于云的网络分析服务.不过 ...
- JAXB--@XmlElementWrapper注解和泛型一起使用
当java对象的某个属性使用泛型时,普通对象都没问题,但是遇到HashSet这种集合类封装的元素时,就会出现元素内容序列化不出来的问题,详见如下: 一.示例: 第一步:定义java对象 package ...
- centos 7 安装python3和pip
目前,我认为还是使用系统自带的稳定版最好,因为:该版本肯定是centos7开发组深思熟虑的,稳定性好,另外,由于系统自带,兼容性好,第三,和之配套的软件齐全,如果不用系统的,建议还是不要在源码编译安装 ...
- ubuntu for win10 里运行apache+php
一直想试试ubuntu for win10中运行网站测试一下,弄了好久,今天终于基本弄明白了, ubuntu for win10里的IP就是外面WIN10的IP,在里面建立网站了可以直接在外面WIN1 ...
- mydqldump 备份数单库 然后还原数据的时候报:ERROR 1881 (HY000) at line 52: Operation not allowed when innodb_forced_recovery > 0.
修改my.cnf innodb_force_recovery = 1 修改为: innodb_force_recovery = 0
- nil
Lua中特殊的类型,他只有一个值:nil:一个全局变量没有被赋值以前默认值为nil:给全局变量负nil可以删除该变量.
- python(42):进制转换
十六进制 到 十进制 使用 int() 函数 ,第一个参数是字符串 '0Xff' ,第二个参数是说明,这个字符串是几进制的数. 转化的结果是一个十进制数. >>> int('0xf ...
- git push remote error解决办法
通常在用git clone了remote端(服务器)的git仓库后,再进行了自己一系列修改后,会将自己测试后稳定的状态push到remote端,以更新源仓库,使 其他人在pull的时候得到自己的修改. ...
- DIOCP3 - 关于接收数据
DIOCP3支持两种方式接收数据, 第一种是原始的流数据, 最通用的一种方式,客户端发啥,这边就收到啥.需要自己处理粘包问题. 可以在TCilentContext或者TIocpTcpServer的 ...