微信模板消息php
1. 微信小程序 实现模板消息群发、发送给指定用户
最近在做一款拼课类小程序,大概需求就是分享课程页面给好友,好友参与达到一定数量后则拼课成功。
按理说很平常的需求,微信公众号里边应该很容易实现拆配,但是想在小程序里边实现这么个功能却有点蛋疼了。
为什么小程序实现起来比较费劲呢,那就要说下小程序发送模板消息的机制了,先看文档怎么说:
划重点, 本人 、 交互 ,也就是说这个模板消息,必须由用户手动来触发,你想后台定时给用户推个消息,洗洗睡吧你。
再来看下面:
这个重点你们自己划吧,发模板消息必须满足这两种情况中的一种,支付就不说了,用户付款后可以推送几条消息,重点是这个 表单提交 。
意思就是我想给用户发个模板消息,第一要搞个表单,第二要让用户来提交这个表单(获取formId),而且这个模板消息还只能发给提交表单的用户本人,你想发给别的用户,呵呵。
好了,说多了都是气,既然这样设计,也是有一定道理,但是道理都是讲给守规矩的人听的,至于不守规矩的,喂!说的就是你。
通过上面的分析我们知道,想发送一个基本的模板消息需要以下步骤:
模板消息接口 POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN 有这么几个参数 :
前面扯了一堆概念,下面我们来把这个功能具体的实现一遍吧,我这里后台用的是php laravel,原理都一样。
我这只写一个例子,一看就明白
有些时候用户操作频繁,可能会导致服务器收到大量请求,所以可以优化下,把formId先存到一个全局变量里边(数组),当达到一定数量后统一发给后台来保存。这块可以灵活运用。
服务端的实现也就两个功能, 收集 和 发送 。
假设我们现在有这么一个类FormIdCollection,可以收集(save)和获取(get)某个openid的formId,那我们给前台暴露的api只需要简单的调用下就可以了,至于发消息,也只需要get一个formId,即可。
下面是FormIdCollection类的一个具体实现,基于laravel(说实话,挺好用的),另外引芹御谨入了一个微信开发包 overtrue/wechat (这里主要是用嫌基来发模板消息、有点大材小用了), https://www.easywechat.com/
我已经封装了一个laravel扩展包,感兴趣的朋友可以上github上看下 https://github.com/laravuel/laravel-wfc 。
至于非框架的php实现,小伙伴可以帮忙弄下。
2. php 微信模板消息 5000人的推送
1、php+redis 消息队列
2、swoole异步执行
想玩并发的话,php 的话除了 pcntl_fork 多个进程跑脚本,本身有批处理的模块,可以用 curl_multi_* 批量发送
3. 求微信公众号接口 给客户发送信息的 PHP代码
你好,可以用客服消息接口或模板消息接口实现。但是需要认证公众号才能有权限。
认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限。
发送文字消息示例:
$postdata='{"touser":"o5BkRs_vRwfPqAb1ceXHfJDzmQ5o","msgtype":"text","text":{"content":"HelloWorld"}}';
$opts=array(
'http'=>array(
'method'=>'POST',
'Content-Length'=>strlen($postdata),
'Host'=>'api.weixin.qq.com',
'Content-Type'=>'application/json',
'content'=>$postdata
)
);
$context=stream_context_create($opts);
$result=file_get_contents('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=你的access_token',true,$context);
echo$result;
4. php发送1000条微信模板消息万多久
几分钟。
用swoole,循环task,就可以发送1000条微芦亩蔽庆信了,不需要耗费太长的时间陪并森,如果操作熟练的话,短短几秒钟也是有可能的。
消息的发送速度主要看你的操作熟练程度了,新手的话会稍微的慢一些,大概会花费几分钟的时间的。
5. PHP 同一时间 发送10W-100W微信模板消息,怎么解决速度上与稳定性...
用swoole,循环task 10w就6,7分钟吧
6. 帮忙写个微信公众平台模板消息范例 PHP
如图所示:openidid改成你自己的,接口URL改下,由于网络不等发链接
<?php
$access_token='_e8';
$url='改成接口URL?access_token='.$access_token;//access_token改成你的有效值
$data=array(
'first'=>array(
'value'=>'有一名客户进行了一次预约!',
'color'=>'#FF0000'
),
'keyword1'=>array(
'value'=>'2015/10/514:00~14:45',
'color'=>'#FF0000'
),
'keyword2'=>array(
'value'=>'都会型告备坦SPA',
'color'=>'#FF0000'
),
'keyword3'=>array(
'value'=>'1cvvvv',
'color'=>'#FF0000'
),
'keyword4'=>array(
滚基'value'=>'上海市浦东新区XXXXSPA馆',
'color'=>'#FF0000'
),
'keyword5'=>array(
'value'=>'无',
'color'=>'#FF0000'
),
'remark'=>array(
'value'=>'请您务必准时到场为客户提供SPA服务!',
'color'=>'#FF0000'
)
);
$template_msg=array('touser'=>'ojM5us46feM315cpmfQ9hAWfX8rE','template_id'=>'','topcolor'=>'#FF0000','data'=>$data);
$curl=curl_init($url);
$header=array();
$header[]='Content-Type:application/x-www-form-urlencoded';
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
//不输出header头信息
curl_setopt($curl,CURLOPT_HEADER,0);
//袜桐伪装浏览器
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/41.0.2272.118Safari/537.36');
//保存到字符串而不是输出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
//post数据
curl_setopt($curl,CURLOPT_POST,1);
//请求数据
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($template_msg));
$response=curl_exec($curl);
curl_close($curl);
echo$response;
7. php 推送微信公众号模板消息
很简单,谨中根据自己的控制器去调用类中的 cash_message( data)方法 openid就是微信的openid
data是需睁晌喊要推送悉野的信息
8. php如何编写一个微信公众平台的消息推送
给你个代码样例不可以直接复制使用
/**
*发送模板消息
*@param$tmpId模板ID
*@param$openId用户openID
*@param$param模板参数
*@param$url
*@returnmixed
*@authorfjlhuman
*/
publicfunctionsendTmpMessage($tmpId,$openId,$param,$url){
$postUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken;
$arrData['touser']=$openId;
$arrData['template_id']=$tmpId;//'6OT8DDNF-CbiadTsbEKKSCZVHe_9hnhxOBT7EvURNcE';
$arrData['url']=$url;
$arrData['data']=$param;
$json=json_encode($arrData);
$result=Curl::post($postUrl,$json);
$result=json_decode($result,true);
$rData['isTure']=false;
$rData['msg']="";
if($result['errcode']==0){
$rData['isTure']=true;
$rData['msg']="发送成功";
}else{
$rData['msg']=$result['errcode'];
}
return$rData;
}
详情请参考微信公众平台技术文档->模板消息接口
9. 微信公众号模板消息无法跳转到指定小程序页面
最近做了一个需求在公众号网页推送的模板消息,连接跳转到关联小程序,遇到总是跳转到首页的问题。说一下里面的坑
后端是PHP进 行消息发送 官方发送数据例子如下:
最开始 为了构造一个json数据格式,
第一步:我是先把 数据构造成一个多维数组 $arr,
第二步:$json_data = json_encode($arr),然后再 $json = urldecode($json_data);
第三步:再然后 就是 通过 curl_init 进行发送了,这里不再详述。
接下来有个坑,发送不成功,错误信息 如下
{“errcode”:40165,“errmsg”:"invalid weapp pagepath}
网络下,很快有了答案,说慧困官方文档有误,把 pagepath 改为 path 即可,我试了下,果然可以,消息推送正常,开心坏了!
奇怪的事情发生了,点击推送消息后没有跳转到小程序指定页面,一直是首页!
然后网络搜索各种答案,有说 路径参数名,改为 page(试了下居然可以),有的说 为 pagepath(这不是刚跳出来的坑吗?为啥别人居然可以成功发送?)
经过各种测试终于发现问题所在,第二步有问题!json_encode() 把原来数组中的路径 斜杠转义了! 'pages/auth/auth?id=6' 变成了 'pages\/auth\/auth?id=6' 难怪轮碧蚂找不到路径!
后来看了下手册,有防止 json_encode() 转义 斜杠的参数
JSON_UNESCAPED_SLASHES (不转义斜杠,对应的腊埋数字 64)
然后把第二步 改为 $json_data = json_encode($arr, JSON_UNESCAPED_SLASHES )
还得把 页面参数由 path 改为 pagepath (不改会报错!)
再发送消息就可以正常接收并跳转到指定小程序页面啦!下面是我的构造的正确的多维数组格式
10. php微信模版消息为什么收到空白
首先谨昌你得先在后台里建立自己的模版消息,然后通过设置好的模版消息进行对应的操作
操作的步骤为以下几个步骤:
1 设置所属行业
2 获取设置的行业信息
3 获得模板ID
4 获取模板祥局扒列表
5 删除模板
6 发送模板消息
7 事件推送
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
"errcode":0,
腊伍"errmsg":"ok",
"msgid":200228332
}
当返回的消息中errocde为0且返回了errmsg为OK和msgid后才说明发送的消息模版成功了