乐趣区

关于php:一个php文件实现企业微信推送通知企业微信实现发送应用消息推送通知到微信

摘要

家喻户晓,服务号是具备模板音讯的接口的,能够被动向用户推送告诉音讯,但前段时间,微信团队开始向开发者告诉模板音讯行将调整为订阅音讯,即用户承受订阅,能力收到推送恰好企业微信没有做扭转,则咱们能够通过企业微信实现接管告诉。

配置步骤

1、注册企业微信,集体也能够注册
2、注册后,登陆企业微信,欠缺根本信息
3、点击利用治理 -> 自建 -> 创立利用

4、创立胜利后,简略批改下本人的材料
5、获取企业 ID 和 Secret

企业 ID 在我的企业能够获取

利用 Secret 在你创立的利用处能够查看

开发

依据企业微信 API 申请流程可知,要想调用企业微信 API,先取得 access_token 并缓存,因为每天的调用次数无限,access_token 有效期为 2 小时,所以要进行缓存。而后再调用业务 API,实现你申请的接口。

我这里用单页面实现整个过程(获取 access_token,缓存 access_token,发送推送)

<?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/ap…

// 文本卡片音讯体
$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 就是一些参数(题目、跳转的链接等)。

除了下面的音讯类型,还有文本音讯、图片音讯、语音音讯、视频音讯、图文卡片音讯等,具体能够查看开发文档,配置发送的音讯体。

如果你微信关注了这个利用,那么就能够在微信收到告诉,如过没有关注,就只能在企业微信内收到告诉。

作者

Author:TANKING
Web:www.likeyuns.com
WeChat:sansure2016

退出移动版