1.发送短信封装类
<?php
namespace App\Tools;
use Redis;
use App\Tools\ChuanglanSmsApi;
use App\Tools\WeilinkSmsApi\SmsCommitSender;
use Log;
class SmsSender {
protected $mobile;
protected $type;
protected $smsToken;
protected $expire = 300;
protected $channel;
protected $param;
/**
* [__construct description]
* @param $mobile 手机号码
* @param $type 发送验证码类型1注册2修改手机号码3修改密码4登录
* @param $smsToken 唯一标示
* @param $channel 渠道1创蓝2微网通
* @param $param
*/
public function __construct($data=null) {
$this->mobile = $data['mobile'];
$this->type = $data['type'];
$this->smsToken = $data['smsToken'];
$this->channel = $data['channel'];
$this->param = $data['param'];
$this->handle();
}
/**
* Execute the job.
*
* @return void
*/
public function handle() {
$sms = new ChuanglanSmsApi();
$code = $this->generateCode();
$token = $this->smsToken;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
switch ($this->type) {
case 1:
//注册
$redis->set('register' . $token, $code);
$redis->expire('register' . $token, $this->expire);
break;
case 2:
//修改手机号码
$redis->set('updatePhone' . $token, $code);
$redis->expire('updatePhone' . $token, $this->expire);
break;
case 3:
//修改密码
$redis->set('updatePass' . $token, $code);
$redis->expire('updatePass' . $token, $this->expire);
break;
case 4:
//登录
$redis->set('login' . $token, $code);
$redis->expire('login' . $token, $this->expire);
break;
default:
$redis->set('sms' . $token, $code);
$redis->expire('sms' . $token, $this->expire);
break;
}
if($this->type > 4){
$template = $this->templateBorrow($this->param);
}else{
$template = $this->template($this->type, $code);
}
switch ($this->channel) {
case 1:
//创蓝短信发送调用
try{
$clapi = new ChuanglanSmsApi();
$result = $clapi->sendSMS($this->mobile, $template);
$rsp = json_decode($result, true);
if(array_key_exists('code', $rsp) && $rsp["code"] == '0' ){
return true;
}
}catch(\Exception $e){
Log::error('创蓝短信发送失败'.$e);
return false;
}
break;
case 2:
//微网通短信发送
try {
$send = new SmsCommitSender('dljjjh00', 'jjjh02071');
$result = $send->send(30304, '1012808', [$this->mobile], '【久久聚合】'.$template, '', '');
$rsp = json_decode($result, true);
if(array_key_exists("Result", $rsp) && $rsp["Result"] == "succ" ){
return true;
}
} catch (\Exception $e) {
Log::error('微网通短信发送失败'.$e);
return false;
}
break;
default:
break;
}
}
public function generateCode($length = 4, $characters = null)
{
$characters = $characters ?: '0123456789';
$charLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; ++$i) {
$randomString .= $characters[mt_rand(0, $charLength - 1)];
}
return $randomString;
}
/**1注册2修改手机号码3修改密码4本人登陆*/
public function template($type, $code=null)
{
$Template = [
1 => '您好,您的验证码为'.$code.'。5分钟内有效,请及时完成验证。此验证码仅用于您本人注册使用,打死也不要告诉别人哦!',
2 => '您好,您的验证码为'.$code.'。5分钟内有效,请及时完成验证。此验证码仅用于您本人修改绑定手机号,打死也不要告诉别人哦!',
3 => '您好,您的验证码为'.$code.'。5分钟内有效,请及时完成验证。此验证码仅用于您修改密码使用,打死也不要告诉别人哦!',
4 => '您好,您的验证码为'.$code.'。5分钟内有效,请及时完成验证。此验证码仅用于您本人登录使用,打死也不要告诉别人哦!',
];
return $Template[$type];
}
/**
* 发送模版消息
* 5月付审核通过
*/
public function templateBorrow($param)
{
$arr = [
'type'=>$param['type'],
'partnername'=>$param['partnername'],
'reason'=>$param['reason'],
'periods'=>$param['periods'],
'money'=>$param['money'],
'time'=>$param['time'],
'banknum'=>$param['banknum'],
'uname'=>$param['uname'],
'directorName'=>$param['directorName'],
];
$Template = [
5 => "您在{$arr['partnername']}订单审核已通过。友情提示:1.请注意查收短信并保证交费日当天银行卡内余额充足,届时系统将自动从账户中扣除。如有疑问,请拨打客服热线咨询,感谢您对久久聚合的支持",
];
return $Template[$param['type']];
}
}
2、调用短信发送
// 1.短信通知
$template['type'] = $templatetype;
$params['mobile'] = $UserLogin['mobile'];
$params['type'] = $templatetype;
$params['smsToken'] = $UserLogin['mobile'];
$params['param'] = $template;
$smscontroller = new SmsController();
$res = $smscontroller->sendTemplate($params);