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