Nexmo短信开发
1.注册账号,<a 。
2.去零云后台配置,把上面拿到的key和secret分别填进去,其他不用填。
3.发送短信,nexmo提供了很多种API,我们的nexmo短信插件选择了部分功能并进行封装做成插件的形式,能够在lingyun的项目中直接调用。
-
文本短信发送:
//插件调用 public function notify_result($sms_data) { $nexmo_addon = D('Addons://Nexmo/Nexmo'); $result = $nexmo_addon->send_sms($sms_data); if ($result) { return true; } else { return false; } } /*上面方法中$sms_data的形式 *RecNum:接收短信的号码,需要加区号,如中国号码:8612345678910; *product:短信发送方希望显示在短信中的名称; *Content:短信的内容 */ $sms_data['RecNum'] = $mobile; $sms_data['product'] = 'Company Name'; $sms_data['Content'] = 'text'; D('Writer/Index')->notify_result($sms_data);
-
验证码发送
/** * 短信验证码 */ public function send_mobile_verify() { // Nexmo最小是60s if ((time() - session('reg_verify_ctime')) < 60) { $this->error('Resend 60s later'); } // 构造短信数据 $sms_data['RecNum'] = I('post.mobile'); $sms_data['prodect'] = I('post.title') ? I('post.title') : C('WEB_SITE_TITLE'); $nexmo_addon = D('Addons://Nexmo/Nexmo'); $result = $nexmo_addon->send_verify($sms_data); if ($result) { session('reg_verify_ctime', time()); $this->success('Send successfully!'); } else { $this->error('Send failly!'); } }
值得说明的一点,nexmo不同于之前常用的短信插件,nexmo的验证码是它的接口自己生成,而不是存放于自己的服务器,所以,用户输入并提交验证码之后,需要再次提交到nexmo的接口去验证用户输入的是否正确。
// 在处理用户表单提交的控制器添加对验证码的验证 $verify = I('post.verify'); $nexmo_addon = D('Addons://Nexmo/Nexmo'); $verify_result = $nexmo_addon->check_verify($verify); if(!$verify_result) { $this->error('There is something wrong with your verify,please check it out or send again!'); }