免费咨询热线:15918671994

QQ群1:118466153

QQ群2:50056937

扫描二维码

添加客服咨询详情

了解更多,敬请垂询 15918671994

您还可以

在线咨询

添加微信立即咨询

咨询热线:15918671994

—— 专业电商系统及解决方案提供服务商 ——

多用户
商城系统

订单
管理系统

订货
管理系统

多语言
商城系统

商淘云S2B2C多用户商城系统

平台演示 演示地址 账号密码
PC前端 http://test.wstmart.net/ 联系客服
平台后台 http://test.wstmart.net/admin 联系客服
商家后台 http://test.wstmart.net/shop 联系客服
供应商后台 http://test.wstmart.net/supplier/ 联系客服
多语言多商户 http://dyy.wstmart.net/ 联系客服
  • 安卓APP(用浏览器打开)

  • 苹果APP

  • 小程序商城

  • 微信商城

B2B2C电商系统
  • 首页
  • 商城相关
  • 商淘软件:如何在thinkphp 5中实现阿里云云通信发短信

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

2017-11-15 14:25:46    浏览量:11976

如何在thinkphp 5中实现阿里云云通信发短信


       


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


 

添加短信服务之后就可以在左侧看到短信服务的菜单:


 

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

 

1、在WSTMart三级分销系统的“拓展管理”-“插件管理”中找到“短信接口(阿里云-云通信)”插件,点击右侧的“安装”进行启用。然后在“设置”界面对阿里云-云通信进行设置:



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

 

2、在商城设置中开启短信功能:



要留意的是,wstmart中默认的短信发送间隔是2分钟,阿里云-云通信则最短1分钟1条,1小时5条,110条。设置到这里,基本上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。则说明短信发送成功,否则的话则提示用户短信发送失败。

 

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

商淘云公众号

商淘云国际版电商系统
商淘云订单管理系统
商淘云移动订货系统
商淘云多用户商城系统

商淘云公众号

获取体验账号 最新优惠及电商资讯