Sin descripción

xmlparse.php 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. include_once "errorCode.php";
  3. /**
  4. * XMLParse class
  5. *
  6. * 提供提取消息格式中的密文及生成回复消息格式的接口.
  7. */
  8. class XMLParse
  9. {
  10. /**
  11. * 提取出xml数据包中的加密消息
  12. * @param string $xmltext 待提取的xml字符串
  13. * @return string 提取出的加密消息字符串
  14. */
  15. public function extract($xmltext)
  16. {
  17. try {
  18. $xml = new DOMDocument();
  19. $xml->loadXML($xmltext);
  20. $array_e = $xml->getElementsByTagName('Encrypt');
  21. $encrypt = $array_e->item(0)->nodeValue;
  22. return array(0, $encrypt);
  23. } catch (Exception $e) {
  24. print $e . "\n";
  25. return array(ErrorCode::$ParseXmlError, null);
  26. }
  27. }
  28. /**
  29. * 生成xml消息
  30. * @param string $encrypt 加密后的消息密文
  31. * @param string $signature 安全签名
  32. * @param string $timestamp 时间戳
  33. * @param string $nonce 随机字符串
  34. */
  35. public function generate($encrypt, $signature, $timestamp, $nonce)
  36. {
  37. $format = "<xml>
  38. <Encrypt><![CDATA[%s]]></Encrypt>
  39. <MsgSignature><![CDATA[%s]]></MsgSignature>
  40. <TimeStamp>%s</TimeStamp>
  41. <Nonce><![CDATA[%s]]></Nonce>
  42. </xml>";
  43. return sprintf($format, $encrypt, $signature, $timestamp, $nonce);
  44. }
  45. }
  46. //
  47. // Test
  48. /*
  49. $sPostData = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><AgentID><![CDATA[toAgentID]]></AgentID><Encrypt><![CDATA[msg_encrypt]]></Encrypt></xml>";
  50. $xmlparse = new XMLParse;
  51. $array = $xmlparse->extract($sPostData);
  52. var_dump($array);
  53. */
  54. ?>