文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php接入企业微信

2023-09-02 09:49

关注

企业微信,现在来讲应该是一个很常见了的功能了。下面,我就以tp6来给大讲下接入企业微信的小demo吧。
首先,在common.php的公共方法里面写入下面两段代码

function sendRequest($url){ //用curl请求获取access_token$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);return json_decode($output, true);}function send($data,$access_token){ //企业微信各接口的接入方法,比如(文本、卡片等等)    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='. $access_token);    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);}

在控制器中,写入以下代码
(1)、首先,需要获取基础信息,(包括用户ID,response_code(response_code用于卡片的接口的参数)等)。而对于获取这些数据,我们可以在前端去做处理。

(function(){$.ajax({url:'getBaseData',data:{url:'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='}, //这个地址是固定写法dataType:'json',success:function(e){//这儿就把返回的数据,把需要的保存起来console.log(e)},error:function(err){console.error(err)}})});

(2)、在后端的接口中,我们就需要对刚前端的ajax请求做处理,并返回数据给他

public function getBaseData(){$url = input('post.url') . $this->access_token;$res = sendRequest($url);return json_decode($res);}
//在控制器中的代码,直接运行 index的方法即可。下面的代码逻辑也相对比较简单【这个控制器的整个php代码】namespace app\php\controller\weixin;use app\BaseController;use think\facade\Cache;use think\facade\Db;class Index extends BaseController{//其实,像corpid appId corpsecret  这些都是可以写入数据库,或者写在在公共的弄成一个常量也可以。//同时,获取access_token的方法也可以独立封装成一个对象,在这儿我就直接拿来用了。private $corpid = '';private $appId = '';private $corpsecret = '';private $access_token = '';public function __construct(){$accessTokenData = Cache::get('accessTokenData');//获取缓存里面access_token的内容。因为我是把access_token存入缓存中的(它的有效期是2个小时)if($accessTokenData['errcode'] != 0 || $accessTokenData == null){//判断有没有拿到有效的值,如果没有拿到,那它就走一次获取access_token的方法。$this->getAccessToken(); //获取access_token的方法}$access_token = $accessTokenData['access_token'];$this->access_token = $access_token;}public function getAccessToken(){$url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='. $this->corpid .'&corpsecret=' . $this->corpsecret;$accessTokenData = sendRequest($url);Cache::set('accessTokenData',$accessTokenData,7200);}public function index(){ //这儿是对接每个功能的。当然,这个也可以放到前端去弄。跟前面获取基础数据是一样的原理。$access_token = $this->access_token;$data = array('touser'=>'@all','msgtype'=>'text','agentid'=>null,//企业应用ID INT'text' => array(        'content'=>'hello xiaobing'    ),    'enable_id_trans' => 0,    'enable_duplicate_check' => 0,    'duplicate_check_interval' => 1800);$res = send(json_encode($data),$access_token); //send调用的是在公共函数里的方法,注意data需要转成jsonvar_dump($res);}public function getBaseData(){$url = input('post.url') . $this->access_token;$res = sendRequest($url);return json_decode($res);}}

来源地址:https://blog.csdn.net/weixin_42371812/article/details/126895372

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯