第1篇 开发基础篇 1
第1章 认识微信公众平台 1
1.1微信公众平台 1
1.1.1微信公众平台与微信开放平台 1
1.1.2订阅号 2
1.1.3服务号 2
1.1.4企业号 3
1.1.5微信小程序 4
1.1.6测试号 4
1.2微信公众号注册 4
1.2.1准备申请资料 5
1.2.2选择账号类型 5
1.2.3基本信息 6
1.2.4选择类型 6
1.2.5邮箱激活 7
1.2.6信息登记 7
1.2.7完善公众号信息 10
1.2.8绑定运营者微信号 10
1.3微信公众号认证 11
1.3.1进入微信认证 11
1.3.2完成身份认证 12
1.3.3进入认证页面 12
1.3.4填写认证信息 12
1.3.5确认名称 13
1.3.6填写发票,核对信息 13
1.3.7费用支付 14
1.3.8完成认证申请,查看审核进度 15
1.4微信公众号管理 15
1.4.1增加开发者账号 15
1.4.2权限设置及频率限制 16
1.4.3获取AppID及AppSecret 17
1.4.4IP白名单 17
1.4.5小实例:“伊布空间装饰”公众号 18
第2章 平台开发基础入门 20
2.1JDK及JCE补丁部署 20
2.1.1安装JDK 21
2.1.2环境变量 22
2.1.3JCE安全策略补丁 24
2.2开发环境 25
2.2.1MyEclipse安装 25
2.2.2绑定中间件 26
2.2.3调整编译环境 28
2.3微信Web开发者工具 29
2.3.1开发工具安装 29
2.3.2授权微信Web开发者工具 30
2.3.3开发调试 31
2.4申请测试号 32
2.5JSON数据格式 33
2.5.1JSON数据介绍 33
2.5.2在页面中的应用 34
2.5.3在Java中的应用 34
2.5.4小实例:JSON对象转换 36
2.6XML数据格式 37
2.6.1XML数据介绍 37
2.6.2生成XML数据 37
2.6.3解析XML数据 38
2.6.4小实例:用户信息生成与解析 39
2.7HttpClients使用技巧 41
2.7.1发送Get请求 42
2.7.2发送Post请求 43
2.7.3获取请求结果数据流 44
2.7.4小实例:通过HttpClients实现网络爬虫数据抓取 45
2.8HttpURLConnection使用技巧 46
2.8.1发送JSON数据请求 46
2.8.2发送文件类型请求 48
2.8.3小实例:通过HttpURLConnection实现网络爬虫数据抓取 49
2.9Properties配置文件 50
2.9.1Properties文件介绍 50
2.9.2小实例:项目产品化配置信息 51
2.10在线接口调试 51
2.11发布外网服务 53
2.12综合实例:微信公众号开发入门之HelloWorld 53
第2篇 关键技术篇 58
第3章 主动调用推送信息 58
3.1主动调用模式介绍 58
3.2申请access token 60
3.2.1access token获取限制 61
3.2.2申请access token票据接口详细说明 61
3.2.3申请access token完整示例代码 62
3.3access token的缓存处理 64
3.3.1access token的缓存处理流程 64
3.3.2access token缓存处理完整示例代码 65
3.4封装主动调用类 67
3.5自定义菜单管理 73
3.5.1自定义菜单类型 74
3.5.2创建默认菜单 74
3.5.3创建个性化菜单 76
3.5.4查询菜单 78
3.5.5删除菜单 80
3.5.6小实例:开发自己的微信菜单实现创建、删除和查询功能 80
3.6素材管理 83
3.6.1接口说明 83
3.6.2上传素材文件 83
3.6.3获取素材文件 87
3.6.4上传永久图文消息 90
3.6.5删除永久素材 93
3.6.6修改永久图文素材 94
3.6.7获取素材总数 96
3.7群发消息 97
3.7.1消息说明与频率限制 97
3.7.2根据用户标签群发消息 98
3.7.3根据OpenID群发消息 102
3.7.4删除群发消息 104
3.7.5小实例:推送最新活动(“千里行”为爱而行) 106
3.8模板消息 113
3.8.1消息说明及运营规则 113
3.8.2获得模板ID 114
3.8.3推送模板消息 117
3.8.4自定义模板消息 120
3.8.5小实例:发送个人账单信息 122
3.9客服消息 125
3.9.1客服消息说明 125
3.9.2客服账号管理 127
3.9.3发送客服消息 129
3.9.4小实例:人工客服消息 133
第4章 接收回调消息 136
4.1消息接收说明 136
4.2开启消息回调模式 138
4.3加密/解密算法 142
4.4接收消息Dom解析 145
4.5消息响应Xstream转换 148
4.6接收普通消息 151
4.6.1接口说明 151
4.6.2接收文本消息 154
4.6.3接收图片消息 154
4.6.4接收音频消息 155
4.6.5接收位置消息 157
4.6.6接收小视频消息 158
4.6.7接收链接消息 159
4.6.8接收视频消息 160
4.7接收事件消息 161
4.7.1接口说明 161
4.7.2接收关注/取消关注事件 162
4.7.3接收地理位置事件 163
4.7.4接收菜单事件 165
4.8被动响应消息 170
4.8.1接口说明 170
4.8.2被动响应文字消息 171
4.8.3被动响应图片消息 173
4.8.4被动响应音频消息 175
4.8.5被动响应视频消息 176
4.8.6被动响应图文消息 176
4.9综合案例:微信机器人汤姆 177
第5章 微信网页JS-SDK的应用 186
5.1微信JS-SDK介绍 186
5.2平台接口接入 187
5.2.1配置JS接口安全域名 187
5.2.2配置网页授权域名 188
5.2.3配置业务域名 189
5.2.4引入微信JS文件 189
5.2.5通过confiig接口授权 190
5.2.6验证成功事件 190
【示例5-1】进入页面后立即隐藏右上角菜单按钮 190
5.2.7验证失败事件 190
5.3JS-SDK权限签名 190
5.3.1获取调用票据jsapi ticket 191
5.3.2生成JS-SDK权限验证签名 193
【示例5-2】权限验证签名 193
5.3.3页面confiig接口配置注入 194
5.4Debug调试与基础接口说明 195
5.4.1Debug调试模式开启 195
5.4.2接口通用函数 196
5.4.3小实例:查看微信版本情况 196
5.5常用接口应用 197
5.5.1GPS定位获取位置信息 197
5.5.2选择相机/相册图片 199
5.5.3页面判断iOS/Android微信 200
5.5.4语音智能接口 201
5.5.5微信扫一扫 202
5.5.6微信分享接口 203
5.5.7小实例:隐藏微信菜单 204
5.6微信JS-SDK接口说明 206
5.7二维码多码融合 207
5.7.1安卓/苹果APP下载码融合 207
5.7.2微信下载“空白页无响应”问题 208
5.7.3小实例:扫一扫三码合一 210
5.8高德地图的应用 211
5.8.1申请地图Key值 211
5.8.2个人开发者与企业开发者区别 213
5.8.3引入高德地图 214
5.8.4坐标转换 215
5.8.5关键字搜索 216
5.8.6其他接口服务 217
5.8.7小实例:地图“点聚合” 219
5.9地图语音导航 223
5.9.1微信内置地图语音导航 223
5.9.2腾讯地图语音导航 223
5.9.3百度地图语音导航 225
5.9.4高德地图语音导航 226
5.10ECharts在微信中的应用 228
5.10.1ECharts简介 228
5.10.2ECharts快速接入 229
【示例5-3】生成某产品每月销量柱形图 230
5.10.3ECharts知识扩展 231
5.10.4小实例:ECharts微信应用——某公司每月新增客户报表 233
5.11微信中的APP——单页面应用 237
5.11.1基于angularJS的onsenUI 237
5.11.2创建angularJS微信服务 238
【示例5-4】创建angularJS服务“判断是否用微信浏览器”和“获取url中参数”。 238
5.11.3SPA下JSAPI模式权限初始化 239
5.11.4SPA下获取OAuth2.0成员身份信息 240
5.11.5小实例:解决微信物理回退问题 241
5.12微信WebSocket开发 242
5.12.1WebSocket客户端 242
【示例5-5】在JS中使用new WebSocket开通客户端 242
5.12.2WebSocket服务端 243
【示例5-6】客户端通过注解中的uri连接到WebSocket 244
【示例5-7】编写程序检测WebSocket连接数量 245
5.13JS-SDK应用中常见问题及解决办法 245
第6章 综合案例:I’M朋友圈 248
6.1创建Action后台服务 248
6.2生成工具类WxUtil 249
6.3开发“朋友圈”页面 256
第3篇 支付开发篇 263
第7章 微信公众号支付 263
7.1微信支付介绍 263
7.2微信公众号支付申请 264
7.3开发配置 268
7.3.1配置商户密钥 268
7.3.2配置域名信息 268
7.3.3设置支付目录 269
7.4统一下单 269
7.4.1接口介绍 270
7.4.2订单签名 273
7.4.3小实例:微信支付下订单 276
7.5发起支付 281
7.5.1支付签名 281
7.5.2小实例:发起微信JS-H5支付 282
7.6支付结果 284
7.6.1同步通知 284
7.6.2异步通知 284
7.7获取对账单文件 288
7.7.1接口介绍 289
7.7.2账单签名 291
7.7.3小实例:下载微信账单 291
7.8小实例:在微信中发起支付宝支付 293
第8章 微信服务商支付 295
8.1微信服务商 295
8.1.1微信商户类型 295
8.1.2申请服务商 296
8.1.3服务商平台 296
8.2微信特约商户 297
8.2.1申请特约商户 297
8.2.2特约商户平台 297
8.3服务商开发配置 298
8.4服务商发起公众号支付 299
第9章 综合案例:开发一个微信水果购物平台 301
9.1创建实体类 301
9.2创建微信工具类 305
9.2.1消息工具类WxUtil 305
9.2.2微信支付工具类WxPayUtil 310
9.2.3MD5算法工具类 315
9.3微信下订单 316
9.3.1创建Servlet服务 316
9.3.2创建订单服务类 320
9.3.3创建下订单 322
9.3.4配置web.xml 323
9.4微信JS发起支付 324
第10章 综合案例:微信服务商“一号多卡”支付实现(生活缴费) 326
10.1创建配置文件获取特约商户 326
10.2创建服务商统一下单实体类 327
10.3下订单并生成支付签名 330
10.3.1创建订单页面 330
10.3.2创建servlet控制层 330
10.4发起H5支付 334
第4篇 运维实践篇 336
第11章 账号及用户管理 336
11.1微信公众账号管理 336
11.1.1生成带参数二维码 336
【示例11-1】生成个人推广二维码 338
11.1.2长链接转短链接 339
【示例11-2】分享简洁的商品推广链接 340
11.2标签管理 341
11.2.1创建标签 341
11.2.2删除标签 341
11.2.3查询所有标签 342
11.2.4编辑标签 343
11.2.5小实例:为用户设置特权标签 343
11.3公众号用户管理 344
11.3.1用户绑定标签 344
11.3.2用户取消绑定标签 345
11.3.3获取某一个用户下所有标签 346
11.3.4获取某一个标签下所有用户 346
11.3.5公众号用户黑名单 347
11.3.6获得用户基本信息 348
11.3.7小实例:用户身份设置及信息获取 351
11.4OAuth2.0身份验证 352
11.4.1获取code 353
11.4.2根据code获得成员信息 354
11.5浏览器类型安全访问 355
第12章 数据库及服务中间件 357
12.1常用SQL语句 357
12.1.1查询语句 357
【示例12-1】在数据库user表中作查询操作 357
12.1.2新增语句 358
【示例12-2】向user库表中插入一条数据 358
12.1.3更新(修改)语句 359
【示例12-3】修改user库表中user_id为muyunfei的手机号和邮箱 359
12.1.4删除语句 359
【示例12-4】删除user name为“牟云飞”的数据 359
12.2HQL语句基础语法 359
12.3HQL方言处理 362
12.4Tomcat服务中间件 363
12.4.1Tomcat在SDK中部署 363
12.4.2 8080端口号冲突解决(Tomcat) 363
12.4.3Tomcat内存调整 364
12.4.4Tomcat中数据缓存清理 365
12.5JBoss服务中间件 365
12.5.1JBoss在SDK中部署 366
12.5.2 8080端口号冲突解决(JBoss) 367
12.5.3JBoss内存调整 367
12.5.4JBoss中数据缓存清理 368
12.6WebLogic服务中间件 369
12.6.1域的创建 369
12.6.2WebLogic在SDK中部署 372
12.6.3 7001端口号冲突解决 372
12.6.4WebLogic中数据缓存清理 373
第5篇 综合实战篇 374
第13章 综合案例:网上营业厅 374
13.1用户详细需求 375
13.2软件设计 375
13.2.1业务办理流程 375
13.2.2数据模型 375
13.3技术点梳理与难点攻克 376
13.4开发实现 378
13.4.1部署SSH框架 379
13.4.2创建Properties配置文件 382
13.4.3创建微信工具类 383
13.4.4设置常量类 397
13.4.5生成实体类 397
13.4.6编写回调服务 397
13.4.7创建数据访问层服务 404
13.4.8创建业务逻辑层服务 409
13.4.9服务跳转 413
13.4.10创建网上营业厅页面 415
13.5开启回调模式 421
13.6绑定可信域名 421
13.7网上营业厅应用菜单 422
13.8本章小结 422
附录一 全局返回码说明 423
附录二 行业代码查询 429