php教程

超轻量级php框架startmvc

php实现短信发送代码

更新时间:2020-03-04 22:14:41 作者:startmvc
卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了标签:<无>1.[代码][PHP]代码&

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

1. [代码][PHP]代码    


<?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;
 }
 
}

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

php 短信发送