当前位置:小鱼儿玄机二站 > 编程应用 > PHP微信开发之模板消息回复_php实例_脚本之家,微

PHP微信开发之模板消息回复_php实例_脚本之家,微

文章作者:编程应用 上传时间:2019-11-26

微信公众平台上,有个模板消息回复接口:可以用来实现回复特定的消息-----比如用户下了订单之后,回复给用户您的订单正在处理中...比如下面这张图:

前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下。

用户进行了一些操作之后,服务号能够返回特定的消息----这就是模板消息。

微信公众平台技术文档:模板消息接口

要实现模板消息的回复,你的公众号必须是经过微信认证的,如果是个人的订阅号,暂时不支持微信认证。不过也不影响做测试-----你可以使用测试公众号:

一、概述

使用测试号的时候,接口信息的配置就不讲了,可以参考我之前的博客。

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

使用维码登录测试号之后,需要用你的微信号去关注这个测试号,不然看不到模板消息的回复。

关于使用规则,请注意:

我在做测试的时候,用了chrome浏览器的一个插件:postman。该插件可以指定发送GET,POST等各种HTTP请求,功能强大,在测试接口时很有用。

1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限; 2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业; 3、在所选择行业的模板库中选用已有的模板进行调用; 4、每个账号可以同时使用25个模板。 5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。

1、发送GET请求获取测试号的access_token:

关于接口文档,请注意:

发送一个POST请求,并带上参数:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容; 2、模板中参数内容必须以”.DATA”结尾,否则视为保留字; 3、模板保留符号”{{ }}”。

请求:

看微信公众平台接口文档最开始我的内心是崩溃的,因为目录列表一开始就是设置所属行业,获取所属行业信息等。后来整理思路,我们主要负责的功能的实现,就不去考虑那么多其他的内容,直接弄模板消息的发送。但是发送模板之前有一个很重要的步骤,就是模板ID。微信公众平台发送模板消息有严格的要求,参考模板消息运营规范。

 { "industry_id1":"1", "industry_id2":"2" }

二、模板消息的设计

参数里的1和2表示所属的行业,具体的行业可以参考文档:

这里是依靠微信公众平台测试公众号的模板消息接口来设计消息模板,通过行业类型来获取模板的同学还是参考微信公众平台的官方文档来学习。

具体发送post请求大家可以使用curl发送,应该不难。我使用postman来发送。发送完成之后返回成功的json消息,然后就可以进行下一步

1 新增模板消息

3、获得模板ID:这一块你可以自定义,也可以使用微信内置的一些。

微信的测试公众号为我们提供了测试的消息模板,最多可添加10个,新增测试模板。

比如使用自定义的模板ID:在你的测试号里有个“新增测试模板”

添加模板标题和模板内容

提交之后,就可以看到自己模板ID出现了:

模板标题比较好理解,模板内容需要设计参数,参数需以{{开头,以.DATA}}结尾。

然后另一种生成模板ID的方法是发送post请求

例如:{{first.DATA}}

请求:

first就是我们接口传的参数。

 { "template_id_short":"TM00015" }
{{first.DATA}} 商品:{{keynote1.DATA}} 价格:{{keynote2.DATA}} 日期:{{keynote3.DATA}} {{remark.DATA}}

其中的TM00015是微信内置的模板的ID,你可以在

新增之后就可以看到模板记录,就有我们需要的模板ID了。有了模板ID我们就可以按照接下来的微信公众平台发送模板消息接口来实现我们的功能。

4、获得模板ID之后,刷新你的测试号页面,可以看到出现了:

三、发送模板消息

5、用你得到的template_id_short,再发送一个post请求就可以得到一个msgid:

1 接口调用请求说明

请求:

http请求方式: POST

 { "touser":"测试号的关注者的openId", "template_id":"你刚才得到的模板ID", "url":"关注者点击你的模板消息时跳转的链接", "data":{ "first": { "value":"恭喜你购买成功!", "color":"#173177" }, "orderMoneySum":{ "value":"666", "color":"#173177" }, "orderProductName": { "value":"男士正装", "color":"#173177" }, "Remark":{ "value":"欢迎再次购买!", "color":"#173177" } } }

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

color表示你的模板里字段的颜色

2 POST数据说明

官方的文档里没有对上面的参数作说明,我在上面用中文写出了每个字段的意思,其中需要注意的是,touser不是关注者在微信客户端的“微信号”,而是如下图里的微信号

POST数据示例如下:

把参数用post方式发送之后,就会得到一个msgid:

 { "touser":"OPENID", "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", "url":"http://weixin.qq.com/download", "miniprogram":{ "appid":"xiaochengxuappid12345", "pagepath":"index?foo=bar" }, "data":{ "first": { "value":"恭喜你购买成功!", "color":"#173177" }, "keynote1":{ "value":"巧克力", "color":"#173177" }, "keynote2": { "value":"39.8元", "color":"#173177" }, "keynote3": { "value":"2014年9月22日", "color":"#173177" }, "remark":{ "value":"欢迎再次购买!", "color":"#173177" } } }

得到这个成功响应的时候,同时,你的测试公众号应该也返回了一个模板消息给你

3 参数说明

本文只是介绍怎样做出一个模板消息,如果想用到项目里,还请自行翻阅微信开发者文档,结合微支付,事件推送等高级功能一起来做。

参数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

是否必填

说明、

touser 是 接收者openid template_id 是 模板ID url 否 模板跳转链接 miniprogram 否 跳小程序所需数据,不需跳小程序可不用传该数据 appid 是 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系) pagepath 是 所需跳转到小程序的具体页面路径,支持带参数, data 是 模板数据

注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

4 java接口开发

public class TemplateData { private String value; private String color; public String getValue() { return value; } public void setValue { this.value = value; } public String getColor() { return color; } public void setColor { this.color = color; } }

public class WechatTemplate { private String touser; private String template_id; private String url; private Map data; public String getTouser() { return touser; } public void setTouser { this.touser = touser; } public String getTemplate_id() { return template_id; } public void setTemplate_id { this.template_id = template_id; } public String getUrl() { return url; } public void setUrl { this.url = url; } public Map getData() { return data; } public void setData(Map data) { this.data = data; } } 

public class TemplateMessageServiceImpl implements TemplateMessageService{ private RestTemplate restTemplate ; private String serviceHost = "https://api.weixin.qq.com"; public TemplateMessageServiceImpl() { restTemplate = RestTemplateFactory.makeRestTemplate(); } @Override public WeixinResponse sendTemplateMessage(String accessToken, WeixinTemplate weixinTemplate) { WeixinResponse weixinResponse = null; String url = new StringBuffer.append("/cgi-bin/message/template/send?access_token=") .append.toString(); weixinResponse = restTemplate.postForObject(url, weixinTemplate, WeixinResponse.class,new HashMap; return weixinResponse; }}

说明:简单理解模板消息发送,首先是获取accessToken,(如何获取请参考:微信公众平台 获取access_token)。其次是模板消息的参数封装,最后就是http的post请求。我的http请求是使用Spring的restTemplate进行请求,就不用我单独写一个http请求方法,如果没有使用可以写一个http请求的工具类。

package com.plateno.weixin.message.model;public class WeixinResponse { private String msgid; private int errcode; private String errmsg; public String getMsgid() { return msgid; } public void setMsgid { this.msgid = msgid; } public int getErrcode() { return errcode; } public void setErrcode { this.errcode = errcode; } public String getErrmsg() { return errmsg; } public void setErrmsg { this.errmsg = errmsg; } @Override public String toString() { StringBuffer buf = new StringBuffer("WeixinResponse[msg,errcode=").append .append.append; return buf.toString(); }}

四、事件推送

在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。

1 送达成功时

    1395658920   200163836  

参数

说明

ToUserName 公众号微信号 FromUserName 接收模板消息的用户的openid CreateTime 创建时间 MsgType 消息类型是事件 Event 事件为模板消息发送结束 MsgID 消息id Status 发送状态为成功

2 送达由于用户拒收而失败时

    1395658984   200163840  

参数

说明

ToUserName 公众号微信号 FromUserName 接收模板消息的用户的openid CreateTime 创建时间 MsgType 消息类型是事件 Event 事件为模板消息发送结束 MsgID 消息id Status 发送状态为用户拒绝接收

3 送达由于其他原因失败时

    1395658984   200163840  

参数

说明

ToUserName 公众号微信号 FromUserName 接收模板消息的用户的openid CreateTime 创建时间 MsgType 消息类型是事件 Event 事件为模板消息发送结束 MsgID 消息id Status 发送状态为发送失败

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文由小鱼儿玄机二站发布于编程应用,转载请注明出处:PHP微信开发之模板消息回复_php实例_脚本之家,微

关键词: