Toggle navigation
微信开发深度解析:公众号、小程序高效开发秘籍
登录
内容更新提示
1
视频教程
第1章 使用本书
1.1 我是否适合这本书
1.2 如何用好这本书
1.3 各章节导读
1.4 名词解释
1.5 学习资源
1.6 帮助我们改进
第2章 策划你的第一个微信项目
2.1 需求分析
2.1.1 沟通需求
2.1.2 整理需求
2.1.3 制定方案
2.2 数据库设计
2.3 接口统计
2.4 业务逻辑
2.5 技术架构
2.6 微信公众号策划
2.7 统一培训
第3章 开发微信公众号前的准备
3.1 准备工作
3.1.1 基本技能
3.1.2 开发环境
3.1.3 域名
3.1.4 服务器
3.1.5 SSL 证书
3.2 消息通讯
3.2.1 公众平台的消息通讯过程
3.2.2 XML通讯格式
3.2.3 消息通讯中需要注意的问题
3.3 访问网页
3.4 使用测试号进行测试
3.5 使用微信 Web 开发者工具调试微信
3.5.1 下载和安装
3.5.2 使用开发者工具
3.6 单元测试
3.7 在线接口调试工具
3.8 服务号、订阅号和认证账号的功能差别
3.8.1 服务号
3.8.2 订阅号
3.9 微信公众号申请
1
第4章 Senparc.Weixin SDK设计架构
4.1 开源项目
1
4.2 开源协议
4.3 微信平台生态与 Senparc.Weixin SDK
4.4 文件目录
1
4.4.1 根目录
4.4.2 src 目录
4.5 Senparc.Weixin.dll
4.5.1 Senparc.Weixin文件结构
4.5.2 Senparc.Weixin类库结构
4.5.3 使用Senparc.Weixin注意点
4.6 Senparc.Weixin.MP.dll
4.6.1 Senparc.Weixin.MP.dll文件结构
4.6.2 Senparc.Weixin.MP.dll类库
4.7 Senparc.Weixin.WxOpen.dll
1
4.8 senparc.Weixin.MP.MvcExtension.dll
1
4.9 Senparc.Weixin.Cache.Redis.dll
4.10 Senparc.Weixin.Cache.Memcached.dll
1
4.11 其他类库
1
4.12 单元测试
4.13 修改源代码和贡献代码
4.13.1 注册 GitHub 账号
1
4.13.2 Fork 项目
1
4.13.3 修改代码
4.13.4 提交代码
4.13.5 贡献代码
1
第5章 微信公众号开发全过程案例
1
5.1 开发准备
5.1.1 安装开发环境及工具
5.1.2 创建解决方案
5.1.3 创建项目
5.1.4 使用 Nuget 安装 Senparc.Weixin SDK
5.2 开发
5.2.1 准备基础框架
3
5.2.2 创建数据库
5.2.3 同步数据库
5.2.4 建立数据库框架
1
5.2.5 开发 Repository 仓储模块
5
5.2.6 缓存
5
5.2.7 开发业务逻辑
4
5.2.8 Controller 控制器
6
5.2.9 Web 项目和 UI
1
5.3 单元测试
5.4 部署
5.5 消息验证和线上测试
5.6 在Microsoft Azure 上运行微信公众号示例
第6章 使用SDK Demo:Senparc.Weixin.MP.Sample
6.1 文件位置及结构
6.1.1 Senparc.Weixin.MP.Sample 解决方案文件夹
6.1.2 Senparc.Weixin.MP.Sample 解决方案
6.1.3 Senparc.Weixin.MP.Sample Web 项目
6.1.4 Senparc.Weixin.MP.Sample.CommonService 项目
6.2 配置项目
6.2.1 Web.Config 文件
1
6.2.2 Global.asax 文件
6.2.3 首页
6.3 微信消息
6.3.1 消息处理
6.3.1.1 消息上下文
6.3.1.2 消息代理
6.3.1.3 异步并发测试
6.3.1.4 错误的返回消息格式
6.3.1.5 容错
6.3.1.6 获取 OpenId
6.3.1.7 位置消息
6.3.1.8 链接消息
6.3.1.9 点击事件
6.3.1.10 关注事件
6.3.1.11 事件成功回调
6.3.1.12 其他事件
6.3.1.13 默认消息
6.3.2 消息模拟及并发消息测试
1
6.4 微信菜单
1
6.5 OAuth
6.6 JS-SDK
6.7 微信支付
6.8 素材
6.9 缓存测试
2
6.10 异步方法
6.11 微信内置浏览器过滤
1
6.12 微信小程序
6.12.1 消息处理
6.12.2 模板消息
6.12.3 WebSocket
6.13 其他
6.13.1 开放平台
6.13.2 企业号
6.13.3 文档下载
2
6.14 WebForms 项目
6.15 单元测试
6.15.1 单元测试项目
6.15.2 单元测试方法
4
6.16 配置服务器和参数
6.16.1 配置IIS
6.16.2 安装 .NET Framework 4.5
6.16.3 设置IIS站点
6.16.4 解析域名
6.16.5 检查 Web.config 文件
6.17 部署
第7章 MessageHandler:简化消息处理流程
7.1 设计思想
1
7.2 消息类型
7.2.1 概述
1
7.2.2 命名规则
7.2.3 全局消息基类
1
7.2.4 请求消息
4
7.2.5 响应消息
4
7.3 原始消息处理方法
1
7.4 使用MessageHandler
7.4.1 第一步:通过Nuget安装Senparc.Weixin.MP
7.4.2 第二步:创建你自己的MessageHandler
4
7.4.3 第三步:写3行关键代码
1
7.5 OnExecuting()和OnExecuted()
1
7.6 解决用户上下文(Session)问题
7.6.1 消息容器:MessageContainer
2
7.6.2 消息队列:MessageQueue
1
7.6.3 单用户上下文:MessageContext
3
7.6.4 全局上下文:WeixinContext
1
7.6.5 上下文移除事件:WeixinContextRemovedEventArgs
7.7 消息去重
3
7.8 消息加密
3
7.9 消息格式转换
7.9.1 XML转实体
2
7.9.2 实体转XML
2
7.10 消息代理
1
7.11 了解MessageHandler设计原理
7.11.1 Senparc.Weixin.MessageHandlers.MessageHandler结构
4
7.11.2 Senparc.Weixin.MP.MessageHandlers.MessageHandler结构
2
7.11.3 抽象类及虚方法
7.11.4 构造函数
6
7.11.5 Execute()方法
3
7.11.6 CancelExcute属性
7.11.7 OnExecuting()方法
1
7.11.8 DefaultResponseMessage()方法
1
第8章 缓存策略
8.1 设计原理
1
8.2 基础缓存策略接口:IBaseCacheStrategy
1
8.3 数据容器缓存策略接口:IContainerCacheStragegy
8.3.1 原始IContainerCacheStragegy设计思路
1
8.3.2 优化IContainerCacheStragegy设计思路
2
8.3.3 优化IContainerItemCollection和ContainerItemCollection
5
8.4 本地数据容器缓存策略:LocalContainerCacheStrategy
8.4.1 创建LocalContainerCacheStrategy类
1
8.4.2 定义数据源
2
8.4.3 实现容器缓存策略
1
8.4.4 运用单例模式
6
8.4.5 测试
3
8.5 分布式缓存
8.5.1 起因
8.5.2 负载均衡
8.5.3 分布式缓存
8.5.4 分布式使用的注意点
8.6 Redis分布式缓存策略:RedisontainerCacheStrategy
8.6.1 Redis简介
1
8.6.2 安装Redis
1
8.6.3 StackExchange.Redis缓存扩展
3
8.6.4 实现Redis缓存策略
2
8.6.5 单元测试
1
8.7 Memcached分布式缓存策略:MemcachedContainerCacheStrategy
8.7.1 Memcached简介
2
8.7.2 安装Memcached
8.7.3 EnyimMemcached缓存扩展
2
8.7.4 实现Memcached缓存策略
2
8.8 缓存策略工厂:CacheStrategyFactory
8.8.1 创建CacheStrategyFactory
1
8.8.2 配置和使用CacheStrategyFactory
3
第9章 并发场景下的分布式锁
9.1 概述
9.2 为什么需要分布式锁
9.3 分布式锁的设计
9.3.1 IBaseCacheStrategy 接口设计
2
9.3.2 ICacheLock 接口设计
1
9.3.3 分布式锁基类:BaseCacheLock
1
9.4 本地锁
9.4.1 LocalCacheLock
2
9.4.2 实现 BeginCacheLock
2
9.5 Redis 锁
9.5.1 RedisCacheLock
2
9.5.1 Redlock.CSharp
6
9.5.2 实现 BeginCacheLock
2
9.6 Memcached 锁
9.6.1 MamcachedCacheLock
9.6.2 实现 BeginCacheLock
1
第10章 Container:数据容器
10.1 设计思路及原理
1
10.2 BaseContainerBag
3
10.3 BaseContainer
11
10.4 AccessTokenContainer
13
10.5 JsApiTicketContainer
10.6 BindableBase
1
10.7 ContainerHelper
第11章 SenparcMessageQueue:消息队列
11.1 设计原理
1
11.2 队列项目:SenparcMessageQueueItem
1
11.3 消息队列:SenparcMessageQueue
2
11.3.1 GenerateKey()方法
11.3.2 MessageQueueDictionary
11.3.3 MessageQueueList
11.3.4 有关Dictionary和List的效率测试
1
11.4 自动线程处理:SenparcMessageQueueThreadUtility
11.4.1 SenparcMessageQueueThreadUtility
3
11.4.2 线程工具类:ThreadUtility
3
11.4.3 优化扩展
1
第12章 接口调用及数据请求
12.1 设计规则
1
12.2 响应类型
12.2.1 基类:WxJsonResult
4
12.2.2 扩展响应类型
3
12.3 请求
12.3.1 GET请求
3
12.3.2 POST请求
4
12.3.3 JSON请求
3
12.3.4 文件上传/下载
3
12.3.5 公共方法
12.4 使用AccessToken请求接口:CommonJsonSend
12.4.1 Sent<T>()方法
1
12.4.2 JsonSetting
3
12.4.3 WeixinJsonConventer
3
12.5 AccessToken自动处理器:ApiHandlerWapper
6
第13章 Debug模式及异常处理
13.1 Debug模式设计原理
1
13.2 WeixinTrace
4
13.3 异常处理
13.3.1 WeixinException
1
13.3.2 ErrorJsonResultException
1
13.3.3 MessageHandlerException
1
13.3.4 UnknownRequestMsgTypeException
1
13.3.5 UnRegisterAppIdException
1
13.3.6 WeixinMenuException
1
13.4 微信官方在线调试工具
1
第14章 微信接口
2
14.1 微信接口概述
14.2 开始开发
14.2.1 获取接口调用凭据(AccessToken)
3
14.2.2 获取凭证接口
2
14.2.3 获取微信服务器IP地址
1
14.3 自定义菜单管理
14.3.1 自定义菜单
9
14.3.2 个性化菜单
3
14.4 消息管理
14.4.1 发送客服消息
8
14.4.2 发送消息-群发接口和原创校验
9
14.4.3 发送消息-模板消息接口
14.4.4 获取公众号的自动回复规则
1
14.5 微信网页授权(OAuth)
14.6 素材管理
14.6.1 新增临时素材
1
14.6.2 获取临时素材
1
14.6.3 新增永久素材
1
14.6.4 获取永久素材
1
14.6.5 删除永久素材
1
14.6.6 修改永久图文素材
1
14.6.7 获取素材总数
1
14.6.8 获取素材列表
1
14.7 用户管理
14.7.1 用户标签管理
8
14.7.2 设置用户备注名
1
14.7.3 获取用户基本信息(UnionID机制)
1
14.8 帐号管理
14.8.1 创建二维码
1
14.8.2 获取下载二维码的地址
1
14.8.3 长链接转短链接
1
14.9 数据统计接口
14.9.1 用户分析数据接口
2
14.9.2 图文分析数据
6
14.9.3 消息分析数据
7
14.9.4 接口分析数据接口
2
14.10 微信JS-SDK
14.10.1 获取验证地址
1
14.10.2 获取AccessToken
1
14.10.3 刷新access_token
1
14.10.4 获取用户基本信息
1
14.10.5 检验授权凭证(access_token)是否有效
1
14.11 微信小店接口
14.11.1 语意理解接口
1
14.12 微信卡券接口
14.12.1 创建卡券
3
14.12.2 投放卡券
7
14.12.3 核销卡券
3
14.12.4 管理卡券
10
14.12.5 会员卡专区
4
14.12.6 朋友的券专区
7
14.12.7 第三方代制专区
9
14.12.8 第三方强授权相关接口
3
14.13 微信门店接口
14.13.1 上传图片
1
14.13.2 创建门店
1
14.13.3 查询门店信息
1
14.13.4 查询门店列表
1
14.13.5 修改门店服务信息
1
14.13.6 删除门店
1
14.13.7 获取门店类目表
1
14.13.8 设备功能介绍
1
14.14 多客服功能
14.14.1 客服管理接口
6
14.14.2 多客服会话控制接口
5
14.14.3 获取客服聊天记录接口
1
14.15 摇一摇周边
14.15.1 申请开通摇一摇周边
2
14.15.2 设备管理
5
14.15.3 页面管理
4
14.15.4 素材管理
1
14.15.5 配置设备与页面的关联关系
2
14.15.6 数据统计
4
14.15.7 Html5页面获取设备信息
7
14.15.8 获取设备及用户信息
1
14.15.9 摇一摇红包
4
14.16 微信连Wi-Fi
14.16.1 第三方平台获取开插件wifi_token
1
14.16.2 Wi-Fi门店管理
4
14.16.3 Wi-Fi设备管理
4
14.16.4 配置联网方式
2
14.16.5 商家主页管理
2
14.16.6 Wi-Fi数据统计
1
14.16.7 卡券投放
2
14.17 小程序
14.18 异步方法
6
第15章 模板消息
15.1 概述
15.2 使用规则
15.3 申请模板消息
15.3.1 开通模板消息功能
15.3.2 添加消息模板
15.3.3 创建自定义消息模板
15.4 接口介绍
15.4.1 设置所属行业
1
15.4.2 获取设置的行业信息
1
15.4.3 获得模板ID(添加模板)
1
15.4.4 获取模板列表
1
15.4.5 删除模板
1
15.4.6 发送模板消息
6
15.4.7 事件推送
1
15.4.8 异步方法
1
第16章 微信网页授权(OAuth 2.0)
16.1 OAuth2.0简介
1
16.2 设置微信OAuth回调域名
16.3 开发微信OAuth接口
1
16.3.1 创建Controller
1
16.3.2 GetAuthorizeUrl()方法
2
16.3.3 GetAccessToken()方法
1
16.3.4 GetUserInfo()方法
2
16.3.5 RefreshToken()方法
16.3.6 Auth()方法
16.4 异步OAuth接口
16.5 调试OAuth
16.5.1 调试工具
16.5.2 设置
16.6 使用 SenparcOAuthAttribute 实现 OAuth 自动登录
16.6.1 SenparcOAuthAttribute 定义
1
16.6.2 使用 SenparcOAuthAttribute
5
16.7 解决 OAuth 出现 40029(invalid code)错误
16.7.1 现象和问题
16.7.2 原因
16.7.3 解决方案一
16.7.4 解决方案二
16.7.5 解决方案三
16.7.6 解决方案四
2
16.7.1 解决方案总结
16.8 一些误区和注意点
16.8.1 每次打开页面都使用OAuth获取OpenId
1
16.8.2 认为不使用https没有关系
16.8.3 在Callback(redirectUrl)页面直接输出页面
2
16.8.4 短信通知包含需要OAuth的网页(体验问题)
16.8.5 不使用OAuth,而使用菜单事件判断来访者身份
第17章 其他帮助类及辅助接口
17.1. 概述
17.2 序列化和 JSON 相关
17.2.1 SerializerHelper
5
17.2.2 WeixinJsonConventer
17.2.3 JsonSetting
4
17.3 时间帮助类:DateTimeHelper
1
17.4 加密解密
17.4.1 MD5
1
17.4.2 SHA1
1
17.4.3 AES
2
17.5 浏览器相关
17.5.1 判断当前网页是否在浏览器内
2
17.6 JS-SDK
17.6.1 获取签名信息
3
17.6.2 JsSdkUiPackage
5
17.6.3 获取 SHA1 加密信息
1
17.6.4 卡券相关
4
17.7 地图及位置
17.7.1 LBS 位置计算帮助类:GpsHelper
1
17.7.2 百度地图
2
17.7.3 谷歌地图
2
第18章 微信网页开发:JS-SDK
18.1 概述
1
18.2签名
18.2.1 通过JsApiTicketContainer获取jsapi_ticket
18.2.2 获取签名
18.3 JS-SDK使用步骤
18.3.1 第一步:绑定域名
1
18.3.2 第二步:引入JS文件
1
18.3.3 第三步:通过config接口注入权限验证配置
2
18.3.4 第四步:通过ready接口处理成功验证
1
18.3.5 第五步:通过error接口处理失败验证
1
18.4 接口调用说明
18.5 基础接口
18.6 具体业务接口
18.6.1 分享接口
18.6.2 图像接口
18.6.3 音频接口
18.6.4 智能接口
18.6.5 设备信息
18.6.6 地理位置
18.6.7 摇一摇周边
18.6.8 界面操作
18.6.9 微信扫一扫
18.6.10 微信小店
18.6.11 微信支付
1
18.6.12 微信卡券
18.7 参考资料
18.7.1 所有菜单项列表
18.7.2 卡券扩展字段cardExt说明
18.7.3 所有JS接口列表
第19章 微信支付
2
19.1 支付模式
19.1.1 刷卡支付
19.1.2 扫码支付
19.1.3 公众号支付
19.1.4 APP支付
19.2 申请微信支付
19.2.1 流程介绍
1
19.2.2 第一步:申请开户
19.2.3 第二步:小额打款
1
19.2.4 第二步:支付验证费用
19.3 获取商户证书
19.3.1 接收邮件
19.3.2 安装操作证书
19.3.3 下载证书
19.3.4 一些注意点
19.4 接口规则
19.4.1 协议规则
19.4.2 参数规定
19.4.3 安全规范
1
19.4.4 获取OpenId
19.5 公众号支付
19.5.1 支付场景介绍
19.5.2 公众号后台的配置
19.5.3 设置测试目录
19.5.4 商户后台的配置
19.5.5 业务流程
1
19.5.6 HTML5页面调起支付API
1
19.6 微信支付API
19.6.1 统一下单
3
19.6.2 查询订单
19.6.3 关闭订单
19.6.4 申请退款
19.6.5 查询退款
19.6.6 下载对账单
19.6.7 支付结果通知
19.6.8 交易保障
19.7 企业付款
19.7.1 概述
19.7.2 企业付款 API
19.7.3 查询企业付款 API
19.8 微信支付Demo开发
19.8.1 后端开发
19.8.2 前端开发
19.9 需要注意的一些事
19.9.1 关于服务器SSL版本
1
19.9.2 关于IPv6
19.9.3 关于阿里云主机
第20章 微信小程序
1
20.1 注册小程序
1
20.2 管理信息及微信认证
20.2.1 信息设置
1
20.2.2 微信认证
20.3 准备开发
20.3.1 开发参数设置
20.3.2 添加开发者和体验者
20.3.3 下载开发工具
1
20.3.4 开发第一个小程序
11
20.3.5 预览小程序
20.3.6 发布小程序
20.4 使用 SDK 进行后端开发
20.4.1 Senparc.Weixin.WxOpen.dll
1
20.4.2 对接MessageHandler
6
20.4.3 回复客服消息
2
20.4.4 获取二维码
4
20.4.5 其他高级接口
20.5 使用模板消息
20.5.1 概述
20.5.2 第一步:选取消息模板
20.5.3 第二步:设置并添加模板
20.5.4 第三步:发送模板消息
3
20.5.5 申请模板
20.6 实现数据请求
4
20.7 登陆接口及用户信息管理
20.7.1 登陆:wx.login
3
20.7.2 登录状态维护:SessionContainer
2
20.7.3 验证:wx.checkSession
1
20.7.4 签名加密
2
20.7.5 加密数据解密算法
3
20.8 实现WebSocket 通讯
20.8.1 关于 WebSocket
20.8.2 在服务器上配置 WebSocket
20.8.3 使用 Senparc.WebSocket 进行 WebSocket 开发
13
20.9 小程序的微信支付
20.10 小程序开发过程中的常见问题
20.10.1 使用HTTPS
20.10.2 安装WMSVC证书
20.10.3 申请免费的SSL证书
20.10.4 解决Unexpected response code: 200 错误