使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心。

1. accessKeyId 相当于你的个人账户密钥;

2. accessKeySecret 与上是成对的;

3. SignName 个人签名,在发出去的短信中,这个签名会显示在开头,类似 【签名】亲爱的用户...... 这种格式,SignName需要通过提交审核;

4.TemplateCode 模板代码,阿里云短信是无法完全自定义短信的,需要通过审核的模板,然后自己再替换掉模板中的变量,如模板:“您的验证码是${code}” ,code就是变量,使用时需设置变量值{"code":"12345"}(设置变量值的过程在demo中实现),短信发出去后变成:“您的验证码是12345”,每个通过审核的模板会提供一个模板代码;

最新的阿里云短信接口,适用于阿里大于搬家以后的情况。

之前一直用阿里大于的短信接口,最近上项目时发现阿里大于悄悄地搬家到了阿里云!阿里云的SDK文件繁多,看得一头雾水!下面代码是最新的可适用于阿里云短信服务的类,亲测成功!

<?php /** * 阿里云短信验证码发送类 * @author Administrator * */class Sms { // 保存错误信息 public $error; // Access Key ID private $accessKeyId = ''; // Access Access Key Secret private $accessKeySecret = ''; // 签名 private $signName = ''; // 模版ID private $templateCode = ''; public function __construct($cofig = array()) { $cofig = array ( 'accessKeyId' => 'xxxxxxxxxxx', 'accessKeySecret' => 'xxxxxxxxxx', 'signName' => '你的签名', 'templateCode' => 'SMS_76510109' ); // 配置参数 $this->accessKeyId = $cofig ['accessKeyId']; $this->accessKeySecret = $cofig ['accessKeySecret']; $this->signName = $cofig ['signName']; $this->templateCode = $cofig ['templateCode']; } private function percentEncode($string) { $string = urlencode ( $string ); $string = preg_replace ( '/+/', '%20', $string ); $string = preg_replace ( '/*/', '%2A', $string ); $string = preg_replace ( '/%7E/', '~', $string ); return $string; } /** * 签名 * * @param unknown $parameters  * @param unknown $accessKeySecret  * @return string */ private function computeSignature($parameters, $accessKeySecret) { ksort ( $parameters ); $canonicalizedQueryString = ''; foreach ( $parameters as $key => $value ) { $canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value ); } $stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) ); $signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) ); return $signature; } /** * @param unknown $mobile  * @param unknown $verify_code  * */ public function send_verify($mobile, $verify_code) { $params = array ( //此处作了修改 'SignName' => $this->signName, 'Format' => 'JSON', 'Version' => '2017-05-25', 'AccessKeyId' => $this->accessKeyId, 'SignatureVersion' => '1.0', 'SignatureMethod' => 'HMAC-SHA1', 'SignatureNonce' => uniqid (), 'Timestamp' => gmdate ( 'Y-m-dTH:i:sZ' ), 'Action' => 'SendSms', 'TemplateCode' => $this->templateCode, 'PhoneNumbers' => $mobile, //'TemplateParam' => '{"code":"' . $verify_code . '"}'  'TemplateParam' => '{"time":"1234"}' //更换为自己的实际模版 ); //var_dump($params);die; // 计算签名并把签名结果加入请求参数 $params ['Signature'] = $this->computeSignature ( $params, $this->accessKeySecret ); // 发送请求(此处作了修改) //$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params ); $url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params ); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 ); $result = curl_exec ( $ch ); curl_close ( $ch ); $result = json_decode ( $result, true ); //var_dump($result);die; if (isset ( $result ['Code'] )) { $this->error = $this->getErrorMessage ( $result ['Code'] ); return false; } return true; } /** * 获取详细错误信息 * * @param unknown $status  */ public function getErrorMessage($status) { // 阿里云的短信 乱八七糟的(其实是用的阿里大于) // https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450 $message = array ( 'InvalidDayuStatus.Malformed' => '账户短信开通状态不正确', 'InvalidSignName.Malformed' => '短信签名不正确或签名状态不正确', 'InvalidTemplateCode.MalFormed' => '短信模板Code不正确或者模板状态不正确', 'InvalidRecNum.Malformed' => '目标手机号不正确,单次发送数量不能超过100', 'InvalidParamString.MalFormed' => '短信模板中变量不是json格式', 'InvalidParamStringTemplate.Malformed' => '短信模板中变量与模板内容不匹配', 'InvalidSendSms' => '触发业务流控', 'InvalidDayu.Malformed' => '变量不能是url,可以将变量固化在模板中' ); if (isset ( $message [$status] )) { return $message [$status]; } return $status; }}

调用方法:

//生成验证码$mobile = 'xxxxxxx';$code = rand ( 1000, 9999 );//发送短信$sms = new Sms();//测试模式$status = $sms->send_verify($mobile, $code);if (!$status) { echo $sms->error;}

云片短信php接口_php与阿里云短信接口接入相关推荐

  1. (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    一.阿里云准备工作 1.阿里云短信服务-注册账号 阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮. 2.阿里云短信服务-设置短信签名(阿里云提供测试的签名,暂时可以 ...

  2. Java后台做 短信验证码、短信通知,阿里云短信服务

    Java+阿里云短信实现系统登录发送验证码功能 阿里云短信服务器地址:https://dysms.console.aliyun.com/dysms.htm 1.申请签名,等待审核通过 2.按需选择你要 ...

  3. Laravel短信mysql_使用 Laravel 实现阿里云短信服务队列

    首先,基于 Laravel 5.2 实现一个任务队列,用于存储待发送短信的相关信息,及 seeder/worker 的处理逻辑 短信模板 ID 模板参数 短信签名 目标手机号码 创建存储任务的数据表 ...

  4. legend3---PHP使用阿里云短信服务

    legend3---PHP使用阿里云短信服务 一.总结 一句话总结: 使用步骤照官方文档,代码拷贝即可 1.php使用阿里云短信服务的步骤? 入驻阿里云->开通短信服务->获取Access ...

  5. ThinkPHP6项目基操(15.实战部分 阿里云短信redis)

    阿里云短信redis 一.安装阿里云短信SDK 二.封装到项目lib中 三.radis记录验证码 1. 安装redis服务 2. 可视化redis管理软件 3. PHP安装redis扩展 4. 配置缓 ...

  6. ThinkPHP5框架接入阿里云短信最新版(原大鱼)的方法

    下载官方SDK 第一步肯定是下载官方的SDK了,但是官方下载的SDK内容有一些多,我们不必全部都要,只将下载好的SDK文件中的api_sdk文件,改名aliyunsms,然后放入ThinkPHP5框架 ...

  7. prometheus 阿里云短信告警

    prometheus + alertmanager + PrometheusAlert 要达到的效果 , 短信告警 + 解除告警 (可以自定义内容) 一.阿里云短信签名及模板设置 有4个信息 Acce ...

  8. SpringBoot+阿里云短信服务实现发送短信验证码功能

    目录 一.登陆阿里云,开通短信服务(收费的,需要充值,1元能发20条左右),并获取AccessKeyId和AccessKeySecret 二.创建短信模板与签名 三.引入依赖 四.准备工作已完成,编码 ...

  9. 谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现

    文章目录 一.使用JWT进行跨域身份验证 1.传统用户身份验证 2.解决方案 二.JWT令牌 1.访问令牌的类型 2.JWT的组成 3.JWT的原则 4.JWT的用法 三.整合JWT令牌 1.在com ...

最新文章

  1. 微擎 jssdk php文件,微擎register_jssdk分享到朋友功能无法使用的问题及解决办法
  2. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路
  3. openpyxl安装_自拍教程76Python 一键批量安装第三方包
  4. linux 磁盘管理3板斧,Linux 磁盘管理的命令
  5. CodeForces - 1543D2 RPD and Rap Sheet (Hard Version)(交互+模拟)
  6. Fix My iPhone Mac版:修复iPhone白苹果、黑屏、卡住恢复错误等iOS 15 升级失败
  7. 35 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义在产品和废品的评估变式 (目标成本)
  8. iTerm – 让你的命令行也能丰富多彩
  9. Jar mismatch! Fix your dependencies的问题(转)
  10. 【JQuery NoviceToNinja系列】目录
  11. 网络攻防第七周作业之20189304李小涛
  12. c++ 数组指针和指针数组
  13. 星空连线html5,js canvas实现星空连线背景特效
  14. DOSBox的安装及使用
  15. IPC之消息队列(Message Queue)
  16. Frank and Hall
  17. 心知天气html,Typecho 博客添加“心知天气”网页天气插件教程
  18. The pgAdmin 4 server could not be contacted
  19. 2023成都电源工业展览会
  20. Python3---站在大佬肩膀写爬虫-爬取网易云音乐热歌榜歌曲热评(精彩评论)

热门文章

  1. h5 bootstrap 小程序模板_软件测试人员必知H5/小程序测试点
  2. Python判断变量类型
  3. (含Python源码)Python实现K阶多项式的5种回归算法(regression)
  4. JMM同步原语之final域的内存语义
  5. C++学习之路 | PTA乙级—— 1073 多选题常见计分法 (20 分)(精简)
  6. 协议簇:TCP 解析:TCP 数据传输
  7. 年月跨度_不畏困难,砥砺前行 ——国内最大跨度管桁架工程成功首滑
  8. python语言例子_【Python】SimPy的使用示例-Go语言中文社区
  9. 一部分 数据 迁移_从虚机到容器,知名架构师告诉你如何平滑进行业务迁移
  10. php 安装 bzip2,php如何安装bzip2