ThinkPHP实现阿里云的发送验证码功能

首先就是前面那一套, 
1、申请Access Key 
2、短信模板及其签名

然后我们就可以去官网上下载sdk了 本篇博文我们只讨论我们如何发送验证码

下载了Sdk后可以看到有两个sdk , 
我们先把api_sdk放到项目的根目录 
像这样 
这里写图片描述

在我们需要调用的控制器内的代码如下

<?php
namespace Home\Controller;


use Think\Controller;

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

class IndexController extends Controller {
    /**
     * 数据处理
     */
    public function index()
    {
        $this->sendMsg("测试手机号","测试的验证码");//可以是
    }
    public function sendMsg($mobile,$code){

        require_once APP_PATH.'/Api/api_sdk/vendor/autoload.php';
        Config::load();             //加载区域结点配置

        $accessKeyId = "accessKeyId";//自己替换自己的accessKeyId
        $accessKeySecret = "accessKeySecret";//自己替换自己的accessKeySecret
        $templateParam = array("验证码参数"=>$code);           //模板变量替换              假如要用验证码的话 需要把你短信模板的验证码参数改正   如  $templateParam = array("code"=>$code); 
        $templateCode = "短信模板ID";   //短信模板ID


        //短信API产品名(短信产品名固定,无需修改)
        $product = "Dysmsapi";
        //短信API产品域名(接口地址固定,无需修改)
        $domain = "dysmsapi.aliyuncs.com";
        //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
        $region = "cn-hangzhou";

        // 初始化用户Profile实例
        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
        // 增加服务结点
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
        // 初始化AcsClient用于发起请求
        $acsClient= new DefaultAcsClient($profile);

        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();
        // 必填,设置雉短信接收号码
        $request->setPhoneNumbers($mobile);

        // 必填,设置签名名称
        $request->setSignName($signName);

        // 必填,设置模板CODE
        $request->setTemplateCode($templateCode);

        // 可选,设置模板参数
        if($templateParam) {
            $request->setTemplateParam(json_encode($templateParam));
        }

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

        //返回请求结果
        $result = json_decode(json_encode($acsResponse),true);
        dump($result);
        dump(json_encode($templateParam));
        return $result;
    }
}

我是当时是在传json数据那里卡住了,没有注意我当时设置的短信模板是的验证码参数

我也是研究了半天,共同学习

附上常见的API报错https://help.aliyun.com/knowledge_detail/57071.html 解决地址 
和常见的短信接口报错https://help.aliyun.com/knowledge_detail/57717.html?spm=5176.7757071.6.582.57GGEj

转自:http://blog.csdn.net/qq_36172443/article/details/77825933

基于thinkphp5扩展的阿里大鱼短信接口。 使用方式: 1:将压缩包解压到项目根目录下simplewind文件夹下的extend文件夹中。 2:在use think\config文 件中加入配置 'wechat' =>array( /**********阿里大鱼配置************/ 'all_appkey' => '',//阿里大鱼Appkey 'all_secret' => '',//阿里大鱼Secret 'domain' => 'dysmsapi.aliyuncs.com',//阿里大鱼产品域名 'product' => 'Dysmsapi',////产品名称:云通信流量服务API产品,开发者无需替换 'region' => 'cn-hangzhou',//暂时不支持多Region 'end'=>'cn-hangzhou',// 服务结点 ), 3:在公共函数文件头部中加入 use aliyun\api_demo; 然后添加以下的阿里云调用方法: /**********************************发送短信--阿里大鱼********************/ /** * @param $autograph //签名 * @param $model //短信模板 * @param $phone //短信接收号码 * @param array $array //短信模板内容 * @param $water //流水号 * @return api_demo\stdClass|string */ function sk_aldayuCode($autograph,$model,$phone,$array=array(),$water){ if(!$autograph || !$model || !$phone || empty($array) || !$water){ return "参数不齐全:".$autograph."|".$model."|".$phone."|".$water; } $response = api_demo\SmsDemo::sendSms($autograph,$model,$phone,$array,$water); if(!$response->Message || $response->Message != 'OK'){ $msg['Message'] = $response->Message; return json_encode($msg,JSON_UNESCAPED_UNICODE); }else{ $msg['code'] = $array; $msg['Message'] = "OK"; return json_encode($msg,JSON_UNESCAPED_UNICODE); } } /**********************************发送短信--阿里大鱼********************/ 4:在须要调用短信发送的类中直接调用上方的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值