阿里大于并入阿里云之后,阿里大于仅维护原有客户。新的客户可以在阿里云-云通信里购买短信服务。首先我们可以看下阿里云-云通信的菜单位置:
添加短信服务之后就可以在左侧看到短信服务的菜单:
温馨提醒:使用阿里云-云通信要留意三个地方:
1)设置eccesskeys--这个就是短信服务的账号和密码。
2)设置短信签名。
3)设置短信模板。因为阿里云-云通信本身有使用教程和客户服务,如何申请和使用我们就不过多讲述,下边我们下载一个基于thinkphp 5的WSTMartB2B2C商城系统讲解一下:如何使用和实现thinkphp 5框架中接入阿里云-云通信功能。
1、在WSTMartB2B2C商城系统=“拓展管理”-“插件管理”中找到“短信接口(阿里云-云通信)”插件,点击右侧的“安装”进行启用。然后在“设置”界面对阿里云-云通信进行设置:
上边的Access Key ID、Access Key secret以及短信签名为必填。发送的模板ID则选填,如果用户没有填写,则系统不会发送该情况下的短信。
2、在B2B2C商城系统=商城设置中开启短信功能:
要留意的事,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。则说明短信发送成功,否则的话则提示用户短信发送失败。
http://www.legendshop.cn 多用户商城系统、开源商城系统、b2b2c商城系统、b2b电商平台、b2c商城系统