• 阿里大于短信接口整合TP5


    将自己下载下来的短信库放入extend下(阿里大于:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.2cc53a76oPizZF)
    <?php
    namespace auth;
    
    require_once EXTEND_PATH . 'Aliyun/DayuSMS.php';
    
    class Alisms
    {
        public static $SMS = null;
    
        const SignName = '自己的签名';
        const AccessKeyId = '填写自己申请的';
        const AccessKeySecret = '填写自己申请的';
    
      
        /**
         * 系统验证码
         * @param $phoneNumbers
         * @param null $code
         * @return bool
         */
        public static function sendCodeSms($phoneNumbers, $code = null)
        {
            return self::sendSms($phoneNumbers,'SMS_*********', array('code' => $code));
        }
    
        /**
         * 店主订单通知
         * @param $phoneNumbers
         * @return bool
         */
        // public static function sendOrderNotifi($phoneNumbers)
        // {
        //     return self::sendSms($phoneNumbers, 'SMS_*********');
        // }
    
        /**
         * 阿里大于短信接口
         * @param $phoneNumbers
         * @param null $templateCode
         * @param array $data
         * @return bool
         */
        private static function sendSms($phoneNumbers, $templateCode = null, $data = array())
        {
            if(empty($phoneNumbers) || empty($templateCode)) {
                Log::fatal('DayuSMS::sendSms $phoneNumbers OR $templateCode Is Empty');
                return false;
            }
            if (empty(self::$SMS)) {
                self::$SMS = new DayuSMS(self::AccessKeyId, self::AccessKeySecret);
            }
            $acsResponse = self::$SMS->sendSms(self::SignName,$templateCode, $phoneNumbers, $data);
    //        dump($acsResponse);die();
    //        Log::debug(json_encode($acsResponse));
    //        return self::errCode($acsResponse);
            $result = json_decode(json_encode($acsResponse),true);
            return $result;
        }
    
        private static function errCode($ret)
        {
            if ($ret->Code == 'OK') {
                return true;
            } else {
                return false;
            }
        }
    }
    <?php
    
    ini_set("display_errors", "on");
    
    use AliyunCoreConfig;
    use AliyunCoreProfileDefaultProfile;
    use AliyunCoreDefaultAcsClient;
    use AliyunApiSmsRequestV20170525SendSmsRequest;
    use AliyunApiSmsRequestV20170525QuerySendDetailsRequest;
    
    // 加载区域结点配置
    Config::load();
    $config = config('alidayusms'); //获取配置信息
    
    /**
     * Class SmsDemo
     *
     * @property AliyunCoreDefaultAcsClient acsClient
     */
    class DayuSMS
    {
    
        /**
         * 构造器
         *
         * @param string $accessKeyId 必填,AccessKeyId
         * @param string $accessKeySecret 必填,AccessKeySecret
         */
        public function __construct($accessKeyId, $accessKeySecret)
        {
    
            // 短信API产品名
            $product = "Dysmsapi";
    
            // 短信API产品域名
            $domain = "dysmsapi.aliyuncs.com";
    
            // 暂时不支持多Region
            $region = "cn-hangzhou";
    
            // 服务结点
            $endPointName = "cn-hangzhou";
    
            // 初始化用户Profile实例
            $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
    
            // 增加服务结点
            DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
    
            // 初始化AcsClient用于发起请求
            $this->acsClient = new DefaultAcsClient($profile);
        }
    
        /**
         * 发送短信范例
         *
         * @param string $signName <p>
         * 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a>
         * </p>
         * @param string $templateCode <p>
         * 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a>
         * (e.g. SMS_0001)
         * </p>
         * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901)
         * @param array|null $templateParam <p>
         * 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信"))
         * </p>
         * @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234)
         * @return stdClass
         */
        public function sendSms($signName, $templateCode, $phoneNumbers, $templateParam = null, $outId = null) {
    
            // 初始化SendSmsRequest实例用于设置发送短信的参数
            $request = new SendSmsRequest();
    
            // 必填,设置雉短信接收号码
            $request->setPhoneNumbers($phoneNumbers);
    
            // 必填,设置签名名称
            $request->setSignName($signName);
    
            // 必填,设置模板CODE
            $request->setTemplateCode($templateCode);
    
            // 可选,设置模板参数
            if($templateParam) {
                $request->setTemplateParam(json_encode($templateParam));
            }
    
            // 可选,设置流水号
            if($outId) {
                $request->setOutId($outId);
            }
    
            // 发起访问请求
            $acsResponse = $this->acsClient->getAcsResponse($request);
    
            // 打印请求结果
            // var_dump($acsResponse);
    
            return $acsResponse;
    
        }
    
        /**
         * 查询短信发送情况范例
         *
         * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901)
         * @param string $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询 (e.g. 20170710)
         * @param int $pageSize 必填,分页大小
         * @param int $currentPage 必填,当前页码
         * @param string $bizId 选填,短信发送流水号 (e.g. abc123)
         * @return stdClass
         */
        public function queryDetails($phoneNumbers, $sendDate, $pageSize = 10, $currentPage = 1, $bizId=null) {
    
            // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数
            $request = new QuerySendDetailsRequest();
    
            // 必填,短信接收号码
            $request->setPhoneNumber($phoneNumbers);
    
            // 选填,短信发送流水号
            $request->setBizId($bizId);
    
            // 必填,短信发送日期,支持近30天记录查询,格式Ymd
            $request->setSendDate($sendDate);
    
            // 必填,分页大小
            $request->setPageSize($pageSize);
    
            // 必填,当前页码
            $request->setCurrentPage($currentPage);
    
            // 发起访问请求
            $acsResponse = $this->acsClient->getAcsResponse($request);
    
            // 打印请求结果
            // var_dump($acsResponse);
    
            return $acsResponse;
        }
    
    }
    
    
    在controller控制器调用接口
    public function sms()
            {
                $code = Session::get('code');
                $phone_number = $this->request->param('useProPhone');
    //            dump($phone_number);
                if(!$phone_number){
                    return success(['code'=>0,'message'=>'请输入手机号','data'=>'']);
                }
                //创建模型
    //            $user = new UserModel;
                //判断用户是否已注册
    //            $res = Db::name('user_profile')
    //                ->where('useProPhone',$phone_number)
    //                ->find();
                $arr = [];
                $useProPhone = input('param.useProPhone');
                $res = Db::name('user_profile')
                    ->where('useProPhone', $phone_number)
                    ->find();
    //            dump($res);
                if($res){
                    return success(['code'=>5,'message'=>"该号码已经注册",'data'=>'']);
                }
    
                //获取随机6位数字
    //            $randString = Message::randString();
                $randString = rand(10000,999999);
    //            dump($randString);
                // 调用示例:
                //设置程序执行时间,参数为0,表示永久执行,直到程序结束
                set_time_limit(0);
                //向客户端发送原始的http请求
                header('Content-Type: text/plain; charset=utf-8');
    
                $response = new Alisms();
                $response->sendCodeSms(
    //                '$phone_number','$code'
                   "$phone_number",
                   "$randString"
                );
    //            dump($response);die();
    //            $response = DayuSMS::sendSms(
    //                "拾久应用", // 短信签名
    //                "SMS_143740225", // 短信模板编号
    //                "$phone_number", // 短信接收者
    //                Array(  // 短信模板中字段的值
    //                    "code"=>"$randString"
    //                    //        "product"=>"dsd"
    //                ),
    //                "123"   // 流水号,选填
    //            );
                cache($phone_number,$randString);
    
                if($response){
                    return success(['code'=>1,'message'=>'发送成功','data'=>'']);
                }else{
                    return success(['code'=>2,'message'=>'发送失败','data'=>'']);
                }
            }
  • 相关阅读:
    生产力-能力-生产工具
    window.location.Reload()和window.location.href 区别
    getAttribute() 与 attr() 的区别
    清空标签间的内容(innerHTML)和 value
    使用 data-* 属性来嵌入自定义数据:
    JS-jquery 获取当前点击的对象
    Redis深度历险——核心原理与应用实践
    PhpStorm 配置 Xdebug调试工具
    phpCOW机制详解
    rel=nofollow 是什么意思
  • 原文地址:https://www.cnblogs.com/swmin/p/9585198.html
Copyright © 2020-2023  润新知