TP3.2 配置最新的阿里大于sdk
最近公司买了阿里云的阿里大于短信验证 ,这里记录下本人接入短信验证的过程和心得。
大家是不是一开始都是和本人一样直接去百度下怎么有没有现成的demo 或者是封装好了的类库
就像是 :http://www.thinkphp.cn/topic/46029.html
但是兴高采烈的接入好了 , 最后会发现 ISV 什么开发这权限不足 , 其实后台都是好了的 , 根本就不是权限不足, 而是搬家了
以前的接口是有taobao 的,就像https://api.alidayu.com/apitools/apiTools.htm?spm=a3142.7395905.4.29.z1Hkms&catId=20711&apiId=25450&apiName=alibaba.aliqin.fc.sms.num.send&scopeId=#
没错这个是过期了的 但是官方并没有说明这种情况,这就很坑了。
这里作者建议 大家直接去官方下载最新的sdk:
https://help.aliyun.com/document_detail/55451.html?spm=5176.doc55288.6.556.sIOJUV
下载好了直接配置demo
这里配置
这里务必看清楚,那些参数签名什么的,不然就是各种报错, 你懂的,很难受
如果你的demo 成功的话 那么封装就变得简单了
/*
* 阿里大鱼手机验证码发送函数
*
*
*/ function sendphone($m)
{
Vendor('Alidayu.api_demo.SmsDemo');
header('Content-Type: text/plain; charset=utf-8');
$demo = new \SmsDemo(
C('Alidayu.Appkey'),
C('Alidayu.SecretKey')
); // echo "SmsDemo::sendSms\n";
$randStr = str_shuffle('1234567890');
$code = substr($randStr,0,4);
$_SESSION['sendphonecode']=$code;
$_SESSION['expire']=1800;
$response = $demo->sendSms(
C('Alidayu.SignName'), // 短信签名
C('Alidayu.SmsTemplate'), // 短信模板编号
$m, // 短信接收者
Array( // 短信模板中字段的值
"code"=> $code,
"product"=>"dsd"
),
"666"
);
// echo "SmsDemo::queryDetails\n";
$response = $demo->queryDetails(
"1234567890", // phoneNumbers 电话号码
date('Ymd',time()), // sendDate 发送时间
10, // pageSize 分页大小
1, // currentPage 当前页码
"abcd" // bizId 短信发送流水号,选填
); return $code;
}
下面的参数
$demo->queryDetails
具体怎么使用 , 我也是不清楚的,如果有知道的可以告诉下,谢谢。
到在下一步就是获取和验证了
/*
* 发送验证码
* @param mobile purpose 手机号 状态
* @return 0 1
*
*/
public function setphone()
{
$mobile = '15779675455';
// $mobile = I('post.mobile');
// $purpose = I('post.purpose');
$purpose = '1';
if(isset($mobile) && empty($mobile)){
error_r('手机号码不能为空!');
}
if(isset($purpose) && empty($purpose)){
error_r('验证类型不能为空!');
}
$a = sendphone( $mobile );
$yn = (empty($a))? '0' : '1' ;
$data = array(
'phone'=>$mobile,
'purpose'=>$purpose,
'status'=>$yn,
'add_time'=>time(),
'time_date'=>date('Y-m-d',time())
);
M('phonecode')->add($data);
if(empty($a)){
error_r('发送失败');
}else{
success_s('发送成功');
}
} /*
* 验证验证码是否正确
* @param mobile 手机号
* @return 0 1
*
*/
public function thancode()
{
$phone = I('post.phone');
$a = $_SESSION['sendphonecode'];
if($phone == $a)
{
success_s('验证码正确');
}else{
error_r('验证码错误');
}
}
到了这里这功能就基本封装了好