吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8494|回复: 25
收起左侧

[其他原创] 一个php文件实现企业微信推送通知,企业微信实现发送应用消息,推送通知到微信

  [复制链接]
yuupuu 发表于 2021-9-18 10:36
本帖最后由 yuupuu 于 2021-9-18 10:38 编辑

摘要
众所周知,服务号是具有模板消息的接口的,可以主动向用户推送通知消息,但前段时间,微信团队开始向开发者通知模板消息即将调整为订阅消息,即用户接受订阅,才能收到推送恰好企业微信没有做改变,则我们可以通过企业微信实现接收通知。

配置步骤
1、注册企业微信,个人也可以注册
2、注册后,登陆企业微信,完善基本信息
3、点击应用管理->自建->创建应用


image.png

4、创建成功后,简单修改下自己的资料
5、获取企业ID和Secret


企业ID在我的企业可以获取

image.png

应用Secret在你创建的应用处可以查看

image.png

开发
根据企业微信API请求流程可知,要想调用企业微信API,先获得access_token并缓存,因为每天的调用次数有限,access_token有效期为2小时,所以要进行缓存。然后再调用业务API,完成你请求的接口。我这里用单页面实现整个过程(获取access_token,缓存access_token,发送推送)
[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
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
83
84
85
86
87
88
<?php
 
// 声明页面header
header("Content-type:text/html;charset=utf-8");
 
// 获取access_token
function getToken(){
 
    // 定义id和secret
    $corpid='你的企业微信企业ID';
    $corpsecret='你的企业微信secret';
 
    // 读取access_token
    include './access_token.php';
 
    // 判断是否过期
    if (time() > $access_token['expires']){
 
        // 如果已经过期就得重新获取并缓存
        $access_token = array();
        $access_token['access_token'] = getNewToken($corpid,$corpsecret);
        $access_token['expires']=time()+7000;
         
        // 将数组写入php文件
        $arr = '<?php'.PHP_EOL.'$access_token = '.var_export($access_token,true).';'.PHP_EOL.'?>';
        $arrfile = fopen("./access_token.php","w");
        fwrite($arrfile,$arr);
        fclose($arrfile);
 
        // 返回当前的access_token
        return $access_token['access_token'];
 
    }else{
 
        // 如果没有过期就直接读取缓存文件
        return $access_token['access_token'];
    }
}
 
// 获取新的access_token
function getNewToken($corpid,$corpsecret){
    $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret={$corpsecret}";
    $access_token_Arr =  https_request($url);
    return $access_token_Arr['access_token'];
}
 
// curl请求函数
function https_request ($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $out = curl_exec($ch);
    curl_close($ch);
    return  json_decode($out,true);
}
 
// 发送应用消息函数
function send($data){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.getToken());
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    return curl_exec($ch);
}
 
// 文本卡片消息体
$postdata = array(
    'touser' => '@all',
    'msgtype' => 'textcard',
    'agentid' => '1000002',
    'textcard' => array(
        'title' => '测试卡片的标题',
        'description' => '测试卡片的描述',
        'url' => 'http://www.qq.com',
        'btntxt' => '阅读全文',
    ),
    'enable_id_trans' => 0,
    'enable_duplicate_check' => 0,
    'duplicate_check_interval' => 1800
);
 
// 调用发送函数
echo send(json_encode($postdata));
?>

说明
文本卡片消息体是发送文本卡片的数据,通过JSON格式数据进行发送给企业微信API,具体的参数说明请看开发文档:https://work.weixin.qq.com/api/doc/90000/90135/90236

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
// 文本卡片消息体
$postdata = array(
    'touser' => '@all',
    'msgtype' => 'textcard',
    'agentid' => '1000002',
    'textcard' => array(
        'title' => '测试卡片的标题',
        'description' => '测试卡片的描述',
        'url' => 'http://www.qq.com',
        'btntxt' => '阅读全文',
    ),
    'enable_id_trans' => 0,
    'enable_duplicate_check' => 0,
    'duplicate_check_interval' => 1800
);


touser为@all就是向所有人推送消息,msgtype就是当前发送的类型,agentid就是当前应用的id,textcard就是一些参数(标题、跳转的链接等)。除了上面的消息类型,还有文本消息、图片消息、语音消息、视频消息、图文卡片消息等,具体可以查看开发文档,配置发送的消息体。

image.png

如果你微信关注了这个应用,那么就可以在微信收到通知,如过没有关注,就只能在企业微信内收到通知。

免费评分

参与人数 8吾爱币 +14 热心值 +7 收起 理由
xnink + 1 谢谢@Thanks!
天真就是傻 + 1 + 1 谢谢@Thanks!
dreamingfly + 1 + 1 谢谢@Thanks!
blindcat + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
WX4885 + 1 + 1 用心讨论,共获提升!
huxiaokui + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
诗和远方代言人 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dreamingfly 发表于 2021-9-20 01:19
非常感谢楼主的代码,我稍做修改实现了WordPress网站评论推送,希望对需要的人有所帮助:https://www.jishusongshu.com/network-tech/work-weixin-push-website-comment/
kover 发表于 2022-12-7 17:43
dreamingfly 发表于 2021-9-20 01:19
非常感谢楼主的代码,我稍做修改实现了WordPress网站评论推送,希望对需要的人有所帮助:https://www.jishu ...

可以做回调接口吗?没看到有加密解密的代码在里面呢
阿傑 发表于 2021-9-18 10:45
wikiyc 发表于 2021-9-18 10:57
很好的思路 ,谢谢分享。
龍謹 发表于 2021-9-18 13:21
谢谢分享,学习到了!
Lambor_G 发表于 2021-9-18 14:02
微信怎么关注这应用
leobron 发表于 2021-9-18 15:07
学习一下
blindcat 发表于 2021-9-18 15:43
学习一下,感谢分享
无知灰灰 发表于 2021-9-18 17:42
楼主是里客云的大佬??
 楼主| yuupuu 发表于 2021-9-22 09:47
无知灰灰 发表于 2021-9-18 17:42
楼主是里客云的大佬??

是里客云的,但不是大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-13 21:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表