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. 网络模块axios的简单应用

    一.axios的基本使用 例子中使用到的url仅作为示例,不一定有效,想要复现代码需要使用能够提供数据的有效服务器接口url 1.1.什么是axios axios:ajax i/o system:是用 ...

  2. eslint报"Extra semicolon"错误的解决

    手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 使用 vue-cli 构建的项目,模版是 ...

  3. Solr系列4-SolrJ开发应用

    1: Solr导入 1.1导入POM # Base Code Java org.apache.solr solr-solrj 8.4.0 # spring boot org.springframewo ...

  4. Centos7之firewall配置命令

    firewalld的基本使用 查看状态:systemctl status firewalld 启动:systemctl start firewalld 停止:systemctl stop firewa ...

  5. [Contract] Solidity 变量类型的默认值

    变量的默认值一般都代表 “零值”. 比如 bool 就是 false,uint.int 就是 0,string 就是空字符串. 其它组合的参考 Solidity 判断 mapping 值的存在 Ref ...

  6. 在本地搭建git服务器

    GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 搭建Gi ...

  7. 【Java】实验代码整理(多线程、自定义异常、界面)

    1.界面+文件输入输出流 package finalExam; import java.awt.BorderLayout; import java.awt.Container; import java ...

  8. CSS语法、选择器、继承、层叠

    行内样式(内联样式) <h1 style="color:red;font-size:20px;">css行内样式</h1> 内部样式表(嵌入样式) < ...

  9. git签名设置

    作用:只区分不同开发人员的身份 一.项目级别/仓库级别:仅在当前本地库范围内有效 签名设置用户名(UserName)和邮箱(User@email),邮箱可以是任意邮箱(无效邮箱也可以) git con ...

  10. 【笔记】机器学习 - 李宏毅 - 13 - Why Deep

    当参数一样多的时候,神经网络变得更高比变宽更有效果.为什么会这样呢? 其实和软件行业的模块化思想是一致的. 比如,如果直接对这四种分类进行训练,长发的男孩数据较少,那么这一类训练得到的classifi ...