php手机短信接口发送验证码类

来源:互联网 发布:业务流程图制作软件 编辑:程序博客网 时间:2024/05/21 09:28
<?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, 其他返回失败编码
   */
  publicfunction sendOneMsg($message,$mobile, $signature='demo')
  {
  
    $xml_content= $this->createXmlContent($message,$mobile, $signature);
  
    $xml= $this->sendHttpRequest(trim($xml_content));
  
  
    if(!$xml) {
      returnfalse; // 网络请求失败
    }
  
    // 解析返回的编码
    $res= simplexml_load_string($xml);
    if($res->retCode == 1000) {
      returntrue;
    }
  
    return$res->retCode;
  
  }
  
  /**
   * 创建 xml内容
   * @param $message 信息
   * @param $mobile 要发送的手机号码
   * @param $signature 签名
   * @return string
   */
  privatefunction 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($dataas $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
   */
  privatefunction 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;
  }
  
}
阅读全文
0 0
原创粉丝点击