微信公众号的后台开发

  公司想要做一个微信公众号,经理叫我去研究怎么自动回复信息,自定义菜单。

  弄了几天,功能基本上都实现了,下面就讲讲步骤吧。

  首先当然是需要一个微信公众号啦,没有的话可以先去申请(个人订阅号不支持自定义菜单,这个挺坑的,最后还是拿公司的工作号做的测试)。申请完成后需要进行开发的基本配置。

URL需要一个外网能够访问的地址(最好是映射到自己本机方便调试),Token与你程序中定义的token变量需要一致,用于接入微信的接口。

微信服务器转发request数据包含下面信息(在CoreServlet中的doGet方法中处理)

// 微信加密签名

String signature = request.getParameter("signature");

// 时间戳

String timestamp = request.getParameter("timestamp");

// 随机数

String nonce = request.getParameter("nonce");

// 随机字符串

String echostr = request.getParameter("echostr");

String[] arr = new String[] { token, timestamp, nonce };  //此处token为网页上设置的token

// 将token、timestamp、nonce三个参数进行字典序排序加密后与signature比对,一致时表示请求来自微信服务器。

out.print(echostr);

这个时候就接入成功了。

在CoreServlet中的doPost方法中处理你要做的操作,也就是自动回复这些

request里面传递的格式是XML,需要进行解析

// 发送方帐号(open_id)

String fromUserName = requestMap.get("FromUserName");

// 公众帐号

String toUserName = requestMap.get("ToUserName");

// 消息类型

String msgType = requestMap.get("MsgType");

// 消息内容

String content= requestMap.get("Content");

// 事件类型

String eventType = requestMap.get("Event");

可以自己根据需要返回对应的消息,格式也是XML

  自定义菜单就稍微麻烦一些

首先要请求这个接口

"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"(APPID是开发者帐号,APPSECRET是开发者密码,请求方式是GET)

返回一个json数组,其中“access_token”是创建自定义菜单的凭证,“expires_in”是过期时间(7200秒)

接着调用下面这个接口(ACCESS_TOKEN是上个接口返回的“access_token”值,请求方式是POST)

"https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";

我们可以将菜单以json格式通过该接口传递(形式如下)

{

"button":[

{

"type":"click",

"name":"今日歌曲",

"key":"V1001_TODAY_MUSIC"

},

{

"type":"click",

"name":"歌手简介",

"key":"V1001_TODAY_SINGER"

},

{

"name":"菜单",

"sub_button":[

{

"type":"click",

"name":"hello word",

"key":"V1001_HELLO_WORLD"

},

{

"type":"click",

"name":"赞一下我们",

"key":"V1001_GOOD"

}]

}]

}

传递成功之后会创建自定义的菜单

// 事件KEY值,与创建自定义菜单时指定的KEY值对应

String eventKey = requestMap.get("EventKey");

获取事件的KEY值,与自己定义的KEY值一致时,表示点击了菜单,可以在CoreServlet类中的doPost方法中进行相应的处理

还有一种菜单是点击之后直接跳转网页的,只是和普通的菜单的json拼装的属性不一样

{  "type":"view",  "name":"歌手简介",  "url":"http://www.qq.com/"  }

type改成“view”类型,url为要访问的路径,没有key属性,点击后自动跳转

时间: 2024-12-20 06:34:01

微信公众号的后台开发的相关文章

基于java的微信公众号二次开发视频教程

详情请交流  QQ  709639943 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经

微信公众号积分系统开发模式详解

微信公众号积分系统开发(李想.185.6504.8478)微信公众号积分系统是什么?微信公众号积分系统有什么用?微信公众号积分模式系统简介:O2O电子商务模式需具备五大要素:独立网上商城.国家级权威行业可信网站认证.在线网络广告营销推广.全面社交媒体与客户在线互动.线上线下一体化的会员营销系统.一种观点是,一家企业能兼备网上商城及线下实体店两者,并且网上商城与线下实体店全品类价格相同,即可称为O2O:也有观点认为,O2O是B2C( Business To Customers)的一种特殊形式. 在

微信公众号平台接口开发:基础支持,获取access_token

新建Asp.net MVC 4.0项目 WeChatSubscript是项目UI层 WeChatTools是封装操作访问公众号接口的一些方法类库 获取AccssToken 我们要的得到AccessToken,这是所有接口访问的基础,我们看看官方给出的接口调用文档 很简单明了,grant_type=client_credential,这是固定的不会变 appid与secret就是前面一章我叫大家记起来的那个认证口令数据. 下边我们来实现这个功能,新建WeCharBase.cs 1 public c

微信公众号平台接口开发:基础支持,获取微信服务器IP地址

官方说明 目前看不出来这个接口有哪些具体运用,但是既然有这个接口,那我们就试试能不能用 访问接口 修改WeCharBase.cs,新增以下2个方法 1 public static string ServerIPs 2 { 3 get { return GetServerIPs(); } 4 } 5 6 /// <summary>获取所有服务器IP</summary> 7 /// <returns></returns> 8 private static str

微信公众号PHP简单开发流程

微信公众号开发分傻瓜模式和开发者模式两种,前者不要考虑调用某些接口,只要根据后台提示傻瓜式操作即可,适用于非专业开发人员. 开发模式当然就是懂程序开发的人员使用的. 下面简单说一下微信公众号开发的简易流程,新手看看会有帮助,高手请一笑而过. 1.配置服务器: A.首先在本机建立如下结构的文件夹(这里是我自己的习惯,仅供参考) MMPN:总目录mro message public number 微信公众号 backup:备份目录,主要用于备份php文件,每次修改时将原稿备份到里面去. images

微信公众号二次开发(二)-注册新浪SAE

新浪SAE:Sina App Engine是新浪提供的云服务,对个人提供免费的Web应用/业务开发托管.运行平台.我们就用它来作为我们的开发服务器测试环境. 注册新浪云http://sinacloud.com/ 创建SAE应用,使用PHP作为开发语言 填写运营者身份信息 进入后台 在后台查看总揽 该服务器我们就将利用它作为我们的二次开发服务器进行配置. 欢迎微信扫一扫或搜索关注我的"Windows自动化运维"公众号,我会每天定期发布Windows自动化运维的相关知识供大家讨论研究. 本

微信公众号第三方平台开发坑

坑一:文档数据结构错误,导致授权方公众号二维码URL无法获取 在公众号授权流程文档页面中(点击查看),有这样一个数据结构: 我把这个代码复制出来,放在chrome里面,清楚的看到如下的数据结构: 错就错在这个qrcode_url,在微信官方提供的文档中,qrcode_url是出现在object的第一级属性中的,但是,TMD的微信真正返回的数据结构中,qrcode_url是在authprizer_info里面的.WHAT THE FUCK! 害得老子把自己的代码检查.调试了两个小时,之崩溃,就没有

微信公众号二次开发(三)-介绍tortoisesvn开发工具

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion. 集中式管理的工作流程如下图: 集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交.所有的版本信息都放在服务器上.如果脱离了服务器,开发者基本上可以说是无法工作的.下面举例说明: 开始新一天的工作: 1.从服务器下载项目组最新代码. 2

微信公众号第三方平台开发概况

首先要知道为什么要用公众号第三方平台,公众号第三方平台的开放,是为了让公众号运营者,在面向垂直行业需求时,可以一键登录授权给第三方的公众号运营平台,通过第三方开发者提供的公众号第三方平台来完成相关业务.简单来说就是不懂技术的小白用户一键授权给第三方公司代理开放的权限如发送消息等,不用填写一些繁琐的Appid,AppSecret,URL,Token等信息.博客中已有园友写了详细的内容,以下只是强调开发过程中的一些问题. 微信的授权流程 具体的详情请见官网 接下来就首先要申请公众号第三方平台,具体流