关于阿里云短信服务的使用

php开发速度建立在大量第三方包及扩展上。阿里云短信服务的底层支持由composer依赖项Alibaba Cloud Client for PHP提供。


一,安装composer

composer是PHP的依赖管理工具,使用方便简单,但是跟具体框架整合的时候仍有若干注意事项。框架的合理使用可以加快开发速度,维护老项目更要注意新技术的适用性。


composer工具安装全流程

composer工具安装全流程


1.1 参考https://pkg.phpcomposer.com/

1.2 mv composer.phar /usr/local/bin/composer 


composer脚本文件内容

composer脚本文件内容


将脚本文件 composer.phar 放到系统环境变量之下并重命名为composer,方便使用。


二,启用镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com


三,安装依赖

composer会自动将依赖文件添加到项目中,一般是第三方类库文件目录vendor,并生成依赖加载文件autoload.php也就是引入全部的依赖类。PHP的命名空间解决的是重名问题。


composer工具使用

composer工具使用


3.1 composer update
3.2 composer require alibabacloud/client 

https://github.com/aliyun/openapi-sdk-php-client/blob/master/README-CN.md?spm=a2c4g.11186623.2.18.39a650a4P2hh8d&file=README-CN.md


四,调用SendSms发送短信

ThinkPHP3.2.1入口文件中并没有require全部依赖文件的语句,需要手动添加。

类文件必须要包含进来才能使用其中变量方法及方法中的属性等。大部分找不到类文件的报错都是执行程序没有包含类文件导致的,编辑器只要使用了命名空间就可以跳转并不检查文件的包含情况,文件包含是代码运行的基础。


composer依赖自动加载到框架,框架入口文件修改位置

composer依赖自动加载到框架,框架入口文件修改位置


包含文件如果报错则代码会终止执行,PHP提供了require语句用来避免引入文件终止程序执行的问题。这也是所有框架都使用require而不是include来加载框架核心文件及依赖文件的原因。



参考资料

/**
* @param $tel 被传手机
* @param $param 发送内容对应模板定义变量
* @param $code 模板ID
* @return array|string
*/
function sendMsg($tel,$code,$param){
	$param = json_encode($param);
	AlibabaCloud::accessKeyClient('ID不能暴露', 'key不能暴露')->regionId('cn-hangzhou')->asGlobalClient();
	try {
		$result = AlibabaCloud::rpcRequest()
		->product('Dysmsapi')
		->version('2017-05-25')
		->action('SendSms')
		->method('POST')
		->options([
		'query' => [
		'PhoneNumbers' => $tel,
		'SignName' => '签名不能暴露',
		'TemplateCode' => $code,
		'TemplateParam' => $param,
		],
		])
		->request();
		return $result->toArray();
	} catch (ClientException $e) {
		return $e->getErrorMessage() . PHP_EOL;
	} catch (ServerException $e) {
		return $e->getErrorMessage() . PHP_EOL;
	}
}

/**
* 短信服务接口——验证码
* @param $tel
* @param $code
* @param $paramin
* @return string
*/
function setVarifacationCode($tel,$code,$paramin){
	//判断五分钟内是否发过验证码
	if (time() - session('auth_code_withdraw_time') < session('auth_code_withdraw_expire')) {
		$result['success'] = 'false';
		$result['icon'] = 2;
		$result['info'] = '验证码请求发送之后,五分钟内不再发送';
		return json_encode($result);
	}
	session('auth_code_withdraw_time',time());
	$result['success'] = 'success';
	$result['icon'] = 1;
	$result['info'] = '发送成功';
	session('auth_code_withdraw_expire',300);
	session('auth_code_withdraw',$paramin);
	$param = ["code"=>session('auth_code_withdraw')];
	trace($param,'cans');
	$res = sendMsg($tel,$code,$param);
	if($res['Message']!='OK'){
		$result['success'] = 'false';
		$result['icon'] = 2;
		$result['info'] = $res['Message'];
	}
	trace($res,'验证码日志');
	return json_encode($result);
} 

相关文档

评论0条