Thinkphp3.2整合最新版阿里大鱼进行短信验证码发送

  • 1
  • 3,581 次浏览
  • A+
所属分类:PHP

阿里大鱼最新下载地址:阿里大鱼SDK下载 或者从官网进行下载:阿里大鱼SDK官网下载

下载完成后,将压缩包内的api_sdk文件夹放到ThinkPHP\Library\Vendor目录下,修改文件名为Aliyun,若修改为其他名称,请修改命名空间!

阿里大鱼申请步骤就不说了!开始接入吧~

设置阿里大鱼配置信息:

在配置文件中配置:

    'ALI_SMS' => [
        'PRODUCT' => 'Dysmsapi',
        'DOMAIN' => 'dysmsapi.aliyuncs.com',
        'REGION' => 'cn-hangzhou',
        'END_POINT_NAME' => 'cn-hangzhou',
        'KEY_ID' => '你的 Access Key ID',
        'KEY_SECRET' => '你的 Access Key Secret',
        'SIGN_NAME' => '签名名称',
        'TEMPLATE_CODE' =>'模板code',
    ],

设置完成以后,在function.php文件中新建发送短信函数,这里命名为sendCode:

<?php
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/2 0002
 * Time: 10:20
 */

function sendCode($num,$code){
    require_once '/ThinkPHP/Library/Vendor/Aliyun/vendor/autoload.php';
    //加载区域结点配置
    Config::load();
    // 初始化用户Profile实例
    $profile = DefaultProfile::getProfile(C('ALI_SMS.REGION'), C('ALI_SMS.KEY_ID'), C('ALI_SMS.KEY_SECRET'));
    // 增加服务结点
    DefaultProfile::addEndpoint(C('ALI_SMS.END_POINT_NAME'), C('ALI_SMS.REGION'), C('ALI_SMS.PRODUCT'), C('ALI_SMS.DOMAIN'));
    // 初始化AcsClient用于发起请求
    $acsClient= new DefaultAcsClient($profile);
    // 初始化SendSmsRequest实例用于设置发送短信的参数
    $request = new SendSmsRequest();
    // 必填,设置雉短信接收号码
    $request->setPhoneNumbers($num);
    // 必填,设置签名名称
    $request->setSignName(C('ALI_SMS.SIGN_NAME'));
    // 必填,设置模板CODE
    $request->setTemplateCode(C('ALI_SMS.TEMPLATE_CODE'));
    // 可选,设置模板参数
    $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
        "code"=>$code,
        "product"=>"dsd"
    ), JSON_UNESCAPED_UNICODE));
    //发起访问请求
    $acsResponse = $acsClient->getAcsResponse($request);
    //返回请求结果
    $result = json_decode(json_encode($acsResponse),true);
    return $result;

}

使用,只在=在控制器中调用sendCode函数即可:

public function sendmsg(){
    $phone = input('post.phone_num');
    $code = rand(100000,999999);
    $res = sendCode($phone,$code);
    if($code == "OK"){
        $data = array('msg'=>'success');
    }else{
        $data = array('msg'=>'error');
    }
    $this->ajaxReturn($data);
}

效果如下所示:

Thinkphp3.2整合最新版阿里大鱼进行短信验证码发送

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 路人 1

      写的很好,简单明了,很详细