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); // 2.微信消息模版 $MessageController = new MessageController(); $param['touser'] = $UserLogin['openid_wxc']; $param['param'] = $template; $param['url'] = 'https://www.jiujiujuhe.com/m/order/orderlist'; $param['template_id'] = 'IjujrqX28rJw68MuV6rzRtZXXCqcVyfp-R2BD80A5NA'; $smssender = new SmsSender(); $tem = $smssender->templateBorrow($param['param']); $param['data'] = [ 'first' => [ "value"=>"久久月付订单审核通知", "color"=>"#173177" ], 'keyword1' => [ "value"=>'月付订单审核', "color"=>"#173177" ], 'keyword2' => [ "value"=>date('Y-m-d'), "color"=>"#173177" ], 'keyword3' => [ "value"=>$template['result'], "color"=>"#173177" ], 'keyword4' => [ "value"=>$tem, "color"=>"#173177" ], 'remark' => [ "value"=>'请及时查看', "color"=>"#173177" ], ]; $res = $MessageController->sendWenChantTemplate($param);