PHP 企业微信推送应用消息并附带跳转连接

因业务需要,特此记录一下。

业务逻辑如下:

因为每次推送消息时有人数限制,所以就用了两个变量来接收处理。

//推送带链接的内容            
$content = '您一条消息,<a href="这里放链接">请查看</a>!';
            //获取推送对象
            $user = M('user')->select();
            if(!$user) return '没有可推送用户';
//因企业微信推送应用消息一次不能超过1000
            $userData = [];//用户标识数组,用户数量未超过一定数量
            $userDataArr = [];//用户标识数组,用户数量超过一定数量
            //推送到企业微信
            $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.accessToken();
            foreach ($user as $item)
            {
                if (count($userData) < 1000)
                {
                    $userData[] = $item['企业微信用户标识字段'];
                }else{
                    $userDataArr[] = $userData;
                    $userData = [];
                }
            }
            if (!$userDataArr)
            {
                $userDataArr[] = $userData;
                $userData = [];
            }
            if ($userData)
            {
                $userDataArr[] = $userData;
            }
            if ($userDataArr)
            {
                foreach ($userDataArr as $value)
                {
                    $data_ = [
                        'touser' => implode('|',$value),
                        'msgtype' => 'text',
                        'agentid' => '应用ID',
                        'text' => [
                            'content' => $content,
                        ]
                    ];
                    $arr = https_request($url,json_encode($data_));
                }
            }

            return 'OK';

获取access_token函数,因为access_token值获取的频率不能过高,所以做了缓存处理:


/**
 * 获取access_token
 */
function accessToken()
{
    //获得access_token
    if(empty(Cache::get("ACCESS_TOKEN"))){
        $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业微信APPID&corpsecret=应用密钥";
        $res = file_get_contents($url);
        $res = json_decode($res,1);
        if($res['errcode']!=0){
            var_dump($res);
            die;
        }
        $accessToken=$res['access_token'];
        Cache::set("ACCESS_TOKEN",$accessToken,3600);
    }else{
        $accessToken=Cache::get("ACCESS_TOKEN");
    }
    return $accessToken;
}

https请求函数:


/**
 * https请求
 * @param string $url
 * @param string $data
 * @return mixed
 */
function https_request($url,$data = null){
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
	if (!empty($data)){
		curl_setopt($curl, CURLOPT_POST, 1);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	}
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	$output = curl_exec($curl);
	curl_close($curl);
	return $output;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cq林志炫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值