商淘软件:如何在thinkphp 5中实现阿里云-云通信发短信

输入图片说明

阿里大于并入阿里云之后,阿里大于维护原有客户。新的客户可以在阿里云-云通信里购买短信服务。首先我们可以看下阿里云-云通信的菜单位置: 输入图片说明

添加短信服务之后就可以在左侧看到短信服务的菜单: 输入图片说明

使用阿里云-云通信要留意三个地方:1)设置eccesskeys--这个就是短信服务的账号和密码。2)设置短信签名。3)设置短信模板。因为阿里云-云通信本身有使用教程和客户服务,如何申请和使用我们就不过多讲述,下边我们下载一个基于thinkphp 5的WSTMart多用户开源电子商务系统讲解一下:如何使用和实现thinkphp 5框架中接入阿里云-云通信功能。

1、在WSTMart的“拓展管理”-“插件管理”中找到“短信接口(阿里云-云通信)”插件,点击右侧的“安装”进行启用。然后在“设置”界面对阿里云-云通信进行设置: 输入图片说明

上边的Access Key ID、Access Key secret以及短信签名为必填。发送的模板ID则选填,如果用户没有填写,则系统不会发送该情况下的短信。

2、在商城设置中开启短信功能: 输入图片说明

要留意的事,wstmart中默认的短信发送间隔是2分钟,阿里云-云通信则最短1分钟1条,1小时5条,1天10条。设置到这里,基本上wstmart中就可以使用短信服务的功能了。

3、实现原理: 1)下载阿里云-云通信SDK放到到阿里云-云通信插件目录下,该名为sdk。 2)在发短信的位置埋入钩子。在类文件wstmart\common\model\LogSms.php中我们对发送短信的位置埋入钩子。 输入图片说明 当程序运行到此处的时候,系统就会自动检测在此钩子处监听的插件有哪些。因为我们前边只开启了阿里云-云通信,所以程序就会进入到阿里云-云通信的插件函数里: 输入图片说明

sendSMS写在插件的model里,我们按照阿里云-云通信的演示代码封装成一个http接口函数:

public function http($params){
		require_once  WST_ADDON_PATH.'dysms/sdk/vendor/autoload.php';
		Config::load();
		$smsConf = $this->getConfigs();
	    $accessKeyId = $smsConf['smsKey'];;
	    $accessKeySecret = $smsConf['smsPass'];
	    $product = "Dysmsapi";
	    $domain = "dysmsapi.aliyuncs.com";
	    $region = "cn-hangzhou";
	    $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
	    DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
	    $acsClient= new DefaultAcsClient($profile);
	    $request = new SendSmsRequest();
	    $request->setPhoneNumbers($params['phoneNumber']);
	    //必填-短信签名
	    $request->setSignName($smsConf["signature"]);
	    //必填-短信模板Code
	    $request->setTemplateCode($smsConf[$params['params']['tpl']['tplCode']]);
	    $request->setTemplateParam($params['content']);
	    //选填-发送短信流水号
	    $request->setOutId($params['timeId']);
	    //发起访问请求
	    $resp = $acsClient->getAcsResponse($request);
        return $resp;
}

然后我们在在model里边去调用http函数去发短信.

public function sendSMS($params){
		.......
        省略封装函数过程
        .......
		$code = $this->http($params);
		$log = model('common/logSms')->get($params['smsId']);
		$log->smsReturnCode = json_encode($code);
		$log->save();
		try{
			if(strtolower($code->Message)=='ok'){
	            $params['status']['msg'] = '短信发送成功!';
	            $params['status']['status'] = 1;
			}
		}catch (\Exception $e) {
            $params['status']['msg'] = $code->Message;
	        $params['status']['status'] = -1;
		}
}

调试:如果调用阿里云-云通信能正确返回json对象的数据,并且其message的内容为ok。则说明短信发送成功,否则的话则提示用户短信发送失败。

欢迎大家一起分享、交流!

转载于:https://my.oschina.net/u/2392706/blog/1573810

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值