PHP实现向企业微信发送消息
"通过PHP发送企业微信信息,包括三种不同的消息模板,主要涉及企业微信API的使用,以及如何通过PHP代码实现消息发送。" 在企业微信的场景中,开发者经常需要利用PHP来自动化发送消息,例如通知、公告等,以提高工作效率。本资源提供了一个PHP类`WeixinMessage`,用于处理企业微信的信息发送。这个类包含了必要的属性和方法,以实现向企业微信用户发送应用消息。 首先,`WeixinMessage`类中定义了几个关键属性: 1. `$corpid`:代表企业微信的ID,是每个企业独有的标识。 2. `$corpsecret`:企业微信应用的秘钥,用于验证身份和获取访问令牌(Access Token)。 3. `$weixinSendApi`:企业微信的消息发送API地址,其中`access_token`会被替换为实际的访问令牌。 4. `$touser`:接收消息的员工的OpenID,表示消息的目标用户。 5. `$agentid`:应用ID,每个企业微信应用都有一个唯一的ID。 6. `$content`:消息内容,可以是文本、图文等多种类型。 `WeixinMessage`类中的`__construct`方法用于初始化这些属性,确保在实例化时提供正确的参数。 为了发送消息,类中包含了一个核心方法`getAccessToken`,用于获取微信API的访问令牌。这个方法首先检查本地是否有已缓存的令牌信息,如果存在且未过期,则直接使用;否则,通过调用`https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$this->corpid}&corpsecret={$this->corpsecret}`接口获取新的访问令牌。获取到的令牌信息会被存储到`log.txt`文件中,并进行JSON编码以便后续读取。 `getAccessToken`方法使用了`curlGet`方法来发起HTTP GET请求,获取JSON格式的响应。响应数据被解码为PHP数组,然后检查是否成功获取到`access_token`,以确保后续的操作可以正常进行。 发送消息的实际过程通常会涉及到调用`sendWeixinMessage`这样的方法(虽然在提供的代码片段中没有直接展示),该方法会构造一个符合企业微信API要求的JSON消息结构,然后将`access_token`与消息内容一起通过POST请求发送到`weixinSendApi`指定的URL。 在描述中提到的三种不同的消息模板可能包括文本消息、富文本消息和自定义消息格式。例如,文本消息可以直接设置在`$content`中,而富文本消息可能需要构建更复杂的JSON结构,包含多个段落、链接或其他元素。 在实际使用中,开发者需要根据具体需求选择适当的消息模板,填充相应的参数,然后通过`WeixinMessage`类实例化并调用发送方法,即可完成企业微信信息的发送。注意,由于企业微信的安全策略,每次发送消息前都需要确保拥有有效的访问令牌,因此在实际操作中需要考虑令牌的刷新和管理。
/**
* 微信公众号信息处理
*/
class WeixinMessage {
//corpid
private $corpid ;
//sercret
private $corpsecret ;
//微信发消息api
public $weixinSendApi = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=';
private $touser;
private $agentid;
private $content;
function __construct($touser, $agentid, $content,$corpid,$corpsecret)
{
$this->touser = $touser;
$this->agentid = $agentid;
$this->corpid = $corpid;
$this->corpsecret = $corpsecret;
$this->content = trim($content);
}
/**
* 请求微信Api,获取AccessToken
*/
public function getAccessToken()
error_reporting(E_ALL);
//临时存放 并不安全
$filePath = 'log.txt';
$tokenInfo = array();
if(is_file($filePath)){
$tokenInfo = json_decode(file_get_contents($filePath),TRUE);
}
if(!isset($tokenInfo['access_token']) || time()>$tokenInfo['expires_in']){
//更新access_token
$getAccessTokenApi = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$this->corpid}&corpsecret={$this->corpsecret}";
$jsonString = $this->curlGet($getAccessTokenApi);
$jsonInfo = json_decode($jsonString,true);
if(isset($jsonInfo['access_token'])) {
$jsonInfo['expires_in'] = time() + 7100;
file_put_contents($filePath, json_encode($jsonInfo));
}
$tokenInfo = $jsonInfo;
}
if(isset($tokenInfo['access_token']) && $tokenInfo['expires_in']>time()){
return $tokenInfo['access_token'];
} else {
return FALSE;
}
}
/**
* 发信息接口
剩余7页未读,继续阅读
- 粉丝: 1
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构