212 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace addons\qcloudsms\library;
 | 
						|
 | 
						|
/**
 | 
						|
 * 发送Util类
 | 
						|
 *
 | 
						|
 */
 | 
						|
class SmsSenderUtil
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * 生成随机数
 | 
						|
     *
 | 
						|
     * @return int 随机数结果
 | 
						|
     */
 | 
						|
    public function getRandom()
 | 
						|
    {
 | 
						|
        return rand(100000, 999999);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成签名
 | 
						|
     *
 | 
						|
     * @param string $appkey        sdkappid对应的appkey
 | 
						|
     * @param string $random        随机正整数
 | 
						|
     * @param string $curTime       当前时间
 | 
						|
     * @param array  $phoneNumbers  手机号码
 | 
						|
     * @return string  签名结果
 | 
						|
     */
 | 
						|
    public function calculateSig($appkey, $random, $curTime, $phoneNumbers)
 | 
						|
    {
 | 
						|
        $phoneNumbersString = $phoneNumbers[0];
 | 
						|
        for ($i = 1; $i < count($phoneNumbers); $i++) {
 | 
						|
            $phoneNumbersString .= ("," . $phoneNumbers[$i]);
 | 
						|
        }
 | 
						|
 | 
						|
        return hash("sha256", "appkey=".$appkey."&random=".$random
 | 
						|
            ."&time=".$curTime."&mobile=".$phoneNumbersString);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成签名
 | 
						|
     *
 | 
						|
     * @param string $appkey        sdkappid对应的appkey
 | 
						|
     * @param string $random        随机正整数
 | 
						|
     * @param string $curTime       当前时间
 | 
						|
     * @param array  $phoneNumbers  手机号码
 | 
						|
     * @return string  签名结果
 | 
						|
     */
 | 
						|
    public function calculateSigForTemplAndPhoneNumbers($appkey, $random,
 | 
						|
        $curTime, $phoneNumbers)
 | 
						|
    {
 | 
						|
        $phoneNumbersString = $phoneNumbers[0];
 | 
						|
        for ($i = 1; $i < count($phoneNumbers); $i++) {
 | 
						|
            $phoneNumbersString .= ("," . $phoneNumbers[$i]);
 | 
						|
        }
 | 
						|
 | 
						|
        return hash("sha256", "appkey=".$appkey."&random=".$random
 | 
						|
            ."&time=".$curTime."&mobile=".$phoneNumbersString);
 | 
						|
    }
 | 
						|
 | 
						|
    public function phoneNumbersToArray($nationCode, $phoneNumbers)
 | 
						|
    {
 | 
						|
        $i = 0;
 | 
						|
        $tel = array();
 | 
						|
        do {
 | 
						|
            $telElement = new \stdClass();
 | 
						|
            $telElement->nationcode = $nationCode;
 | 
						|
            $telElement->mobile = $phoneNumbers[$i];
 | 
						|
            array_push($tel, $telElement);
 | 
						|
        } while (++$i < count($phoneNumbers));
 | 
						|
 | 
						|
        return $tel;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成签名
 | 
						|
     *
 | 
						|
     * @param string $appkey        sdkappid对应的appkey
 | 
						|
     * @param string $random        随机正整数
 | 
						|
     * @param string $curTime       当前时间
 | 
						|
     * @param array  $phoneNumber   手机号码
 | 
						|
     * @return string  签名结果
 | 
						|
     */
 | 
						|
    public function calculateSigForTempl($appkey, $random, $curTime, $phoneNumber)
 | 
						|
    {
 | 
						|
        $phoneNumbers = array($phoneNumber);
 | 
						|
 | 
						|
        return $this->calculateSigForTemplAndPhoneNumbers($appkey, $random,
 | 
						|
            $curTime, $phoneNumbers);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成签名
 | 
						|
     *
 | 
						|
     * @param string $appkey        sdkappid对应的appkey
 | 
						|
     * @param string $random        随机正整数
 | 
						|
     * @param string $curTime       当前时间
 | 
						|
     * @return string 签名结果
 | 
						|
     */
 | 
						|
    public function calculateSigForPuller($appkey, $random, $curTime)
 | 
						|
    {
 | 
						|
        return hash("sha256", "appkey=".$appkey."&random=".$random
 | 
						|
            ."&time=".$curTime);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成上传文件授权
 | 
						|
     *
 | 
						|
     * @param string $appkey        sdkappid对应的appkey
 | 
						|
     * @param string $random        随机正整数
 | 
						|
     * @param string $curTime       当前时间
 | 
						|
     * @param array  $fileSha1Sum   文件sha1sum
 | 
						|
     * @return string  授权结果
 | 
						|
     */
 | 
						|
    public function calculateAuth($appkey, $random, $curTime, $fileSha1Sum)
 | 
						|
    {
 | 
						|
        return hash("sha256", "appkey=".$appkey."&random=".$random
 | 
						|
            ."&time=".$curTime."&content-sha1=".$fileSha1Sum);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 生成sha1sum
 | 
						|
     *
 | 
						|
     * @param string $content  内容
 | 
						|
     * @return string  内容sha1散列值
 | 
						|
     */
 | 
						|
    public function sha1sum($content)
 | 
						|
    {
 | 
						|
        return hash("sha1", $content);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 发送请求
 | 
						|
     *
 | 
						|
     * @param string $url      请求地址
 | 
						|
     * @param array  $dataObj  请求内容
 | 
						|
     * @return string 应答json字符串
 | 
						|
     */
 | 
						|
    public function sendCurlPost($url, $dataObj)
 | 
						|
    {
 | 
						|
        $curl = curl_init();
 | 
						|
        curl_setopt($curl, CURLOPT_URL, $url);
 | 
						|
        curl_setopt($curl, CURLOPT_HEADER, 0);
 | 
						|
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 | 
						|
        curl_setopt($curl, CURLOPT_POST, 1);
 | 
						|
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
 | 
						|
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($dataObj));
 | 
						|
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
 | 
						|
        'Content-Type: application/json; charset=utf-8',
 | 
						|
        'Content-Length: ' . strlen(json_encode($dataObj)))
 | 
						|
    );
 | 
						|
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
 | 
						|
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
 | 
						|
 | 
						|
        $ret = curl_exec($curl);
 | 
						|
        if (false == $ret) {
 | 
						|
            // curl_exec failed
 | 
						|
            $result = "{ \"result\":" . -2 . ",\"errmsg\":\"" . curl_error($curl) . "\"}";
 | 
						|
        } else {
 | 
						|
            $rsp = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
						|
            if (200 != $rsp) {
 | 
						|
                $result = "{ \"result\":" . -1 . ",\"errmsg\":\"". $rsp
 | 
						|
                        . " " . curl_error($curl) ."\"}";
 | 
						|
            } else {
 | 
						|
                $result = $ret;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        curl_close($curl);
 | 
						|
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 发送请求
 | 
						|
     *
 | 
						|
     * @param string $req  请求对象
 | 
						|
     * @return string 应答json字符串
 | 
						|
     */
 | 
						|
    public function fetch($req)
 | 
						|
    {
 | 
						|
        $curl = curl_init();
 | 
						|
 | 
						|
        curl_setopt($curl, CURLOPT_URL, $req->url);
 | 
						|
        curl_setopt($curl, CURLOPT_HTTPHEADER, $req->headers);
 | 
						|
        curl_setopt($curl, CURLOPT_POSTFIELDS, $req->body);
 | 
						|
        curl_setopt($curl, CURLOPT_HEADER, 0);
 | 
						|
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 | 
						|
        curl_setopt($curl, CURLOPT_POST, 1);
 | 
						|
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
 | 
						|
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
 | 
						|
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
 | 
						|
 | 
						|
        $result = curl_exec($curl);
 | 
						|
 | 
						|
        if (false == $result) {
 | 
						|
            // curl_exec failed
 | 
						|
            $result = "{ \"result\":" . -2 . ",\"errmsg\":\"" . curl_error($curl) . "\"}";
 | 
						|
        } else {
 | 
						|
            $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
						|
            if (200 != $code) {
 | 
						|
                $result = "{ \"result\":" . -1 . ",\"errmsg\":\"". $rsp
 | 
						|
                    . " " . curl_error($curl) ."\"}";
 | 
						|
            }
 | 
						|
        }
 | 
						|
        curl_close($curl);
 | 
						|
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
}
 |