ThinkPHP5.0集成阿里大于发送短信验证码

1.登录阿里云管理控制台,找到短信服务,AccessKey ID、Access Key Secret两个参数,在下面这个地方可以找到:

 2.添加一个短信签名,为短信内容开头的发送方标识,如:【李维山】您的验证码是6666......

3.添加一个短信模板,为短信的主题内容,其中的变量,如验证码,用 ${xxx} 替换:

4.下载PHP的demo,这里用的是旧版的,新版的才出来没几天好像

下载解压后把api_sdk文件夹拿出来,放到了tp5的extend目录下重命名为aliyun-sms:

再把api_demo文件夹下的SmsDemo.php拿出来,放到了tp5的application/common目录下,重命名为AliSms.php:

5.修改AliSms.php,包括命名空间、require路径、以及AccessKey ID、Access Key Secret两个参数改为自己的:

<?php
namespace app\common;
ini_set("display_errors", "on");

require_once APP_PATH . '/../extend/aliyun-sms/vendor/autoload.php';

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

// 加载区域结点配置
Config::load();

/**
 * Class SmsDemo
 *
 * 这是短信服务API产品的DEMO程序,直接执行此文件即可体验短信服务产品API功能
 * (只需要将AK替换成开通了云通信-短信服务产品功能的AK即可)
 * 备注:Demo工程编码采用UTF-8
 */
class AliSms
{

}

修改发送短信的方法stdClass:(包括手机号和验证码赋予变量、签名和模板换为自己的)

/**
 * 发送短信
 * @param $phone int 手机号
 * @param $code  int 验证码
 * @return stdClass
 */
public static function sendSms($phone, $code) {

    // 初始化SendSmsRequest实例用于设置发送短信的参数
    $request = new SendSmsRequest();

    //可选-启用https协议
    //$request->setProtocol("https");

    // 必填,设置短信接收号码
    $request->setPhoneNumbers($phone);

    // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
    $request->setSignName("李维山");

    // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
    $request->setTemplateCode("SMS_153992488");

    // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
    $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
        "code" => $code,
        //"product" => "dsd"
    ), JSON_UNESCAPED_UNICODE));

    // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
    $request->setSmsUpExtendCode("1234567");

    // 发起访问请求
    $acsResponse = static::getAcsClient()->getAcsResponse($request);

    return $acsResponse;
}

6.发送短信时调用AliSms工具类:

<?php
namespace app\index\controller;
use think\Controller;
use app\common\AliSms;
class Test extends Controller
{
    public function sendsms()
    {
        $arr = ['code'=>0,'msg'=>'发送失败!'];
        $phone = input('post.phone');
        $code = rand(1000, 9999);
        $res = AliSms::sendSms($phone, $code);
        if($res->Code === "OK") {
            //省略业务逻辑......

            $arr['code'] = 200;
            $arr['msg'] = '发送成功!';
        }
        return json($arr);        
    }
}

 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李维山

帮到你就行 不差钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值