步骤:
1、登录荣联运通讯注册获取ACCOUNT SID、AUTH TOKEN、Rest URL(生产)、AppID(默认);
2、注册测试用手机号码(先注册测试号码方可使用);
3、下载demo示例,并将代码放到项目中(最好单独建文件夹存储)。
代码区:
display('test.html');
}
public function get\_info()
{
include\_once(ROOT\_PATH.'/includes/rly\_message/rest.app.php');//引入模板文件
//主帐号,对应开官网发者主账号下的 ACCOUNT SID
$accountSid = '';
//主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN
$accountToken = '';
//应用Id,在官网应用列表中点击应用,对应应用详情中的APP ID
//在开发调试的时候,可以使用官网自动为您分配的测试Demo的APP ID
$appId ='';
//请求地址
//沙盒环境(用于应用开发调试):sandboxapp.cloopen.com
//生产环境(用户应用上线使用):app.cloopen.com
$serverIP ='app.cloopen.com';
//请求端口,生产环境和沙盒环境一致
$serverPort ='8883';
//REST版本号,在官网文档REST介绍中获得。
$softVersion ='2013-12-26';
//global $accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion;
$phone\_mob = isset($\_GET\['phone\_mob'\]) ? $\_GET\['phone\_mob'\] : '';
if($phone\_mob){
$this->sendTemplateSMS($phone\_mob,array('3519','5'),"1",$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion);//手机号码,替换内容数组,模板ID
}
}
/\*\*
\* 发送模板短信
\* @param to 手机号码集合,用英文逗号分开
\* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null
\* @param $tempId 模板Id,测试应用和未上线应用使用测试模板请填写1,正式应用上线后填写已申请审核通过的模板ID
\*/
public function sendTemplateSMS($to,$datas,$tempId,$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion)
{
// 初始化REST SDK
$rest = new RestApp($serverIP,$serverPort,$softVersion);
$rest->setAccount($accountSid,$accountToken);
$rest->setAppId($appId);
// 发送模板短信
echo "Sending TemplateSMS to $to
";
$result = $rest->sendTemplateSMS($to,$datas,$tempId);
if($result == NULL ) {
echo "result error!";
exit();
}
if($result->statusCode!=0) {
echo "error code :" . $result->statusCode . "
";
echo "error msg :" . $result->statusMsg . "
";
//TODO 添加错误处理逻辑
}else{
echo "Sendind TemplateSMS success!
";
// 获取返回信息
$smsmessage = $result->TemplateSMS;
echo "dateCreated:".$smsmessage->dateCreated."
";
echo "smsMessageSid:".$smsmessage->smsMessageSid."
";
//TODO 添加成功处理逻辑
}
}
}
**二、模板文件(rest.app.php可根据自己使用的框架重新命名,也可直接使用demo原先的名字)**
RestApp($ServerIP,$ServerPort,$SoftVersion);
}
function RestApp($ServerIP,$ServerPort,$SoftVersion)
{
$this->Batch = date("YmdHis");
$this->ServerIP = $ServerIP;
$this->ServerPort = $ServerPort;
$this->SoftVersion = $SoftVersion;
$this->Handle = fopen($this->Filename, 'a');
}
/\*\*
\* 设置主帐号
\*
\* @param AccountSid 主帐号
\* @param AccountToken 主帐号Token
\*/
function setAccount($AccountSid,$AccountToken){
$this->AccountSid = $AccountSid;
$this->AccountToken = $AccountToken;
}
/\*\*
\* 设置应用ID
\* @param AppId 应用ID
\*/
function setAppId($AppId){
$this->AppId = $AppId;
}
/\*\*
\* 打印日志
\*
\* @param log 日志内容
\*/
function showlog($log){
if($this->enabeLog){
fwrite($this->Handle,$log."\\n");
}
}
/\*\*
\* 发起HTTPS请求
\*/
function curl\_post($url,$data,$header,$post=1)
{
//初始化curl
$ch = curl\_init();
//参数设置
$res= curl\_setopt($ch, CURLOPT\_URL,$url);
curl\_setopt($ch, CURLOPT\_SSL\_VERIFYHOST, FALSE);
curl\_setopt($ch, CURLOPT\_SSL\_VERIFYPEER, FALSE);
curl\_setopt($ch, CURLOPT\_HEADER, 0);
curl\_setopt($ch, CURLOPT\_POST, $post);
if($post)
{
curl\_setopt($ch, CURLOPT\_POSTFIELDS, $data);
}
curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, 1);
curl\_setopt($ch, CURLOPT\_HTTPHEADER,$header);
$result = curl\_exec($ch);
//连接失败
if($result == FALSE){
if($this->BodyType=='json'){
$result = "{\\"statusCode\\":\\"172001\\",\\"statusMsg\\":\\"网络错误\\"}";
} else {
$result = "
172001网络错误";
}
}
curl\_close($ch);
return $result;
}
/\*\*
\* 发送模板短信
\* @param to 短信接收彿手机号码集合,用英文逗号分开
\* @param datas 内容数据
\* @param $tempId 模板Id
\*/
function sendTemplateSMS($to,$datas,$tempId)
{
//主帐号鉴权信息验证,对必选参数进行判空。
//$auth=$this->accAuth();
// if($auth!=""){
// return $auth;
// }
// 拼接请求包体
if($this->BodyType=="json"){
$data="";
for($i=0;$i
AppId','datas':\[".$data."\]}";
}else{
$data="";
for($i=0;$i".$datas\[$i\]."";
}
$body="
$to
$this->AppId
$tempId
".$data."
";
}
$this->showlog("request body = ".$body);
// 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/TemplateSMS?sig=$sig";
$this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64\_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求
$result = $this->curl\_post($url,$body,$header);
$this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式
$datas=json\_decode($result);
}else{ //xml格式
$datas = simplexml\_load\_string(trim($result," \\t\\n\\r"));
}
// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }
//重新装填数据
if($datas->statusCode==0){
if($this->BodyType=="json"){
$datas->TemplateSMS =$datas->templateSMS;
unset($datas->templateSMS);
}
}
return $datas;
}
/\*\*
\* 主帐号鉴权
\*/
function accAuth()
{
if($this->ServerIP==""){
$data = new stdClass();
$data->statusCode = '172004';
$data->statusMsg = 'IP为空';
return $data;
}
if($this->ServerPort<=0){
$data = new stdClass();
$data->statusCode = '172005';
$data->statusMsg = '端口错误(小于等于0)';
return $data;
}
if($this->SoftVersion==""){
$data = new stdClass();
$data->statusCode = '172013';
$data->statusMsg = '版本号为空';
return $data;
}
if($this->AccountSid==""){
$data = new stdClass();
$data->statusCode = '172006';
$data->statusMsg = '主帐号为空';
return $data;
}
if($this->AccountToken==""){
$data = new stdClass();
$data->statusCode = '172007';
$data->statusMsg = '主帐号令牌为空';
return $data;
}
if($this->AppId==""){
$data = new stdClass();
$data->statusCode = '172012';
$data->statusMsg = '应用ID为空';
return $data;
}
}
}
?>
三、前台模板代码(test.html)
四、js代码