阿里大鱼短信接口调用精简版(验证码类型)

接口网站

申请步骤

登录->控制台->使用短信服务->左侧(接口调用)->1.(获取AK->开始使用子用户AccessKey)。2.(添加模板)。3.(添加签名。注意:签名会成为短信开头的文字)

注意:子用户AccessKey一定要授权

调用代码

第一个文件 w.php文件

<?php
class SignatureHelper {  /** * 生成签名并发起请求 * * @param $accessKeyId string AccessKeyId (https://ak-console.aliyun.com/) * @param $accessKeySecret string AccessKeySecret * @param $domain string API接口所在域名 * @param $params array API具体参数 * @param $security boolean 使用https * @return bool|\stdClass 返回API接口调用结果,当发生错误时返回false */  public function request($accessKeyId, $accessKeySecret, $domain, $params, $security=false) {  $apiParams = array_merge(array (  "SignatureMethod" => "HMAC-SHA1",  "SignatureNonce" => uniqid(mt_rand(0,0xffff), true),  "SignatureVersion" => "1.0",  "AccessKeyId" => $accessKeyId,  "Timestamp" => gmdate("Y-m-d\TH:i:s\Z"),  "Format" => "JSON",  ), $params);  ksort($apiParams);  $sortedQueryStringTmp = "";  foreach ($apiParams as $key => $value) {  $sortedQueryStringTmp .= "&" . $this->encode($key) . "=" . $this->encode($value);  }  $stringToSign = "GET&%2F&" . $this->encode(substr($sortedQueryStringTmp, 1));  $sign = base64_encode(hash_hmac("sha1", $stringToSign, $accessKeySecret . "&",true));  $signature = $this->encode($sign);  $url = ($security ? 'https' : 'http')."://{$domain}/?Signature={$signature}{$sortedQueryStringTmp}";  try {  $content = $this->fetchContent($url);  return json_decode($content);  } catch( \Exception $e) {  return false;  }  }  private function encode($str)  {  $res = urlencode($str);  $res = preg_replace("/\+/", "%20", $res);  $res = preg_replace("/\*/", "%2A", $res);  $res = preg_replace("/%7E/", "~", $res);  return $res;  }  private function fetchContent($url) {  $ch = curl_init();  curl_setopt($ch, CURLOPT_URL, $url);  curl_setopt($ch, CURLOPT_TIMEOUT, 5);  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  curl_setopt($ch, CURLOPT_HTTPHEADER, array(  "x-sdk-client" => "php/2.0.0"  ));  if(substr($url, 0,5) == 'https') {  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  }  $rtn = curl_exec($ch);  if($rtn === false) {  trigger_error("[CURL_" . curl_errno($ch) . "]: " . curl_error($ch), E_USER_ERROR);  }  curl_close($ch);  return $rtn;  }
}

第二个文件 x.php文件

<?php
require_once "w.php";
/** * 发送短信 */
function sendSms() {  $params = array ();  // *** 需用户填写部分 ***  // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息  $accessKeyId = "***************************";  $accessKeySecret = "*************************************";  // fixme 必填: 短信接收号码  $params["PhoneNumbers"] = "可以前端提供数据";  // fixme 必填: 短信签名,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign  $params["SignName"] = "自己申请";   // fixme 必填: 短信模板Code,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template  $params["TemplateCode"] = "模板号和你申请的模板必须一样";  // fixme 可选: 设置模板参数, 假如模板中存在变量需要替换则为必填项  $params['TemplateParam'] = Array (  "code" => "自己写一个随机验证码即可" );  // fixme 可选: 设置发送短信流水号  $params['OutId'] = "12345";  // fixme 可选: 上行短信扩展码, 扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段  $params['SmsUpExtendCode'] = "1234567";  // *** 需用户填写部分结束, 以下代码若无必要无需更改 ***  if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {  $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);  }  // 初始化SignatureHelper实例用于设置参数,签名以及发送请求  $helper = new SignatureHelper();  // 此处可能会抛出异常,注意catch  $content = $helper->request(  $accessKeyId,  $accessKeySecret,  "dysmsapi.aliyuncs.com",  array_merge($params, array(  "RegionId" => "cn-hangzhou",  "Action" => "SendSms",  "Version" => "2017-05-25",  ))  );  // $content = self::object_array($content);return $content;
}// 对象转为数组// static function object_array($array)// {//     if (is_object($array)) {//         $array = (array)$array;//     }//     if (is_array($array)) {//         foreach ($array as $key => $value) {//             $array[$key] = self::object_array($value);//         }//     }//     return $array;// }
ini_set("display_errors", "on");    // 显示错误提示,仅用于测试时排查问题
set_time_limit(0);                  // 防止脚本超时,仅用于测试使用,生产环境请按实际情况设置
header("Content-Type: text/plain; charset=utf-8"); // 输出为utf-8的文本格式,仅用于测试  // 验证发送短信(SendSms)接口
print_r(sendSms());

测试结果

阿里大鱼的短信接口申请和调用相关推荐

  1. 阿里大鱼 php 短信接口,dedecms使用阿里大鱼短信接口进行短信发送

    阿里大鱼虽免费,但不足的是内容.签名什么都要进行审核,且短信内容必须以模版方式进行调用,不能根据自己的需求随意发送, 接下介绍下阿里大鱼免费短信具体实现方法,该方法php程序可通用. 首先要去阿里大鱼 ...

  2. Java 集成阿里大鱼平台短信服务发送验证码到手机

    点击前往:阿里大鱼 --- 短信接口调用错误码(错误原因及处理方式) 上一篇:阿里大鱼短信服务 --- 发送验证码.短信通知 下一篇:Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分 ...

  3. PHP对接阿里大鱼实现短信的发送

    背景知识: 手机验证码这个功能几乎哪里都可以看到,那么PHP如何实现手机验证码的发送呢?下面介绍PHP对接阿里大鱼实现短信验证码发送. 1.首先登陆阿里云,点击控制台: 2.选择短信服务: 3.由于阿 ...

  4. 使用阿里大鱼发送短信

    最近看到同事在使用阿里大鱼实现短信发送功能,稍微学了下,果然挺方便的,下面把使用方法共享一下. 1.注册账号: 去 http://www.alidayu.com/?spm=a3142.7791109. ...

  5. 利用阿里大鱼发送短信验证

    用了很久的CSDN,也从中学到了很多的知识和解决很多问题,今天决定自己也要学会贡献,所以从今天开始我的CSDN博客知识加油站.吐舌头 闲话不多说,言归正传.今天我要分享的是利用阿里大鱼实现网站和APP ...

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

    阿里云短信服务 一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用 ...

  7. 短信接口被恶意调用,瞬间损失两万,怎么解决?

    1 我们公司的短信接口被恶意调用,瞬间损失两万 前两天的中午像往常一样热,太阳不知疲倦的在天空燃烧,热跑了云彩和鸟儿,马上就要点燃空气和我的脑神经.为我和电脑降温的,是我简陋的书桌上的小电扇,没有它的 ...

  8. 短信接口被恶意调用?企业短信防火墙+【中昱维信】短信验证码【Java】

    短信接口被恶意调用?企业短信防火墙+[中昱维信]短信验证码[Java] 一.企业短信防火墙的实现 1.1 简介 1.2 第一步:获取防火墙帐号密钥 1.3 第二步:下载防火墙服务器 1.4 第三步:业 ...

  9. 避免短信接口被黑客调用的方式

    短信服务接口安全是在开发或对接短信接口时尤为关注的问题.部分黑客可能出于恶意竞争或短信轰炸他人的目的,攻击短信服务接口,盗刷验证短信,造成资金损失.那么应该如何避免短信接口被恶意调用?本文为大家介绍一 ...

最新文章

  1. 硕士Nature一作谈回乡当公务员:考公竞争激烈,科研经历是宝贵财富
  2. echo服务器(回显服务器)
  3. 1.java局部变量 实例变量 类变量(静态变量)
  4. 点击跳转到QQ聊天界面
  5. Math(牛客多校第三场)
  6. 雷军:明年2千元以上支持5G的手机,至少发布10款
  7. 欺诈场景中的随机森林实践(基于SAS场景的实现)
  8. Percona 成为 MariaDB 基金会铜牌赞助商
  9. 从一个MFC工程移植对话框类到另一个MFC工程
  10. 【服务器】【个人图床】宝塔安装Chevereto
  11. datagrid 什么时候结束编辑_小规模纳税人免税政策什么时候结束?有答复了
  12. 隐马尔可夫模型HMM与维特比Veterbi算法(一)
  13. Java中String、StringBuffer和StringBuilder的区别和堆栈内存分配
  14. vue-router实现根据用户权限显示不同菜单-动态路由
  15. 高中计算机课程事例,【高中信息技术教学案例】_《高中信息技术新课程教学案例集》介绍...
  16. python网课答案查询_网课答案查询助手v1.0
  17. 28岁少帅统领旷视南京研究院,LAMDA魏秀参专访
  18. 网页加载慢,你知道几种原因?
  19. rrpp协议如何修改_RRPP 演示实例
  20. 斗地主不算花色算大小王,起初发到的17张牌有多少种?

热门文章

  1. HTML中的table表格重叠的边框去除以及合并方法
  2. 为什么优秀的程序员既懒又笨
  3. 老人剧烈腰痛警惕骨质疏松
  4. CONDITIONS EVALUATION REPORT
  5. 3.expected_conditions常用方法详解
  6. shell编程中declare命令的使用
  7. Bootstrap笔记(五) 排版 - 标题
  8. 【洞见研报】研报速读:专精特新政策研究报告——专、精、特、新、链、品六大新维度
  9. 解谜游戏 MU Complex 的过关图文攻略 (Episode2)(上)
  10. 计算机网络中端到端与点到点的区别