php与阿里云短信接口接入
使用阿里云短信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 IDprivate $accessKeyId = '';// Access Access Key Secretprivate $accessKeySecret = '';// 签名private $signName = '';// 模版IDprivate $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;}
转载于:https://www.cnblogs.com/yx520zhao/p/11510118.html
php与阿里云短信接口接入相关推荐
- 云片短信php接口_php与阿里云短信接口接入
使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId 相当于你的个人账户密钥: 2. accessKeySecr ...
- 阿里云短信服务接入流程
背景 在最近的项目需求中, 需要将复用阿里短信能力, 实现用户手机号验证: 如果用户号码验证通过后, 可以让用户上传文件资料并进行打印. 故核心内容就是: 阿里云短信服务接入, 下面我们主要来介绍下阿 ...
- python 阿里云短信服务接入流程
阿里云短信服务接入流程 最近公司项目中的业务需求包括使用阿里云发送短信,所以写一篇博客和大家分享一下python使用sdk对接阿里云短息api的流程. 阿里云官方文档 链接 左侧导航栏中有很多部分,着 ...
- C# 阿里云短信接口调用(不使用SDK,单文件完成)
虽然阿里云短信接口,提供了很多种语言的SKD,但是对应C#而言,如果使用阿里云SDK,你的项目中需要引入一大堆的dll,像这样: 我只需要发个短信,没必要引入这么多dll吧.于是,根据阿里云官方文档, ...
- springboot项目调用阿里云短信接口(包括短信上行)
最近一直在做项目,很久没有写过博客了,最近做的一个项目中遇到了一个业务需要用到短信功能包括了发送短信和短信回复之后要收到回复内容,阿里云短信服务是一个非常好的平台,里面提供了多种短信接口可以供我们使用 ...
- TP5调用阿里云短信接口实现发送短信功能
TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...
- 微信小程序手机号验证码登录(调阿里云短信接口)
小程序效果 代码 <view class='content'><form bindsubmit="formSubmit"><view class='p ...
- Java调用阿里云短信接口,发送短信
Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...
- 阿里云短信接口开发实践(Java)
随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...
- python 阿里云短信接口_阿里云短信PythonSDK的用法
阿里云知识 阿里云短信PythonSDK的用法 阿里云短信PythonSDK的用法示例代码 # coding=utf-8 from jdcloud_sdk.core.credential import ...
最新文章
- OpenCV 图像采样 插值 几何变换
- cisco路由器基本实验之三 动态路由之RIP协议的配置(Boson NetSim)
- 当会打王者荣耀的AI学会踢足球,一不小心拿下世界冠军!
- 最全VR产业链全景图(必收藏)
- 第4章 最基础的分类算法-k近邻算法
- 【AutoML】当前有哪些可用的AutoML平台?
- lr录制脚本,用IETester代替IE浏览器
- 基于Win32Api创建窗口程序
- EntityFramework Core 2.0执行原始查询如何防止SQL注入?
- css裁剪clip-path画多边形
- python—列表、字典生成式
- lisp一键室内标注_LISP-标注的自动位置调整
- java判断1到1000素数_JAVA作业.找出1~1000以内的质数
- C++内存管理之shared_ptr
- 创建第一个Android app项目
- 阿里巴巴面试题含答案
- ecshop模板支持php,ecshop模板不支持引入PHP语句的解决方法
- 【poj-1066】判断线段相交
- 磁力连接是如何接入DHT网络并下载文件的
- 中国最美的100句诗