扩展接口-阿里云短信服务
in Other with 0 comment

扩展接口-阿里云短信服务

in Other with 0 comment

扩展接口-阿里云短信服务

说明

公司要用到短信发送服务,然后调研了一下阿里云的短信服务,记录一下使用的过程。


相关介绍

阿里云的短信服务跟其他的短信服务大致一样,也是区分国内信息跟港澳台,流程也是需要先添加签名,后添加短信模板。

文档地址:https://help.aliyun.com/document_detail/101414.html?spm=a2c4g.11174283.4.4.38202c42YuNgbS

msg1

添加签名

请输入图片描述

添加模板

模板
验证码模板

代码示例
  /**
   * 用户发送验证码
   * 支持多种发送验证码类型
   * @api POST /v1/user/send-sms
   * @param  string   mobile 登录手机号
   * @param  string   type 1 H5用户注册 2 H5找回密码 3 H5手机号登录  4 银行卡绑定
   * @return string   $message 状态说明
   * @return mixed    $data 其他数据
   */

  public function actionSendSms(){
    $type = \Yii::$app->request->post('type'); //1 H5用户注册 2 H5找回密码 3 H5手机号登录  4 银行卡绑定
    $mobile = \Yii::$app->request->post('mobile');

    if(!in_array($type, SmsCode::$smsType)){
      return $this->returnData(0, '短信类型错误');
    }

    if(empty($mobile)) return  $this->returnData(0, '手机号不能为空');
    // return $this->returnData(0, '两次验证码发送时间不能小于'.$mobile .','. $type);

    if(!SmsCode::sendSmsTimeInterval($mobile, $type)) 
      return $this->returnData(0, '两次验证码发送时间不能小于'.SmsCode::$intervalSms.'秒');


    if(!SmsCode::sendSmsSafe($mobile))
      return $this->returnData(0, '该手机号24小时内最多发送' . SmsCode::$dayMaxSmsCount .'条');

    $ip = Yii::$app->request->getUserIP();
    if(!SmsCode::sendSmsSafeByIp($ip))
      return $this->returnData(0, '当前网络24小时内最多发送'.SmsCode::$dayMaxSmsCountByIp.'条');

    $smsCode = SmsCode::makeSmsCode();
    $time = time();

    $data = array(
      'mobile' => $mobile,
      'code' => $smsCode,
      'created' => $time,
      'ip' => $ip,
      'type' => $type,
    );

    if(!$id = SmsCode::insertData($data)){
      return $this->returnData(0, '操作失败'); 
    }

    if(!SmsHelper::sendMsg($mobile, $smsCode)){
      return $this->returnData(0, '验证码发送成功'); 
    }

    return $this->returnData(1, '成功'); 
  }

public static function sendMsg($mobile, $code){
    AlibabaCloud::accessKeyClient('*************', '***********')
        ->regionId('cn-hangzhou')
        ->asDefaultClient();
    try {
        $result = AlibabaCloud::rpc()
            ->product('Dysmsapi')
            // ->scheme('https') // https | http
            ->version('2017-05-25')
            ->action('SendSms')
            ->method('POST')
            ->host('dysmsapi.aliyuncs.com')
            ->options([
                'query' => [
                    'RegionId' => "cn-hangzhou",
                    'PhoneNumbers' => $mobile,
                    'SignName' => "Depp-zxliucn", //签名名称
                    'TemplateCode' => "SMS_190268665",  //模板id
                    'TemplateParam' => "{code:".$code."}",
                ],
            ])
            ->request();
        Yii::info(print_r($result->toArray(),true));
        return true;
    } catch (ClientException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
        Yii::error($e->getErrorMessage());
    } catch (ServerException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
        Yii::error($e->getErrorMessage());
    }
}

结尾

心如花木,向阳而生。

Responses