|
|
<?php
|
|
|
namespace LaneWeChat\Core\Aes; // 定义命名空间,用于组织代码
|
|
|
|
|
|
class XMLParse // 定义XMLParse类
|
|
|
{
|
|
|
// 提取方法,用于从XML文本中提取加密信息和接收方账号
|
|
|
public function extract($xmltext)
|
|
|
{
|
|
|
try {
|
|
|
$xml = new \DOMDocument(); // 创建DOMDocument对象
|
|
|
$xml->loadXML($xmltext); // 加载XML文本
|
|
|
|
|
|
// 使用DOMDocument对象的getElementsByTagName方法获取Encrypt和ToUserName标签
|
|
|
$array_e = $xml->getElementsByTagName('Encrypt');
|
|
|
$array_a = $xml->getElementsByTagName('ToUserName');
|
|
|
|
|
|
// 获取Encrypt标签的文本内容和ToUserName标签的文本内容
|
|
|
$encrypt = $array_e->item(0)->nodeValue;
|
|
|
$tousername = $array_a->item(0)->nodeValue;
|
|
|
|
|
|
// 返回提取结果,包括状态码0(表示成功),加密信息和接收方账号
|
|
|
return array(0, $encrypt, $tousername);
|
|
|
} catch (\Exception $e) {
|
|
|
// 如果发生异常,返回错误码和null值
|
|
|
return array(ErrorCode::$ParseXmlError, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 生成方法,用于生成XML格式的响应消息
|
|
|
public function generate($encrypt, $signature, $timestamp, $nonce)
|
|
|
{
|
|
|
// 定义XML格式的字符串模板,使用CDATA区包含加密信息和其他参数
|
|
|
$format = "<xml>
|
|
|
<Encrypt><![CDATA[%s]]></Encrypt>
|
|
|
<MsgSignature><![CDATA[%s]]></MsgSignature>
|
|
|
<TimeStamp>%s</TimeStamp>
|
|
|
<Nonce><![CDATA[%s]]></Nonce>
|
|
|
</xml>";
|
|
|
|
|
|
// 使用sprintf函数格式化XML字符串模板,插入加密信息和其他参数
|
|
|
return sprintf($format, $encrypt, $signature, $timestamp, $nonce);
|
|
|
}
|
|
|
}
|
|
|
?>
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|