1.使用的“云之讯”云通讯的接口,注册,登录。

地址:http://www.ucpaas.com/

2.

3.

4.

5.按规范与实际需求,填写相应的信息,注意要审核通过!

--------------------------------------------------------------------------------------------------------------------------------------------------------

6.核心代码:整合到Vender.如:

7.代码:

<?php
class Ucpaas
{ /**
* 云之讯REST API版本号。当前版本号为:2014-06-30
*/
const SoftVersion = "2014-06-30";
/**
* API请求地址
*/
const BaseUrl = "https://api.ucpaas.com/";
/**
* @var string
* 开发者账号ID。由32个英文字母和阿拉伯数字组成的开发者账号唯一标识符。
*/
private $accountSid;
/**
* @var string
* 开发者账号TOKEN
*/
private $token;
/**
* @var string
* 时间戳
*/
private $timestamp; /**
* @param $options 数组参数必填
* $options = array(
*
* )
* @throws Exception
*/
public function __construct($options)
{
if (is_array($options) && !empty($options)) {
$this->accountSid = isset($options['accountsid']) ? $options['accountsid'] : '';
$this->token = isset($options['token']) ? $options['token'] : '';
$this->timestamp = date("YmdHis") + 7200;
} else {
throw new Exception("非法参数");
}
} /**
* @return string
* 包头验证信息,使用Base64编码(账户Id:时间戳)
*/
private function getAuthorization()
{
$data = $this->accountSid . ":" . $this->timestamp;
return trim(base64_encode($data));
} /**
* @return string
* 验证参数,URL后必须带有sig参数,sig= MD5(账户Id + 账户授权令牌 + 时间戳,共32位)(注:转成大写)
*/
private function getSigParameter()
{
$sig = $this->accountSid . $this->token . $this->timestamp;
return strtoupper(md5($sig));
} /**
* @param $url
* @param string $type
* @return mixed|string
*/
private function getResult($url, $body = null, $type = 'json',$method)
{
$data = $this->connection($url,$body,$type,$method);
if (isset($data) && !empty($data)) {
$result = $data;
} else {
$result = '没有返回数据';
}
return $result;
} /**
* @param $url
* @param $type
* @param $body post数据
* @param $method post或get
* @return mixed|string
*/
private function connection($url, $body, $type,$method)
{
if ($type == 'json') {
$mine = 'application/json';
} else {
$mine = 'application/xml';
}
if (function_exists("curl_init")) {
$header = array(
'Accept:' . $mine,
'Content-Type:' . $mine . ';charset=utf-8',
'Authorization:' . $this->getAuthorization(),
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if($method == 'post'){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$body);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
curl_close($ch);
} else {
$opts = array();
$opts['http'] = array();
$headers = array(
"method" => strtoupper($method),
);
$headers[]= 'Accept:'.$mine;
$headers['header'] = array();
$headers['header'][] = "Authorization: ".$this->getAuthorization();
$headers['header'][]= 'Content-Type:'.$mine.';charset=utf-8'; if(!empty($body)) {
$headers['header'][]= 'Content-Length:'.strlen($body);
$headers['content']= $body;
} $opts['http'] = $headers;
$result = file_get_contents($url, false, stream_context_create($opts));
}
return $result;
} /**
* @param string $type 默认json,也可指定xml,否则抛出异常
* @return mixed|string 返回指定$type格式的数据
* @throws Exception
*/
public function getDevinfo($type = 'json')
{
if ($type == 'json') {
$type = 'json';
} elseif ($type == 'xml') {
$type = 'xml';
} else {
throw new Exception("只能json或xml,默认为json");
}
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '?sig=' . $this->getSigParameter();
$data = $this->getResult($url,null,$type,'get');
return $data;
} /**
* @param $appId 应用ID
* @param $clientType 计费方式。0 开发者计费;1 云平台计费。默认为0.
* @param $charge 充值的金额
* @param $friendlyName 昵称
* @param $mobile 手机号码
* @return json/xml
*/
public function applyClient($appId, $clientType, $charge, $friendlyName, $mobile, $type = 'json')
{
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/Clients?sig=' . $this->getSigParameter();
if ($type == 'json') {
$body_json = array();
$body_json['client'] = array();
$body_json['client']['appId'] = $appId;
$body_json['client']['clientType'] = $clientType;
$body_json['client']['charge'] = $charge;
$body_json['client']['friendlyName'] = $friendlyName;
$body_json['client']['mobile'] = $mobile;
$body = json_encode($body_json);
} elseif ($type == 'xml') {
$body_xml = '<?xml version="1.0" encoding="utf-8"?>
<client><appId>'.$appId.'</appId>
<clientType>'.$clientType.'</clientType>
<charge>'.$charge.'</charge>
<friendlyName>'.$friendlyName.'</friendlyName>
<mobile>'.$mobile.'</mobile>
</client>';
$body = trim($body_xml);
} else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $clientNumber
* @param $appId
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function releaseClient($clientNumber,$appId,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/dropClient?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array();
$body_json['client'] = array();
$body_json['client']['clientNumber'] = $clientNumber;
$body_json['client']['appId'] = $appId;
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="utf-8"?>
<client>
<clientNumber>'.$clientNumber.'</clientNumber>
<appId>'.$appId.'</appId >
</client>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $appId
* @param $start
* @param $limit
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function getClientList($appId,$start,$limit,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/clientList?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('client'=>array(
'appId'=>$appId,
'start'=>$start,
'limit'=>$limit
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<client>
<appId>'.$appId.'</appId>
<start>'.$start.'</start>
<limit>'.$limit.'</limit>
</client>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $appId
* @param $clientNumber
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function getClientInfo($appId,$clientNumber,$type = 'json'){
if ($type == 'json') {
$type = 'json';
} elseif ($type == 'xml') {
$type = 'xml';
} else {
throw new Exception("只能json或xml,默认为json");
}
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '?sig=' . $this->getSigParameter(). '&clientNumber='.$clientNumber.'&appId='.$appId;
$data = $this->getResult($url,null,$type,'get');
return $data;
} /**
* @param $appId
* @param $mobile
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function getClientInfoByMobile($appId,$mobile,$type = 'json'){
if ($type == 'json') {
$type = 'json';
} elseif ($type == 'xml') {
$type = 'xml';
} else {
throw new Exception("只能json或xml,默认为json");
}
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/ClientsByMobile?sig=' . $this->getSigParameter(). '&mobile='.$mobile.'&appId='.$appId;
$data = $this->getResult($url,null,$type,'get');
return $data;
} /**
* @param $appId
* @param $date
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function getBillList($appId,$date,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/billList?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('appBill'=>array(
'appId'=>$appId,
'date'=>$date,
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appBill>
<appId>'.$appId.'</appId>
<date>'.$date.'</date>
</appBill>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $appId
* @param $clientNumber
* @param $chargeType
* @param $charge
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function chargeClient($appId,$clientNumber,$chargeType,$charge,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/chargeClient?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('client'=>array(
'appId'=>$appId,
'clientNumber'=>$clientNumber,
'chargeType'=>$chargeType,
'charge'=>$charge
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<client>
<clientNumber>'.$clientNumber.'</clientNumber>
<chargeType>'.$chargeType.'</chargeType>
<charge>'.$charge.'</charge>
<appId>'.$appId.'</appId>
</client>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data; } /**
* @param $appId
* @param $fromClient
* @param $to
* @param null $fromSerNum
* @param null $toSerNum
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function callBack($appId,$fromClient,$to,$fromSerNum=null,$toSerNum=null,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/Calls/callBack?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('callback'=>array(
'appId'=>$appId,
'fromClient'=>$fromClient,
'fromSerNum'=>$fromSerNum,
'to'=>$to,
'toSerNum'=>$toSerNum
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<callback>
<fromClient>'.$fromClient.'</clientNumber>
<fromSerNum>'.$fromSerNum.'</chargeType>
<to>'.$to.'</charge>
<toSerNum>'.$toSerNum.'</toSerNum>
<appId>'.$appId.'</appId>
</callback>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $appId
* @param $verifyCode
* @param $to
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function voiceCode($appId,$verifyCode,$to,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/Calls/voiceCode?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('voiceCode'=>array(
'appId'=>$appId,
'verifyCode'=>$verifyCode,
'to'=>$to
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<voiceCode>
<verifyCode>'.$verifyCode.'</clientNumber>
<to>'.$to.'</charge>
<appId>'.$appId.'</appId>
</voiceCode>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
} /**
* @param $appId
* @param $to
* @param $templateId
* @param null $param
* @param string $type
* @return mixed|string
* @throws Exception
*/
public function templateSMS($appId,$to,$templateId,$param=null,$type = 'json'){
$url = self::BaseUrl . self::SoftVersion . '/Accounts/' . $this->accountSid . '/Messages/templateSMS?sig=' . $this->getSigParameter();
if($type == 'json'){
$body_json = array('templateSMS'=>array(
'appId'=>$appId,
'templateId'=>$templateId,
'to'=>$to,
'param'=>$param
));
$body = json_encode($body_json);
}elseif($type == 'xml'){
$body_xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<templateSMS>
<templateId>'.$templateId.'</templateId>
<to>'.$to.'</to>
<param>'.$param.'</param>
<appId>'.$appId.'</appId>
</templateSMS>';
$body = trim($body_xml);
}else {
throw new Exception("只能json或xml,默认为json");
}
$data = $this->getResult($url, $body, $type,'post');
return $data;
}
}

8.在config配置文件中做相关的配置;

9.使用与应用

10.测试,成功!

ThinkPHP整合短信通知功能的更多相关文章

  1. Thinkphp整合各个功能

    thinkphp整合Auth权限管理.支付宝.微信支付.阿里oss.友盟推送.融云即时通讯.云通讯短信.Email.Excel.PDF等等: 基于thinkphp扩展了大量的功能:而不改动thinkp ...

  2. ThinkPHP整合支付宝担保交易

    ThinkPHP整合支付宝担保交易本代码参考大神 http://www.thinkphp.cn/code/240.html 的思路 1.登陆支付宝后台,下载担保交易的集成包. 2.下载完成后的文件说明 ...

  3. ThinkPHP 整合Bootstrap Ajax分页

    ThinkPHP Ajax分页代码 publicfunction index() { $where=array(); $name = I('name'); if(!empty($name)){ $wh ...

  4. thinkphp整合系列之支付宝RSA加密方式

    thinkphp整合系列之支付宝RSA加密方式上篇博客写的是MD5加密方式:thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75 但是呢 ...

  5. ThinkPHP整合百度Ueditor

    文章来源:http://www.thinkphp.cn/code/267.html ThinkPHP整合百度Ueditor,基于黄永成老师的视频说明的申明:最好大家都能写绝对路径的都写好绝对路径比如: ...

  6. ThinkPHP整合百度Ueditor图文教程

    ThinkPHP整合百度Ueditor图文教程 ThinkPHP整合百度Ueditor,基于黄永成老师的视频说明的申明:最好大家都能写绝对路径的都写好绝对路径比如:window.UEDITOR_HOM ...

  7. thinkphp整合系列之phpexcel生成生成excel文件

    在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

  8. thinkphp整合系列之极验滑动验证码

    对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...

  9. YII2与Thinkphp整合阿里云OSS

    前言: 如果上传的文件都和网站程序源代码放在一起:那是有相当多的弊端的: 1:静态文件会占用大量带宽: 2:服务器的成本略高: 常规的做法是把php源代码放到一台服务器上:图片等静态文件放在另一台服务 ...

随机推荐

  1. 参数依赖查找(ADL,Argument-dependent lookup)

    参数依赖查找(Argument-dependent lookup),又称 ADL 或 Koenig 查找,是一组于函数调用表达式查找非限定函数名的规则,包含对重载运算符的隐式函数调用.在通常非限定名称 ...

  2. 【转帖】ArtisticStyle----很好用的C/C++样式格式化工具

    下载地址:http://srgb.googlecode.com/files/AStyle_2.02_windows.7z 把astyle.exe 复制到 C:\WINDOWS 目录里,省的指定路径VC ...

  3. c#中用DirectShow实现媒体播放器

    原文地址:https://www.cnblogs.com/aiqingqing/p/4338448.html 用.net做多媒体开发的似乎不多,所以网上资源也少,看的人更少.不过我的博客上居然还有几位 ...

  4. sql2008拒绝了对对象 (数据库 ,架构'dbo')的SELECT权限

    连接sql2008的时候,出现了这种一直报权限错误:错误截图如下: 所见效果描述:在windows身份验证的 情况下登陆进去数据库的表都是可以打开的,当换到sa或者别的账号登陆进去的时候这个时候我们点 ...

  5. c# 隐藏Tab控件的标签

    public void HideTabcontrolLabel(TabControl tabControl1) { tabControl1.Appearance = TabAppearance.Fla ...

  6. Spatial Transformer Network

    https://blog.csdn.net/yaoqi_isee/article/details/72784881 Abstract: 作者说明了CNN对于输入的数据缺乏空间变换不变形(lack of ...

  7. TCP 三次握手过程详解

    TCP(Transmission Control Protocol) 传输控制协议 TCP:面向连接的,可靠的,基于字节流的传输层通信协议 TCP(传输层)位于IP层(网络层)之上,应用层之下,不同的 ...

  8. FreeMarker中的list集合前后台代码

    freemarker中的list集合前后台代码: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它 ...

  9. Rigidbody-ClosestPointOnBounds测试

    可见是Collider的Bounds

  10. struts2设置加载非默认路径的struts.xml文件解决方案

    方案一:   首先我们要明白struts2加载配置文件都是从它自己的jar包和\WEB-INF\classes两个默认的位置加载的,如果你想改变strusts2中的文件的默认加载路径,可以在web项目 ...