ホームページ  >  記事  >  php教程  >  短信发送

短信发送

WBOY
WBOYオリジナル
2016-06-06 19:38:411815ブラウズ

卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了 无 ?phpclass Sms{ private $userId = 'XXXXX'; private $password = 'XXXXXX'; private $templateId = 'XXXXXX'; /** * @var string 短信服务器地址 */ private $server_uri = 'XXXXXX'; private $p

卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了
<?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;
    }

}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。