利用thinkphp企业微信,发送消息

本文介绍了一种通过微信企业号API实现的请假申请自动通知功能。具体包括:获取accesstoken的方法、通过HTTPS请求获取和更新accesstoken、发送请假申请通知到指定用户的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取accesstoken

 private $appId="wxcf....."; //微信企业号的appid

    public function getAccessToken() { //获取AccessToken的方法

    $data = json_decode(file_get_contents("AccessToken.json"));//获取存在AccessToken.json
    //$access_token=$data->access_token;

    if ($data->expire_time < time()) { //如果AccessToken过期则重新获取AccessToken
        // $config = C('WX_CONFIG');
        $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxcf.....&corpsecret=2ASy1p9hBT_AGhaSeJEHMbXiXY........";//获取AccessToken的url及参数。
        
         $res =$this->https_request($url);//调用https请求方法
         $res = json_decode($res); //把$res设置为对象
         $access_token = $res->access_token; //获取结果集中的access_token
      if ($access_token) {
        $data->expire_time = time() + 7000; //上一次获取access_token的时间加上两小时,access_token的有效时间为两小时,超过两小时则重新获取。也可以每次使用时都重新获取,但是有获取次数限制。
        $data->access_token = $access_token;
        $fp = fopen("AccessToken.json", "w"); //打开AccessToken.json文件,“W”表示写入(Write)
        fwrite($fp, json_encode($data));//获取到的结果写入
        fclose($fp);//关闭文件
      }
    } else {
      $access_token = $data->access_token; //未过期情况下直接读取文件里的access_token
    }
    return $access_token;
  }

2.https 请求方法

//https请求(支持GET和POST)
    public 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;
    }

3.发送消息

//请假时发送消息给上级审批
public  function  sendMSG($superior,$name,$meet,$id){


$access_token=$this->getAccessToken();//调用getAccessToken方法获取access_token


$arr=array(      
  'touser'=>$superior, //消息接收者工号
  "msgtype"=> "text",
     "agentid"=>8,
      "text"=> array(
        "content"=>'<a href="http://....../qyhdev/index.php?s=/weixin/Bublic/index/id/'.$id.'/name/'.$name.'/meet/'.$meet.'">收到'.$name.''.$meet.'请假申请,请点击查看</a>'  //发送的消息内容
       )
 
  );

$arr=json_encode($arr,JSON_UNESCAPED_UNICODE); //利用json_encode把$arr变为json形式,“JSON_UNESCAPED_UNICODE”参数把中文变为json形式。

$url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=".$access_token;

 $res=$this->https_request($url, $arr); //调用https请求方法发送消息。
}

4.调用sendMSG方法

public function leave(){
 $this->sendMSG($superior,$name,$meetname,$id); //调用sendMSG方法
}

转载于:https://my.oschina.net/u/2953372/blog/880837

### ThinkPHP 开发企业微信教程 #### 一、环境搭建 为了顺利进行企业微信开发,在项目初始化阶段需确保ThinkPHP框架已正确安装并配置好数据库连接。此外,还需引入官方的企业微信SDK或其他可靠的第三方库来简化接口调用。 ```bash composer require easywechat/easywechat ``` 此命令用于通过Composer包管理工具安装EasyWeChat SDK,它能够帮助快速实现与企业微信的各项交互功能[^1]。 #### 二、应用注册与设置 前往企业微信官方网站完成开发者账号申请及相应的小程序/应用创建工作。记录下所获得的应用凭证(AppID 和 AppSecret),这些信息将在后续的身份验证环节起到至关重要的作用。 #### 三、接入OAuth2.0认证机制 利用企业微信提供的OAuth2.0协议可以安全地获取用户的OpenID以及更详细的个人信息。具体来说,可以通过`https://open.weixin.qq.com/connect/oauth2/authorize?...`这样的URL发起请求让用户授权访问其数据资源[^2]。 #### 四、消息推送服务集成 借助于企业微信消息发送能力,可以在特定场景下发通知给指定成员或部门群组。比如当有新的订单提交时自动向客服团队通报情况。这通常涉及到构建自定义菜单项触发事件处理逻辑,并配合Webhook回调地址接收来自平台的通知报文[^3]。 #### 五、支付模块对接实例 对于涉及资金流转的服务提供商而言,支持多种在线付款方式至关重要。下面给出了一段基于ThinkPHP框架封装好的简易版微信JSAPI支付流程: ```php use EasyWeChat\Factory; $app = Factory::miniProgram(config('weixin')); $order = [ 'trade_type' => 'JSAPI', //交易类型 'body' => '商品描述', 'out_trade_no'=> uniqid(), 'total_fee' => 1, //金额单位为分 'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'], 'notify_url'=>'http://yourdomain.com/pay_notify.php', 'user_id'=>$userId, ]; $payment = $app->payment; $result = $payment->order->unify($order); if ($result['return_code'] === 'SUCCESS') { echo json_encode([ "timeStamp" =>$result['timeStamp'], "nonceStr" =>$result['nonceStr'], "package" =>'prepay_id='.$result['prepay_id'], "signType" =>'MD5', "paySign" =>$result['paySign'] ]); }else{ throw new \Exception("Create order failed:".$result['err_code_des']); } ``` 上述代码片段展示了如何使用EasyWeChat组件中的`miniProgram()`方法实例化小程序对象,进而调用`payment.order.unify()`函数生成预付单详情。最后返回必要的参数供前端页面执行实际的扣款动作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值