近日在做微信公众号的项目,简单理解就是一个商城:商品、交易(微信支付)、订单 等等功能
接到新需求,就是用户下单成功支付后,要给商家发送消息。
我在思考,因为需求刚过来的时候,说的是要有铃声提醒,我寻思吧,咱也不是APP,一个H5,而且是基于微信开发的,为什么这么说,因为做了网页版授权,基本上只能在微信里打开浏览器访问。
那么,我的建议是,做公众号模板消息提醒吧,咱这不就正好是微信公众号嘛。
1. 进入微信公众号
微信公众平台https://mp.weixin.qq.com/先从这个网页地址,进行登录。(注意,小程序这些也从这个入口登录的,需要使用微信公众号的账号密码进行登录,成功后就会跳转到公众号的管理端)
2. 新的功能
然后我们在左侧导航栏中,最下方,找到"新的功能",点击进入。
在右侧,我们能看到"广告与服务",找到"模板消息"
3. 模板消息
请注意哈,我这里是"已开通"里面,如果模板消息未开通的,请到"未开通"里面找到,并提交申请。
4. 申请模板消息
因为是已经开通过了的,所以申请页面,我这边不能截图了。记得大概是需要这样:
1. 选择主行业
2. 选择副行业
3. 申请说明
以上,基本上就是两个选项,一个填写,然后就提交。
我记得当时提交审核时,提示的是审核需要2-3个工作日,但是次日下午我上线,就发现通过了。这效率还是蛮高的嘛!!
5. 开通后的模板消息
功能说明,注意事项,使用条件,这些都需要看一下,比如一点就很关键:模板消息只对认证的服务号开放
上图中,我们点击下方的"查看功能",进入新的页面。
6. 我的模板
上图中,我们这时候并没有模板,就需要进行添加模板。
可以单击右边的按钮,从模板中添加。
可以看图中描述,模板还是很多的,当然我并没有一条一条的去看,我是去搜索,大概符合我的业务模板,然后采用。
说真的,模板实在太多,也确实,因为有太多的场景了,就比如一个新的订单,看看我搜索的:
有3页,每页20条,我随便找了一个用于演示吧。
点击下面的按钮"添加",进行添加模板。
然后返回到"我的模板"
7. 官方文档
模板消息 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html我们进入这个文档,能看到,这是"模板消息接口"
里面有很多,也有一些流程,比如我们可以不用向上面这样,在公众号里操作,而是直接对接这个文档接口,可以实现:设置行业、获取模板ID,获取模板列表,删除模板,发送模板消息 这些。
当然了,看情况,如果我们自己的项目中,业务中,不需要如此做,那我们就可以直接进入公众号进行设置即可。
那么这里的文档,我们最关注的,只有一个"发送模板消息"。
8. 发送模板消息
接口调用请求说明
http请求方式:
POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"miniprogram":{
"appid":"xiaochengxuappid12345",
"pagepath":"index?foo=bar"
},
"client_msg_id":"MSG_000001",
"data":{
"first": {
"value":"恭喜你购买成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2": {
"value":"39.8元",
"color":"#173177"
},
"keyword3": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
参数说明
参数 | 是否必填 | 说明 |
---|---|---|
touser | 是 | 接收者openid |
template_id | 是 | 模板ID |
url | 否 | 模板跳转链接(海外帐号没有跳转能力) |
miniprogram | 否 | 跳小程序所需数据,不需跳小程序可不用传该数据 |
appid | 是 | 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏) |
pagepath | 否 | 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏 |
data | 是 | 模板数据 |
color | 否 | 模板内容字体颜色,不填默认为黑色 |
client_msg_id | 否 | 防重入id。对于同一个openid + client_msg_id, 只发送一条消息,10分钟有效,超过10分钟不保证效果。若无防重入需求,可不填 |
注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
返回码说明
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
"errcode":0,
"errmsg":"ok",
"msgid":200228332
}
可能出现的返回码
返回码 | 含义 |
---|---|
43116 | 该模板因滥用被滥用过多,已被限制下发 |
第八点几乎都是照搬的官方手册。所以呀,还是要看官方手册。
9. 请求时遇到的问题
实战的话,同学们还是要自己玩一下,这里我们分享一下当时玩的时候遇到的。
首先,我第一次直接请求,我知道,post请求时,官方提供的这个地址,后面有一个access_token,这个肯定不是一个固定值"ACCESS_TOKEN"这个哈, 但是呢,先试试呗。
就真的出现了问题:
[
"errcode" => 40001
"errmsg" => "invalid credential, access_token is invalid or not latest, could get access_token by getStableAccessToken, more details at https://mmbizurl.cn/s/JtxxFh33r rid: "
]
意思就是说:无效的凭据,access_token无效或不是最新的,可以通过getStableAccessToken获得access_token
获取access_token,可以看一下我另一篇文章:
getStableAccessToken_龙枫995的博客-CSDN博客获取稳定版接口调用凭据,一章教你玩转getStableAccessTokenhttps://blog.csdn.net/longfeng995/article/details/130185005
然后发起请求,成功后就是这样的:
[
"errcode" => 0
"errmsg" => "ok"
"msgid" => 2886475568345546754
]
我使用的是我的微信号测试的,然后就收到了: