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

本文档介绍如何将阿里云短信服务官方SDK进行精简,仅保留短信发送接口。原始SDK包含多个接口和大量文件,不适合直接使用。作者通过研究官方文档并简化代码,实现了POST方式的JSON格式SHA1加密短信发送功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近项目用到阿里云的短信服务,下载阿里云短信服务官方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;
	}

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值