<?php class Sms { private $userId = ' XXXXX '; private $password = ' XXXXXX '; private $templateId = ' XXXXXX '; /* * * @var string 短信服务器地址 */ private $server_uri = ' XXXXXX '; private $port = ' XXXXXX '; /* * * 发送短信 * @param $message 信息内容 * @param $mobile 手机号码 * @param string $signature 签名 * @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码 */ public function sendOneMsg($message, $mobile, $signature= ' demo ') { $xml_content = $ this->createXmlContent($message, $mobile, $signature); $xml = $ this->sendHttpRequest(trim($xml_content)); if(! $xml) { return false; // 网络请求失败 } // 解析返回的编码 $res = simplexml_load_string($xml); if($res->retCode == 1000) { return true; } return $res->retCode; } /* * * 创建 xml内容 * @param $message 信息 * @param $mobile 要发送的手机号码 * @param $signature 签名 * @return string */ private function createXmlContent($message, $mobile, $signature) { $data = array( ' userId ' => $ this->userId, // 账号 ' password ' => $ this->password, // 小写的md5后的用户密码 ' templateId ' => $ this->templateId, // 模板id ' phone ' => $mobile, ' port ' => $ this->port, ' data ' => $message, ' signature ' => $signature, ); // 设置xml版本和编码 $dom = new \DOMDocument( ' 1.0 ', ' UTF-8 '); // 创建根节点 $request = $dom->createElement( ' request '); $dom->appendChild($request); foreach($data as $key => $val) { // 创建元素 $key = $dom->createElement($key); $request->appendChild($key); // 创建元素值 $text = $dom->createTextNode($val); $key->appendChild($text); } return $dom->saveXML(); } /* * * 发送http请求 * @param $xml_content * @return mixed */ private function sendHttpRequest($xml_content) { $now = time(); $headers[] = ' Content-Type:text/xml '; $headers[] = ' Content-Length: ' . strlen($xml_content); $headers[] = ' Cmd:mt '; $headers[] = ' TS: '. $now; $headers[] = ' Authorization: ' . strtoupper(md5($xml_content. $now . $ this->password)); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $ this->server_uri); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $res = curl_exec($ch); curl_close($ch); // header('Content-Type:text/html; charset=utf-8'); return $res; } }