1. 前言
短信验证通常来说,是网站用户注册、密码找回等验证用户手机的功能,而作为开发者,我们通常使用到的是第三方通信接口平台,比如:阿里大鱼、云之讯等等,而我们则以云之讯案例,讲解一下如何调用接口给用户发手机验证码并验证
2. 获得账号的sid和Token
首先我们需要登录云之讯的开发者控制台http://www.ucpaas.com/login,获得自己账号的sid和Token,具体操作如下
3. 获得短信产品的templateId和appId
具体位置如下
4. 根据官方demo我们来走一遍
1)首先进入index.html输入手机并获得验证码
2)该post将数据传到smsyzm.php,代码如下
<?php
//载入ucpass类
require_once('lib/Ucpaas.class.php');
require_once('serverSid.php');
$appid = "6631002a838c478ca8897a826e2a6569"; //应用的ID,可在开发者控制台内的短信产品下查看
$templateid = "433397"; //可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID
$param = $_POST['yzm']; //多个参数使用英文逗号隔开(如:param=“a,b,c”),如为参数则留空
$mobile = $_POST['yzmtel'];
$uid = "";
//70字内(含70字)计一条,超过70字,按67字/条计费,超过长度短信平台将会自动分割为多条发送。分割后的多条短信将按照具体占用条数计费。
echo $ucpass->SendSms($appid,$templateid,$param,$mobile,$uid);
3)而引入的'serverSid.php如下
<?php
require_once('lib/Ucpaas.class.php');
//初始化必填
//填写在开发者控制台首页上的Account Sid
$options['accountsid']='af50ea4dadf7fdf94ad1b1318fece815';
//填写在开发者控制台首页上的Auth Token
$options['token']='3179d340386f784f213fd06074209d9c';
//初始化 $options必填
$ucpass = new Ucpaas($options);
4)所以整体代码块可以看成
<?php
//载入ucpass类
require_once('lib/Ucpaas.class.php');
//初始化必填
//填写在开发者控制台首页上的Account Sid
$options['accountsid']='af50ea4dadf7fdf94ad1b1318fece815';
//填写在开发者控制台首页上的Auth Token
$options['token']='3179d340386f784f213fd06074209d9c';
//初始化 $options必填
$ucpass = new Ucpaas($options);
$appid = "6631002a838c478ca8897a826e2a6569"; //应用的ID,可在开发者控制台内的短信产品下查看
$templateid = "433397"; //可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID
$param = $_POST['yzm']; //多个参数使用英文逗号隔开(如:param=“a,b,c”),如为参数则留空
$mobile = $_POST['yzmtel'];
$uid = "";
//70字内(含70字)计一条,超过70字,按67字/条计费,超过长度短信平台将会自动分割为多条发送。分割后的多条短信将按照具体占用条数计费。
echo $ucpass->SendSms($appid,$templateid,$param,$mobile,$uid);
5) 官方API接口
所以我们需要准备的信息就是一一填入到上面,而真正调用的API接口就是官方自己集成的Ucpaas.class.php类
其中我们用到了该类
/**
单条发送短信的function,适用于注册/找回密码/认证/操作提醒等单个用户单条短信的发送场景
* @param $appid 应用ID
* @param $mobile 接收短信的手机号码
* @param $templateid 短信模板,可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID
* @param null $param 变量参数,多个参数使用英文逗号隔开(如:param=“a,b,c”)
* @param $uid 用于贵司标识短信的参数,按需选填。
* @return mixed|string
* @throws Exception
*/
public function SendSms($appid,$templateid,$param=null,$mobile,$uid){
$url = self::BaseUrl . 'sendsms';
$body_json = array(
'sid'=>$this->accountSid,
'token'=>$this->token,
'appid'=>$appid,
'templateid'=>$templateid,
'param'=>$param,
'mobile'=>$mobile,
'uid'=>$uid,
);
$body = json_encode($body_json);
$data = $this->getResult($url, $body,'post');
return $data;
}
6)实战测试
尝试发送:
发送成功: