You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
6.0 KiB
208 lines
6.0 KiB
<?php |
|
|
|
namespace Qcloud\Sms; |
|
|
|
|
|
/** |
|
* 发送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_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; |
|
} |
|
}
|
|
|