php实现短信发送代码

卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了 标签: <无>

1. [代码][PHP]代码

rush: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,$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,$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_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_URL,$this->server_uri);
curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_HTTPHEADER,$headers);
curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_POST,1);
curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_POSTFIELDS,$xml_content);
curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_HEADER,0);
$res = curl_exec($ch);
curl_close($ch);
//header('Content-Type:text/html; charset=utf-8');
return $res;

}

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...