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