吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7220|回复: 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] 纯文本查看 复制代码
<?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] 纯文本查看 复制代码
// 文本卡片消息体
$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, 2024-4-25 01:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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