您的位置:首页 > 其它

网易云信-网易验证码短信,网易通知类短信的使用

2017-06-06 13:10 363 查看
短信验证码是网站必不可少的,基本每个公司都会用到,之前用的短信验证码是互易无线的,现在新公司又使用了网易云信的短信验证,

这些平台的使用基本都类似,都是基于curl请求

这次我就记录下我对网易云信验证码的使用过程

一:注册网易云信,获取appkey和appsert



设置配置文件,我们知道一般配置项都要写在配置文件中,方便管理

<?php
return array (
'netEasyMessage' => array(
'AppKey' => 'bc07*********f4c805460',
'AppSecret' => '658ab****0d9b',

d897
),

);

二:把网易云信的php的包引入

我使用的是thinkphp3.2,直接放在THinkphp/Library/Org/Util/下载,注意修改文件名和类名,加上命名空间

我直接修改好的,http://download.csdn.net/detail/fei003/9862048可以直接使用,因为我使用的是thinkphp,所以可以直接实例化

这是官方api,http://download.csdn.net/detail/fei003/9862090其它框架可以直接引入

三:使用过程我只记录两种场景

第一种:固定类验证码

为什么说是固定类呢?因为接口提供直接发送验证码,不需要你提供任何参数.不需要生成验证码,这种只要调用就能自动发送一个四位的短信验证码,非常方便,当然也有弊


弊端:验证码位数默认为4位数字,在设置的时间间隔内,同一手机号返回的验证码是相同的

使用方法

public function sendVerify(){
$phone = I('post.phone');
$feiMessage = new \Org\Util\Message(C('SHORT_MESSAGE.AppKey'),C('SHORT_MESSAGE.AppSecret'));
$re = $feiMessage->sendSmsCode($phone);
}
api中提供的接口发送验证码方法是sendSmsCode();有三个参数,下面是该方法

/**
* 发送短信验证码
* @param  $mobile       [目标手机号]
* @param  $deviceId     [目标设备号,可选参数]
* @return $result      [返回array数组对象]
*/
public function sendSmsCode($mobile,$deviceId=''){
$url = 'https://api.netease.im/sms/sendcode.action';
$data= array(
'mobile' => $mobile,
'deviceId' => $deviceId
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}


验证也是非常容易的,也是直接调用该方法

// 短信验证码验证
$feiMessage = new \Org\Util\Message(C('SHORT_MESSAGE.AppKey'),C('SHORT_MESSAGE.AppSecret'));
$re = $feiMessage->verifycode($data['phone'],$data['verify']);
根据返回值再写逻辑代码
第二种:使用短信模板来扩展自己的验证码

     短信模板就是带有变量的短信,变量部分自定义代替

    先新建个通知类模板,如下图


登审核通过后会得到模板id,模板内容自定义,注意变量可以有多个

假如使用模板来发送验证码,这个过程还是很容易的,直接使用sendSMSTemplate()来发送,这个函数三个参数分别为

/**
* 发送模板短信
* @param  $templateid       [模板编号(由客服配置之后告知开发者)]
* @param  $mobiles          [验证码]
* @param  $params          [短信参数列表,用于依次填充模板,JSONArray格式,如["xxx","yyy"];对于不包含变量的模板,不填此参数表示模板即短信全文内容]
* @return $result      [返回array数组对象]
*/
public function sendSMSTemplate($templateid,$mobiles=array(),$params=array()){
$url = 'https://api.netease.im/sms/sendtemplate.action';
$data= array(
'templateid' => $templateid,
'mobiles' => json_encode($mobiles),
'params' => json_encode($params)
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}


使用方法

// 短信模板发送
$feiMessage = new \Org\Util\Message(C('SHORT_MESSAGE.AppKey'),C('SHORT_MESSAGE.AppSecret'));
$re = $feiMessage->sendSMSTemplate('模板id',array($phone),$params);
注意:这里的$params 使用的是jsonArray格式!!!

网易云信提供的api果然很强大,针对im做个大量的封装,使用起来方便多了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: