EG: accessKeyid和accessKeySecret还有模板ID、签名名称这几项必要参数自己去阿里云获取

一、下载SDK和demo

下载并解压后

在laravel框架的app目录下创建libs/Aliyun目录并将上面两个文件夹复制进去,如果按照此方法则不需要改命名空间,如果你放在别的地方就根据你的路径修改一下命名空间

在根目录的composer.json里添加如下配置:


然后在cmd中进入根目录然后进行
composer dumpautoload

执行后若出现如下图所示,则表示更新成功

二、代码部分

1、首先引入文件并载入短信平台节点

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();

2、发送代码

public function send(Request $request)
{
$phone = $request['phone'];//接收的手机号
//print_r($phone);die;
$code = rand(100000,999999);//随机生成的6位验证码
session('code',$code);//将随机数写入session
session('mphone',$phone);//写入获取的手机号
session('codetime',time());//写入当前时间
$response = SmsController::sendSms(
"你的签名",//signName
"你的短信模板code",//templateCode
$phone,//手机号
Array( // 短信模板中字段的值
"code"=>$code,
)
);
$row = [];
if ($response->Code == 'OK')
{
$row = ['status'=>1,'code'=>$code];
}
else
{
$row = ['status'=>0,'code'=>$response->Code,'message'=>$response->Message];
}
return json_encode($row);
} static $acsClient = null; /**
* 取得AcsClient
*
* @return DefaultAcsClient
*/
public static function getAcsClient() {
//产品名称:云通信流量服务API产品,开发者无需替换
$product = "深呼吸app"; //产品域名,开发者无需替换
$domain = "dysmsapi.aliyuncs.com"; // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
$accessKeyId = "你自己的AccessKeyId"; // AccessKeyId $accessKeySecret = "你自己的AccessKeySecret"; // AccessKeySecret // 暂时不支持多Region
$region = "cn-hangzhou"; // 服务结点
$endPointName = "cn-hangzhou"; if(static::$acsClient == null)
{
//初始化acsClient,暂不支持region化
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); EndpointConfig::load();
DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
// 增加服务结点
// 初始化AcsClient用于发起请求
static::$acsClient = new DefaultAcsClient($profile);
}
return static::$acsClient;
} /**
* 发送短信
*
* @param string $signName <p>
* 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a>
* </p>
* @param string $templateCode <p>
* 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a>
* (e.g. SMS_0001)
* </p>
* @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901)
* @param array|null $templateParam <p>
* 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信"))
* </p>
* @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234)
* @param string|null $smsUpExtendCode [optional] 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
* @return stdClass
*/
public static function sendSms($signName, $templateCode, $phoneNumbers, $templateParam = null, $outId = null, $smsUpExtendCode = null) { // 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest(); // 必填,设置雉短信接收号码
$request->setPhoneNumbers($phoneNumbers); // 必填,设置签名名称
$request->setSignName($signName); // 必填,设置模板CODE
$request->setTemplateCode($templateCode); // 可选,设置模板参数
if($templateParam) {
$request->setTemplateParam(json_encode($templateParam));
}
// 可选,设置流水号
if($outId) {
$request->setOutId($outId);
}
// 选填,上行短信扩展码
if($smsUpExtendCode) {
$request->setSmsUpExtendCode($smsUpExtendCode);
}
// 发起访问请求
$acsResponse = static::getAcsClient()->getAcsResponse($request);
// 打印请求结果
// var_dump($acsResponse);
return $acsResponse;
}

有的人会出现:

发现问题在 app/libs/Aliyun/Core/DefaultAcsClient.doActionImpl(),是程序主动抛出的错误。

官方注释说 $domain是产品域名,开发者无需替换。but。。。。没替换,报个什么错啊。

既然不需要,就直接在/DefaultAcsClient.doActionImpl()把$domain 写死

然后测试接口会返回结果:

这样就发送成功了


												

laravel框架使用阿里短信接入的更多相关文章

  1. [麦先生]Laravel框架实现发送短信验证

    今天在做到用户注册和个人中心的安全管理时,我借助实现第三方短信平台在Laravel框架中进行手机验证的设置;  由于我们做的是一个为客户提供医疗咨询和保健品网站,所以对客户个人隐私的保护显得尤为重要, ...

  2. PHP接入阿里云市场 阿里短信服务DEMO

    阿里短信服务:支持三大运营商短信.智能管道等优质能力,产品特点:3秒可达.99%到达率.超低资费. 使用阿里短信服务步骤: 1.购买服务 到https://market.aliyun.com/prod ...

  3. PHP开发实用-阿里短信服务(Short Message Service)

    步骤 1 使用阿里云短信服务正常发短信需要 短信签名 短信模板 1申请短信签名   根据用户属性来创建符合自身属性的签名信息.企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明.   ...

  4. 阿里短信封装SDK TP3.2

    1.阿里短信接口需要企业认证: 2.短信需要短信模板 <?php /** * 阿里云短信验证码发送类 * @param string $accessKeyId key * @param stri ...

  5. SpringBoot整合阿里短信服务

    导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号(点我直达)等推送功能,网上学习下,整理下来以备以后使用. 步骤 点我直达 登录短信服务控制台 点我直 ...

  6. java语言实现的短信接入实例,各公司大同小异

    和几家短信平台接触过,都进行了接入测试.总体来说短信发送又快,覆盖率又全的,价格相对贵些.简易选两家分开使用,短信验证码的用一家贵的快的,普通的推广群发短信就用一个便宜的. 下面显示下测试代码 pub ...

  7. 阿里短信接口使用(JAVA版)

    近期项目需要使用短信接口,对比下选择了阿里的短信接口 以下为开发笔记: maven pom.xml中引入: <dependency> <groupId>com.aliyun&l ...

  8. .net调用阿里短信接口

    一.创建一个空的api项目 二.应用阿里的短信包 aliyun-net-sdk-core 三.登录阿里添加签名和模板 四.创建创建AccessKey 注意 AccessKey创建后,无法再通过控制台查 ...

  9. 阿里短信回持.net sdk的bug导致生产服务cpu 100%排查

    一:背景 1. 讲故事 去年阿里聚石塔上的所有isv短信通道全部对接阿里通信,我们就做了对接改造,使用阿里提供的.net sdk. 网址:https://help.aliyun.com/documen ...

随机推荐

  1. 一台机器上同时运行两个tomcat

    修改conf/server.xml文件,修改地方有三处 如图

  2. vue中阻止事件穿透的方法

    默认情况下,事件在h5页面会穿透传递,比如一div里面套一个div,点击上层div,下层div也会响应 要阻止事件穿透,使用event.stopPropagation(); 代码示例: <div ...

  3. codewars--js--Two Joggers--求最小公倍数、最大公约数

    问题描述: Two Joggers Description Bob and Charles are meeting for their weekly jogging tour. They both s ...

  4. 内网学习之Kerberos协议

    学习了解kerberos协议,有助于我们后期理解黄金票据和白银票据的原理 kerberos协议 kerberos是一种由麻省理工大学提出的一种网络身份验证协议.旨在通过使用密钥加密技术为客户端/服务器 ...

  5. 有关版本控制--SVN

    什么是版本控制? 这个之前有记录过相关的内容 版本管理就是管理更新的历史记录, 它给我们提供了一些在软件开发过程中必不可少的功能,例如: 记录一款软件添加或更改源代码的过程 回滚到特定阶段,恢复误删除 ...

  6. 使用Xcode7非美刀购买开发者帐号,非越狱安装IOS ipa

    做苹果开发,需要至少99美刀注册开发者帐号,这样写出来的程序才可以在真机上运行调试,才可以发布到app store,现在xcode7之后苹果有了调整,除了发布到app store还是需要美刀帐号,其它 ...

  7. System.Text.Json 自定义Converter实现时间转换

    Newtonsoft.Json与System.Text.Json区别 在 Newtonsoft.Json中可以使用例如 .AddJsonOptions(options => { options. ...

  8. centos7下NAT模式下设置静态ip

    1.在虚拟网络编辑器下查看子网IP.子网掩码以及网关 2.在Linux系统中进入 /etc/sysconfig/network-scripts目录下,编辑ifcfg-ens33文件,改成下面的内容: ...

  9. 两行配置完全解放gradle编译慢问题

    Android Studio编译经常出现gradle编译缓慢甚至超时问题,抛开电脑硬件配置不说,主要问题还是国内网络环境的因素影响,可以通过修改项目根目录下的build.gradle文件如下: bui ...

  10. jQuery---五角星评分案例

    五角星评分案例 1. 鼠标经过li的时候,当前的位置是实心五角星,前面的是实心.当前位置后面的是空心.注意此处不能完全用链式编程写到底 2. 鼠标离开,comment的所有孩子变为空心五角星.额外,找 ...