laravel框架发送短息消息(微网通短信和创蓝短息)

8 篇文章 0 订阅
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);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值