基础知识
理清公众号配置的域名
- 业务域名
设置业务域名后,在微信内访问该域名下页面时,不会被重新排版。 - 网页授权域名
指用户同意授权后,微信会把回调信息传到该域名下的某地址(code值)。 - JS接口安全域名
该域名下请求的地址能使用微信的js接口。
比较网页授权中的access_token和基础支持中的access_token
开发文档提到网页授权中的access_token和基础支持中的access_token不同,但是具体有哪些不同,并没有说清楚。
- 网页授权中的access_token,时间很短,最好是每次都重新获取;
- 网页授权中的access_token,不能复用;
- 网页授权中的access_token,调用次数不限。
梳理微信认证流程(简称三次握手)
- 用户同意授权,获取code;
- 通过code换取网页授权access_token,用户openId等信息;
- 通过access_token和用户的openId获取该用户的用户信息。
调整公众号SSL安全策略
微信团队发布重要安全策略调整,将关闭掉SSLv2、SSLv3版本支持,不再支持部分使用SSLv2、SSLv3或更低版本的客户端调用。
在PHP代码中增加一句:curl_setopt($ch, CURLOPT_SSLVERSION, 1);
HTTPS协议 = HTTP + SSL/TLS
TLS = SSL升级版
SSL:协议是HTTP的补充,使用加密等方法让HTTP更安全,版本为1、2、3。
TLS:基于SSL v3的升级版协议,目前版本发展为1.0、1.1、1.2、1.3。
目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。
JSSDK
Sea.js与JSSDK的不兼容
问题:require('jweixin-1.0.0')
报错 wx is not undefined
解决:将微信 JSSDK 挪到 sea.js 之前,就正常了。查看 jwexin-1.0.0.js 源码发现,如果有了 define()
这个全局方法,微信 JSSDK 是当做 require()
的结果返回,不再生成 window.wx
这个对象。
以下文章指出改用 seajs.use(),但其实这并不符合规范,use
理论上只用于加载启动,不应该出现在 define
中的模块代码里。在模块代码里需要异步加载其他模块时,推荐使用 require.async
方法。1
2
3require.async('http://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(wx){
....
});
http://www.jianshu.com/p/4700de120d53
微信自定义分享
- JSSDK自定义分享:页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
- 移动端页面分享到微信的方案:http://feizhaojun.com/?p=761
录音功能
要考虑误操作导致录音无效的场景(如:反复点击、误触摸)。
https://www.cnblogs.com/liujunyang/p/4962423.html
功能实现
公众号推送单图文跳转外部链接
2014年11月底前的开通微信支付的公众号,有商品消息功能,可以实现该需求。
http://www.henkuai.com/thread-7990-1-1.html
另外参考使用以下方法:
- 群发
- 客服接口
- 关注时回复(被动回复图文消息)
https://www.zhihu.com/question/22032291
点开文章查看答案的效果
利用动画完成:
http://www.songshuyule.com/wenzhang/BJaBQd1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>微信推文效果-点开全文显示动画</title>
<style>
.outer{
border: 0 none;
box-sizing: border-box;
margin: 0 auto;
}
.inner1{
line-height: 1.75em;
text-align: center;
white-space: normal;
}
.inner1 span{
color: #A5A5A5;
font-size: 12px;
}
.inner2{
height: 180px;
overflow-x: hidden;
overflow-y: auto;
text-align: center;
box-sizing: border-box;
padding: 10px;
border: 1px solid rgb(238, 238, 238);
}
.inner2_top{
border: 0 none;
box-sizing: border-box;
}
.inner2_top p{
margin-bottom: 10px;
white-space: normal;
color: rgb(127, 127, 127);
font-size: 14px;
}
.inner2_bottom{
box-sizing: border-box;
}
.inner2_bottom svg{
margin-top: -180px;
box-sizing: border-box;
transform: rotateZ(0deg);
-webkit-transform: rotateZ(0deg);
-moz-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
}
.inner2_bottom svg rect{
fill: rgb(255, 255, 255);
box-sizing: border-box;
}
.inner2_bottom svg rect animate{
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="outer">
<p class="inner1">
<span>点击下方空白区域查看答案</span>
</p>
<div class="inner2">
<div class="inner2_top">
<p>如果觉得还不错</p>
<p>点个赞再走呗</p>
<p>嘿嘿</p>
</div>
<div class="inner2_bottom">
<svg height="200" width="100%" xmlns="http://www.w3.org/2000/svg">
<rect height="200" width="100%">
<animate attributeName="opacity" begin="click" dur="6s" fill="freeze" from="1" to="0"></animate>
</rect>
</svg>
</div>
</div>
</div>
</body>
</html>可以查看HTML源码的编辑器
i排版:http://ipaiban.com/bianji.jsp
查看公众号历史消息功能的链接
点开现有的历史消息功能,复制链接就好了…………就是这么简单。
使用细节
公众号手机端实时阅读数与后台图文分析的数据有较大出入
咨询过客服,原因有以下:
- 统计时间差
- 阅读来源不同
- 数据过滤规则不一致
公众平台-用户管理-搜索
最新关注的用户无法在搜索框搜到,猜测是搜索列表有缓存(网上说是两天),旧的用户可以在列表中搜索得到。
微信群自动回复等机器人实现
使用了第三方软件,即往群里投机器人,设置好规则后他会自动发言。
自我理解:软件拿到我们的微信账号,替我们发言。因为我们不能在机器人上线期间同时上线,否则机器人会掉线。
开发细节
页面缓存
- 在资源路径的URL添加参数
- 借助gulp自动添加
- Android微信的缓存清理:http://debugx5.qq.com/
过期的临时二维码
过期后,临时二维码将直接无法扫出东西。
微信二维码的识别原理
接口细节
客服功能
注意点:用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过30分钟,则会自动关闭客服功能,所有消息回到我们服务器上来接收。
消息管理
被动回复
- 回复图文消息
图片:url,即可以使用跳链 - 回复图片消息
图片:media_id
素材管理
选择的图片位置必须为本地图片,不能使用在线URL。
消息管理
群发消息
上传图文所需的缩略图素材:用的是临时素材的media_id,type=image(据说thumb_media_id也行,type=thumb)。
批量分组打标签
- 当其中一个 openid 无效时,报错40003,其他 openid 不能正常完成;
- 当其中一个 openid 未关注关注公众号时,未报错,其他 openid 正常完成;
- 当其中一个 openid 已存在该标签时,未报错,其他 openid 正常完成。
小程序
消息的接收和发送
使用发送客服消息接口进行回复消息,而不是公众号的发送被动响应消息,它没有被动消息模式,除了转入网页版微信客服系统。
客服消息
图文:thumb_url 是在线 URL 就行,无需 meadia 的获取。