方糖气球的Server酱服务由于其广泛的使用已经成为微信消息通知的代名词,黑鸟博客一直也用其来接收站内的新评论通知。但是微信官方发布通知将在4月底下线模板消息,受到影响的Server酱旧版将在4月后下线,新开发的是以企业微信为主的多通道版本( Turbo版 )。
而新Turbo版服务是有一些限制的,没氪金情况为每分钟最多1条,免费版每天5条的限制。实际上这个企业微信是随便都可以注册的,暂时无需提供任何企业证明,且稍微操作后微信 app 端也可以收到推送,那我们就不如自己整一个推送通道。
要先注册企业微信,我们可以直接看server酱的教程,记下教程里的应用ID( agentid ),应用Secret( secret ),企业ID。
代码比较简陋,仅仅是能用的程度。企业微信支持很多种消息,这只卡片消息一种
企业微信的api文档:https://work.weixin.qq.com/api/doc/90000/90135/90236
访问时带上参数就行,get post都可以。如
http://example.com/server.php?corpid=xxx&corpsecret=xxx&agentid=xxx&title=title&description=desc&url=url
申请企业微信具体操作(搬运方糖气球的教程):
第一步,注册企业
用电脑打开企业微信官网,注册一个企业
第二步,创建应用
注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
应用名称填入「Server酱」,应用logo到这里下载,可见范围选择公司名。
创建完成后进入应用详情页,可以得到应用ID( agentid ),应用Secret( secret ),复制并填到上方。
第三步,获取企业ID
进入「我的企业」页面,拉到最下边,可以看到企业ID,复制并填到上方。推送UID直接填 @all
,推送给公司全员。
第四步,推送消息到微信进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。
代码:
<?php $corpid = $_REQUEST['corpid']; //企业id $corpsecret = $_REQUEST['corpsecret']; //应用secret $agentid = $_REQUEST['agentid']; //应用id // 2021-04 // 黑鸟博客 guihet.com //如果就自己用,可以把参数写到这里。 //$corpid = ''; //$corpsecret = ''; //$agentid = ; $title = $_REQUEST['title']; //消息title $description = $_REQUEST['description']; //消息内容 $description = str_replace(PHP_EOL, '<br>', $description); $url = $_REQUEST['url']; //消息跳转url if(!$corpid or !$corpsecret or !$agentid){ exit("canshu buquan"); } //获取access_token $response = CurlGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret","",""); $access_token = json_decode($response)->access_token; if(!$access_token){ exit("canshu cuowu"); }else{ $json = '{"touser":"@all","msgtype":"textcard","agentid":"","textcard":{"title":"","description":"","url":"","btntxt":"更多"},"safe":1,"enable_id_trans":0,"enable_duplicate_check":0}'; $json = json_decode($json); $json->agentid = $agentid; $json->textcard->title = $title ? $title : '无标题'; $json->textcard->description = $description ? $description : '无内容'; $json->textcard->url = $url ? $url : 'URL'; echo CurlPost("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$access_token","", json_encode($json)); } function CurlGet($url,$cookies = "",$UserAgent = "") { $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_REFERER, ''); curl_setopt($curl, CURLOPT_COOKIE, $cookies); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); if ($UserAgent != "") { curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent); } curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($curl); curl_close($curl); return $response; } function CurlPost($url, $cookies="", $post_data="", $headers=array(), $refer="", $UserAgent = '') { $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent); curl_setopt($curl, CURLOPT_COOKIE, $cookies); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); if ($refer != '') { curl_setopt($curl, CURLOPT_REFERER, $refer); } curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); $response = curl_exec($curl); curl_close($curl); return $response; }
实测通过
{"errcode":0,"errmsg":"ok","invaliduser":""} 会报这个错 但是推送可以成功
这个不是报错,是服务器给你的回应,包括是否支持成功等状态信息,你看那个ok ,就表示这次请求问题不大