精简阿里云短信服务官方SDK及DEMO

来源:互联网 发布:gitlab windows server 编辑:程序博客网 时间:2024/06/06 19:31

    最近项目用到阿里云的短信服务,下载阿里云短信服务官方SDK及DEMO,包含众多的文件夹及文件,一大堆的类,类引用地址也是乱的,没法直接运行。

    里面包含多个接口(短信发送API,短信查询API,短信消息API),项目只需要短信发送接口即可。

    只好研究下官方的文档,精简代码。(研究的过程中发现官方的文档就是个坑,缺少很多字段)

    精简后的代码如下:(精简采用POST方式JSON格式SHA1加密)

    

$url = 'http://dysmsapi.aliyuncs.com/';$accessKeyId = "yourAccessKeyId";$accessKeySecret = "yourAccessKeySecret";date_default_timezone_set("GMT");$Timestamp = date('Y-m-d\TH:i:s\Z');$parameters = ['PhoneNumbers' => '15000000000','SignName' => '短信签名','TemplateCode' => '短信模板Code','TemplateParam' => '{"code":"123456"}','OutId' => '1234','RegionId' => 'cn-hangzhou','AccessKeyId' => $accessKeyId,'Format' => 'JSON','SignatureMethod' => 'HMAC-SHA1','SignatureVersion' => '1.0','SignatureNonce' => uniqid(),'Timestamp' => $Timestamp,'Action' => 'SendSms','Version' => '2017-05-25',];$Signature = $this->computeSignature($parameters, $accessKeySecret);$parameters['Signature'] = $Signature;echo curl_post($url,$parameters);exit;

   

public function computeSignature($parameters, $accessKeySecret){    ksort($parameters);    $canonicalizedQueryString = '';    foreach($parameters as $key => $value)    {$canonicalizedQueryString .= '&' . $this->percentEncode($key). '=' . $this->percentEncode($value);    }    $stringToSign = 'POST'.'&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1));$signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret."&", true));    return $signature;}protected function percentEncode($str){    $res = urlencode($str);    $res = preg_replace('/\+/', '%20', $res);    $res = preg_replace('/\*/', '%2A', $res);    $res = preg_replace('/%7E/', '~', $res);    return $res;}

    

原创粉丝点击