阿里大于

最新的阿里云短信接口,适用于阿里大于搬家以后的情况。
之前一直用阿里大于的短信接口,最近上项目时发现阿里大于悄悄地搬家到了阿里云!阿里云的SDK文件繁多,看得一头雾水!下面代码是最新的可适用于阿里云短信服务的类,亲测成功!
之前有大神放出过代码,链接:http://www.thinkphp.cn/code/2543.html,但是经过测试会返回“ 短信接口返回错误码:InvalidDayuStatus.Malformed ,账户短信开通状态不正确”!(经过测试,该大神代码适用于阿里大于接口,不适用于最新的阿里云控制台内的短信服务
经过详细查阅SDK介绍,链接地址:https://help.aliyun.com/document_detail/55359.html?spm=5176.doc54229.6.564.5cPOVA中的一段
——————————————————————————
“您好,暂时没有其他语言的SDK,我们正在努力更新中,敬请期待!sdk只是帮助拼接了http请求和解析返回报文,如若sdk版本问题无法编译通过,可以 自行拼接下http请求来使用。接口本身只是一个http请求调用,没有语言的限制。拼接http请求请参照上面的链接,也可以参照sdk中的 源码:https://help.aliyun.com/document_detail/56189.html?spm=5176.product44282.6.562.3wM8lS”

对上面大神代码进行改装(主要修改传入参数及网关)如下,成功!

<?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-d\TH:i:s\Z' ),

'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;

}

最新阿里云短信服务接口类【亲测成功】相关推荐

  1. C/C++开发,阿里云短信服务接口的c++实现

    目录 一.阿里云短信服务接口 二.逻辑代码实现 三.编译测试效果 一.阿里云短信服务接口 最近在调用阿里云短信服务接口发现并没有c++的资料,网上查询发现也是零星描述,由于自身项目基础累积了C++的太 ...

  2. 阿里云短信服务接口返回: 只能向已回复授权信息的手机号发送

    项目场景: 在进入阿里云短信服务时,调用 OpenAPI-发送短信接口 , 返回异常情况及其解决. 问题描述 在进入阿里云短信服务时, 调用测试签名和测试短信模板后, 返回只能向已回复授权信息的手机号 ...

  3. 关于调用阿里云短信服务接口实现短信验证码的过程

    为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...

  4. 怎么样可以调用阿里云短信服务接口实现短信验证码

    为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...

  5. 调用阿里云短信服务接口实现短信验证码

    为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...

  6. PHP开发阿里云短信服务接口

    PHP交流群:294088839 Python交流群:652376983 function sendSms($phone,$code){ // 基于TP3.2开发 //引进阿里的配置文件 Vendor ...

  7. 阿里云短信服务-个人账户测试短信服务

    前言 阿里的短信服务分为三块,一是阿里云短信服务,二是云通讯,三是阿里大于,不过后期都会统一到阿里云短信服务平台的,所以这里只需要学习如何使用阿里云短信服务就可以了. 如果是个人开发者,项目呢还没上线 ...

  8. SpringBoot集成阿里云短信服务

    SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...

  9. Java常用工具类-发短信(集成阿里云短信服务)

    1.注册阿里账号并开通短信服务 注册阿里账号后,并进行个人或企业实名认证,实名认证后,才能开通短信服务. 界面如下: 2.获取AccessKey 参考获取AccessKey方法 创建成功后,如下图: ...

最新文章

  1. 杭电2855 Fibonacci Check-up
  2. SAP Marketing Engagement Management
  3. 【转】Android加密算法:AES、Base64加密算法
  4. html中电子邮件怎么写,谈html mailto(电子邮件)实际应用
  5. Windows Server 2016 AD中新建组织单位、组、用户
  6. Matlab Tricks(二十一)—— 软阈值函数的实现
  7. 不是我不想动脑筋,给我一个支点看看——看《编程之美》,玩数独,大有乐趣...
  8. 软件评测师考试备考资料分享
  9. netperf测试内网网络性能
  10. java update 卸载不了_javaupdate可以卸载吗
  11. 对象存储介绍(腾讯云cos)
  12. 传智杯2021年第三届传智杯全国大学生IT技能大赛(决赛B组)python小白解题思路
  13. 【记】2021年第十二届极客大挑战
  14. 软件测试员一定需要懂编程代码吗?
  15. android studio 模拟器文件管理器
  16. Visio绘制维恩图举例
  17. 数码数字字体_2020年最佳创意数字艺术软件
  18. 听歌什么蓝牙耳机好用?听歌比较好的蓝牙耳机推荐
  19. python图案绘制解锁_PythonAppium实现安卓手机图形解锁
  20. 成都链安预警:EOS竞猜类游戏SKReos再次遭受攻击

热门文章

  1. OpenMV的资料下载
  2. 适合小白的 Asyncio 教程!
  3. nux下导入、导出mysql数据库命令
  4. 四种方法解决:Windows10下使用SVN文件夹不显示小绿勾
  5. doodoo.js配置教程 1
  6. 问题:阿里云RDS数据库Binlog日志一直增大,撑爆磁盘
  7. 插入数据报错: Incorrect string value: ‘\xE8\xB5\xB5\xE9\x9B\xB7‘ for column ‘Sname‘ at row 1
  8. 在Unity中实现基于粒子的水模拟(二:开始着色)
  9. B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...
  10. Unity 编辑器扩展菜单