微信服务号开发的完整人性化版攻略
前言:
本次要讲述的是一个本人完整微信服务号开发的经验分享,微信服务号的作品:请搜索微信号:zjaisino
,名称:爱信诺Aisino一站式服务平台。(这里声明,这不是打广告,只是为了方便各位开花攻城狮朋友配合下面的文章理解)。
注:微信服务号的开发可以用的语言有很多,如Java、PHP、ASP.NET、Ruby、Python、Note.js
都可以,我是一名Java
攻城狮,所以下面介绍的开发语言是JAVA
,言归正传,Let's go
正文:
微信号的选择
订阅号,每天一次推送消息,但是高级权限不多。
服务号,每月四次推送消息,但是高级权限多。
所以推广用途请使用订阅号,服务用途请使用服务号。
关键参数理解
AppID
和AppSecret
这两个是公众号后台的参数。
access_token
是公众号的全局唯一票据,公众号调用各接口时都需使用access_token
,由上面两个参数处理得到(注意:处理好7200s
的时效性)。
OpenID
这是业务处理最核心的参数,(是你的微信跟这个微信号之间的一个唯一的ID
,注意无论你是否关注,这个ID
都是不变的,而且已经存在)。
服务号接入工程
我们要处理自己的业务,有自己的后台工程是必须的,但是如何将微信服务号跟我们的工程建立接入关系呢
URL
填写我们的工程的一个action
Token
填写跟我们工程里面设置的Token
参数内容一样即可
开始接入(端口要是80!)
点击提交的时候,其实微信服务器是往你填写的action
的传输方式是get
不是post
,所以代码里根据这个去处理,返回他需要的签名检验结果即可,这样就接入完成了。
用户跟工程的交互方式种类
大致分两种:
一种是:文本(Text
),一种是:事件(Event
)
文本交互,俗称关键字交互
事件交互,里面的种类就挺多,如LOCATION
(定位),SCAN
(再次关注),subscribe
(关注),还有就是菜单的EventKey
的响应了等等。
正如你关注的时候,我给你回复的东西就是在subscribe
的时候处理的,给你返回
你输入关键字的时候,比如输入100
,我是这么回复给你的
这里举得两个例子就是你遇到事件或者关键字的时候,你可以如何处理,具体回复等其他业务操作,请参照自身要求。
回复用户的信息格式
消息格式有很多种,不过最常用的如下三种
回复文本
回复多图文
回复多客服,即可轻松打开多客服功能 so easy!
记得写个工具类来存放这些消息格式的工具方法!
菜单分析
服务号的菜单,大菜单可以有三个,大菜单里面的子菜单最多五个。
菜单的类型两种:一种是Click
菜单,一种是Url
菜单。
顾名思义Click
菜单就是点击会传EventKey
给我们工程,Url
菜单就是直接超链接跳转性质。
如何生成菜单?
往下Look
/*** 组装菜单数据* * @return 返回一个菜单对象*/public static Menu getMenu(String serverUrl) {//ChildButton是子菜单对象 ChildButton btn11 = new ChildButton();btn11.setName("个税计算");//如果设置type是view,那必须设置url,不要设置keybtn11.setType("view");btn11.setUrl(serverUrl+"gongzishouru.jsp");ChildButton btn12 = new ChildButton();btn12.setName("发票查询");btn12.setType("view");btn12.setUrl(serverUrl+"ds_dishuifapiao_search.jsp");ChildButton btn13 = new ChildButton();btn13.setName("服务预约");btn13.setType("click");btn13.setKey("13");ChildButton btn14 = new ChildButton();btn14.setName("我的派单");btn14.setType("click");btn14.setKey("14");ChildButton btn15 = new ChildButton();btn15.setName("我的账户");btn15.setType("click"); btn15.setKey("15");ChildButton btn21 = new ChildButton();btn21.setName("福利专区");btn21.setType("click");btn21.setKey("21");ChildButton btn22 = new ChildButton();btn22.setName("最新资讯");btn22.setType("click");btn22.setKey("22");ChildButton btn23 = new ChildButton();btn23.setName("财税动态");btn23.setType("click");btn23.setKey("23");ChildButton btn24 = new ChildButton();btn24.setName("会计职场");btn24.setType("click");btn24.setKey("24");ChildButton btn25 = new ChildButton();btn25.setName("常见问题");btn25.setType("click");btn25.setKey("25");ChildButton btn31 = new ChildButton();btn31.setName("诺诺介绍");btn31.setType("view");btn31.setUrl(serverUrl+"nuonuojieshao.jsp");ChildButton btn32 = new ChildButton();btn32.setName("卡换盘专栏");btn32.setType("view");btn32.setUrl(serverUrl+"CardChangeDish.jsp");ChildButton btn33 = new ChildButton();btn33.setName("产品展示");btn33.setType("view");btn33.setUrl(serverUrl+"chanpinzhanshi.jsp");ChildButton btn34 = new ChildButton();btn34.setName("网点查询");btn34.setType("view");btn34.setUrl(serverUrl+"wangdianchaxun.jsp");ChildButton btn35 = new ChildButton();btn35.setName("我的积分");btn35.setType("click");btn35.setKey("35");//ComplexButton是一级菜单,可以通过setSub_button的方式添加多个子菜单ComplexButton mainBtn1 = new ComplexButton();mainBtn1.setName("诺诺服务");mainBtn1.setSub_button(new ChildButton[] { btn11, btn12, btn13, btn14, btn15});ComplexButton mainBtn2 = new ComplexButton();mainBtn2.setName("诺诺资讯");mainBtn2.setSub_button(new ChildButton[] { btn21, btn22, btn23, btn24, btn25});ComplexButton mainBtn3 = new ComplexButton();mainBtn3.setName("关于诺诺");mainBtn3.setSub_button(new ChildButton[] { btn31, btn32, btn33, btn34, btn35});//Menu是菜单对象,将所有一级菜单塞入即可Menu menu = new Menu();menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });return menu;}
/*** 创建菜单*/private static void createMenu(String serverUrl) {// 调用接口创建菜单的json并上传到微信,返回值是结果代码,0表示成功。int result = WeixinUtil.createMenu(FastCreateWeixinMenu.getMenu(serverUrl), accessToken);// 判断菜单创建结果if (0 == result)System.out.println("菜单创建成功!");elseSystem.out.println("菜单创建失败,错误码:" + result);}
菜单生成搞定!
微信用户如何跟我们业务系统的用户建立关系
这是我们最关心的问题,很简单,就是我一开头提到的openID
,这个参数可以在用户跟工程有任何交互的时候,都可以获取得到,我们可以把openID
跟我们的业务用户ID
,做个登录绑定的操作,其实就是把两个参数形成一条数据存到数据库的关系表中即可。
还有一种就是所谓的网页获取用户信息openID
(如果你的操作比较复杂不推荐这种做法)。
微信中打开的界面
微信里面打开的界面可以分为三种:
第一种:就是类似你平时点开的微信文章,里面含有点击文字关注公众号的那种页面。(获取方式,让运营在公众号的腾讯平台里面写好,然后把url
发给你,你放到回复的图文中即可)
(小细节很多人不知道:文章的内容保存或发布后,再改动里面的内容他的url
是不变的)O(∩_∩)O哈哈~
第二种:就是我们自己工程的html
,jsp
这个做前端的人做个手机自适应就好了。
第三种:就是现在市面上比较火的易企秀第三方炫酷的效果界面,直接做好把url
拿过来即可,很简单。
微信服务号的关注用户
在我们关注了这个微信号之后,变成了他粉丝。我们可以对这些粉丝进行分组,也可以通过请求获取这个微信号的所有的分组情况,跟具体某个用户的所在分组情况。(特别注意:在运营在建立分组的时候,千万不要随便建立或者删除之前的分组,因为分组的ID
是类似于数据库表的递增索引
一样,用了一次就没了,也就是你删掉了一个分组,再建一个跟他名字一模一样的分组,不要意思他的分组的ID
是已经不是原来的ID
了,切记)!!!
二维码
微信公众号里面可以有方法生成带参数的二维码,当我们扫描二维码的时候,我们的工程可以获取用户所扫描的二维码中的参数,从而来根据这个参数去做一些业务操作,如将用户直接扫描后分组,等其他操作。
所需要的技能
JAVA
Web
工程会搭建,Tomcat
服务器会部署,数据库熟悉,前端Js
,Jsp
熟悉,Spring MVC
框架的使用等
总结:
说了这么多,我相信大家多多少少已经对微信服务号的开发流程有个系统性的开发轮廓了,写这边文章是对自己经验的分享,也是对过去的一种总结,后续会不间断的发表关于Android
,微信
,iOS
,Java
相关技术的文章,有兴趣的朋友们敬请关注!感谢大家阅读。
微信服务号开发的完整人性化版攻略相关推荐
- 微信公号开发之图文消息全攻略
转载链接:http://mobile.51cto.com/web-416968.htm 图文消息的主要参数说明 通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示: 从图中可以 ...
- 【微信服务号开发】01.接入指南
前言 当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦. 下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦. ...
- 微信服务号开发-获取用户位置信息
微信服务号开发-获取用户位置信息 在微信公众号开发的中,获取用户位置信息是非常常见的功能需求,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动. 下面将介绍微信服务号获取用户位置信息的 ...
- Springmvc集成jfinal微信 微信服务号开发
最近研究微信服务号开发,发现jfinal家封装的SDK还是不错的,于是就定下来用它了. 那么问题来了:git上有demo,那么如何集成到自己的项目中呢?研究研究呗.我们框架使用的是springmvc, ...
- 微信服务号开发时获取授权遇到的问题
1.问题 (遇到的问题)微信服务号开发时获取授权遇到的问题 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint: [59FKq ...
- 微信服务号开发-整合微信支付
最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...
- 基于OpenJWeb平台的微信服务号开发培训-生成带参数二维码
因为OpenJWeb平台已经集成了微信服务号接口,所以在OpenJWeb平台上开发微信服务号会起到事半功倍的作用.本文介绍如何使用微信公众号接口生成带参数二维码功能. 下面是开发及操作过程: (1)首 ...
- 微信服务号开发----创建个性化菜单
官方链接http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html 1.目的:让公众号的不同用户群体看到不一样的自定义菜单 ...
- 微信服务号开发----发送消息
1.微信开发文档说明 http://mp.weixin.qq.com/wiki/11/c88c270ae8935291626538f9c64bd123.html#.E5.AE.A2.E6.9C.8D. ...
最新文章
- 数据结构源码笔记(C语言):栈的基本操作
- String 中的秘密
- 第一次参加项目个人工作总结 (转)
- UVA156 Ananagrams【map+vector】
- JasperReports 5.0.1 发布,Java 报表工具
- QQ截图出现闪退,无法截图(亲测有效)
- 中国电信 CTExcel - 亲测境外首选电话卡(推荐码:SHQL 或 KJNC)
- 世界上服务器最多的游戏,魔兽科普 国服人最多的几个服务器都什么来头
- 跳一跳python源码下载_微信跳一跳游戏python脚本
- 【云原生|中间件】我们为什么要使用DCM?
- 计算 m 的 n 次幂
- 关于微信小程序进行数据统计以及分析问题
- 一些常用的数学在线计算器
- B站直播云逗猫趟坑记
- 《智能制造》总结报告
- 计算机病毒是一种能破坏计算机运行的,计算机病毒是一种能破坏计算机运行的()。...
- 如何科学预测后代的身高
- OpenCV视频篇——从.JPG到.AVI:视频编码最强入门科普
- jQuery的内部全局变量和构造函数
- Unity动态加载场景