php 阿里云短信服务及阿里大鱼实现短信验证码的发送

一:使用阿里云的短信服务

① 申请短信签名

②申请短信模板

③创建Access Key,获取AccessKeyId 与 AccessKeySecret。(为了安全起见,这里建议使用子用户的Access Key)

然后,下载阿里云短信服务的SDK包,https://help.aliyun.com/document_detail

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

在项目的app目录下新建Libs文件夹,将上图的两个SDK包放入Libs下。

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

项目根目录找到composer.json文件,打开,修改配置如下

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

紧接着在项目根目录执行:composer dumpautoload

引入这两个SDK包。

最后,

<?php
namespace App\Http\Controllers; 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\QuerySendDetailsRequest;
// 加载区域结点配置
Config::load();
... public function __construct($accessKeyId="6456457897447",$accessKeySecret="66666664444444")
{
// $this->sms=$sms; // 短信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);
} ... //具体实现方法
function getCode($phoneNumbers="1********7",$signName="****",$templateCode="SMS_55555555",$outId=null){
// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest;
// 必填,设置雉短信接收号码
$request->setPhoneNumbers($phoneNumbers);
// 必填,设置签名名称
$request->setSignName($signName);
// 必填,设置模板CODE
$request->setTemplateCode($templateCode);
$num = rand(100000,999999);
// 可选,设置模板参数
$request->setTemplateParam(json_encode(
Array(
"code" => "$num"
)
));
// 可选,设置流水号
if($outId) {
$request->setOutId($outId);
}
// 发起访问请求
$acsResponse = $this->acsClient->getAcsResponse($request);
}

调用以上getCode方法,即可发送短信验证码。

二:使用阿里大于发送短信验证码

还是必不可少的三点,

① 申请短信签名

②申请短信模板

③获取App Key与 App Secret

把下载好的sdk包放入Libs文件夹下,

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

php 阿里云短信服务及阿里大鱼实现短信验证码的发送

执行composer dumpautoload;

实现短信验证码的发送:

php 阿里云短信服务及阿里大鱼实现短信验证码的发送


public function getCode($phoneNumbers="1*********7",$signName="****",$templateCode="SMS_666666666"){
include app_path()."\Libs\sdk_php\TopSdk.php";
date_default_timezone_set('Asia/Shanghai');
$c = new \TopClient;
$c->appkey = '8888888888';
$c->secretKey = '555555555555555555555';
$req = new \AlibabaAliqinFcSmsNumSendRequest;
$req->setExtend("123456");
$req->setSmsType("normal");
$req->setSmsFreeSignName($signName);
// $num = rand(100000,999999);
$req->setSmsParam("{\"code\":\"12334\",\"product\":\"alidayu\"}");
$req->setRecNum($phoneNumbers);
$req->setSmsTemplateCode($templateCode);
$resp = $c->execute($req);
// var_dump($c->execute($req));
}

阿里大于短信使用api :https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4.6.5MNlbE&apiId=25450

相关博客:http://blog.csdn.net/qq_38125058/article/details/79156289

上一篇:BZOJ 1088 扫雷Mine


下一篇:fragment相关