1.注册荣联云
https://www.yuntongxun.com/doc.html
2.充钱
3.新增短信模板(只有完成首冲300元才能使用)
4.待审核通过后下载官方给的Demo
5.下载Demo后在放到tp中的extend目录下
我这里把CCPRestSDK和SendTemplateSMS分别改成了REST,SendCode
(注意:这里改不改都行,随你开心)
6.更改REST (注意:我把接口配置都写在函数里了)
你们可以在application/extra中配置自己phone.php
<?php
/**
*发送手机验证码
*/
return [
'accountSid' => "", //主帐号
'accountToken' =>'' , //主帐号Token
'appId' => "", //应用Id
'serverIP' => 'app.cloopen.com', //请求地址,格式如下,不需要写https://
'serverPort' => '8883', //请求端口
'softVersion'=>'2013-12-26', //REST版本号
];
配置完phone.php后
下面这个应该都能用,复制就行了,如果不能用那么就恭喜你中奖了
<?php
/*
* Copyright (c) 2014 The CCP project authors. All Rights Reserved.
*
* Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
* that can be found in the LICENSE file in the root of the web site.
*
* http://www.yuntongxun.com
*
* An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
namespace phone;
class REST {
private $AccountSid;
private $AccountToken;
private $AppId;
private $SubAccountSid;
private $SubAccountToken;
private $ServerIP;
private $ServerPort;
private $SoftVersion;
private $Batch; //时间sh
private $BodyType = "xml";//包体格式,可填值:json 、xml
private $enabeLog = true; //日志开关。可填值:true、
private $Filename="../log.txt"; //日志文件
private $Handle;
function __construct($ServerIP,$ServerPort,$SoftVersion)
{
$this->Batch = date("YmdHis");
$this->ServerIP = config('phone.serverIP'); //请求地址
$this->ServerPort = config('phone.serverPort'); //请求端口
$this->SoftVersion = config('phone.softVersion'); //REST版本号
$this->Handle = fopen($this->Filename, 'a');
}
/**
* 设置主帐号
*
* @param AccountSid 主帐号
* @param AccountToken 主帐号Token
*/
function setAccount($AccountSid,$AccountToken){
$this->AccountSid = config('phone.accountSid'); //你的主帐号
$this->AccountToken = config('phone.accountToken'); //你的主帐号Token
}
/**
* 设置子帐号
*
* @param SubAccountSid 子帐号
* @param SubAccountToken 子帐号Token
*/
function setSubAccount($SubAccountSid,$SubAccountToken){
$this->SubAccountSid = $SubAccountSid;
$this->SubAccountToken = $SubAccountToken;
}
/**
* 设置应用ID
*
* @param AppId 应用ID
*/
function setAppId($AppId){
$this->AppId = config('phone.appId'); //你的应用ID
}
/**
* 打印日志
*
* @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 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>";
}
}
curl_close($ch);
return $result;
}
/**
* 创建子帐号
* @param friendlyName 子帐号名称
*/
function createSubAccount($friendlyName)
{
//主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth();
if($auth!=""){
return $auth;
}
// 拼接请求包体
if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}";
}else{
$body="<SubAccount>
<appId>$this->AppId</appId>
<friendlyName>$friendlyName</friendlyName>
</SubAccount>";
}
$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/SubAccounts?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 = '返回包体错误';
// }
return $datas;
}
/**
* 获取子帐号
* @param startNo 开始的序号,默认从0开始
* @param offset 一次查询的最大条数,最小是1条,最大是100条
*/
function getSubAccounts($startNo,$offset)
{
//主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth();
if($auth!=""){
return $auth;
}
// 拼接请求包体
$body="
<SubAccount>
<appId>$this->AppId</appId>
<startNo>$startNo</startNo>
<offset>$offset</offset>