切换导航条
此项目
正在载入...
登录
潘浩文
/
scoreshop
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
潘浩文
6 years ago
提交
7af8e52fda693037e67fd0dd92179e8143c17e0d
1 个父辈
de7ffa78
1 个管道 的构建
通过
耗费 1 秒
1
变更
3
构建
1
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
294 行增加
和
3 行删除
app/portal/service/CCPRestSmsSDK.php
app/portal/service/SendTemplateSMS.php
app/user/controller/RegisterController.php
app/portal/service/CCPRestSmsSDK.php
0 → 100644
查看文件 @
7af8e52
<?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
app\portal\service
;
class
REST
{
private
$AccountSid
;
private
$AccountToken
;
private
$AppId
;
private
$ServerIP
;
private
$ServerPort
;
private
$SoftVersion
;
private
$Batch
;
//时间戳
private
$BodyType
=
"json"
;
//包体格式,可填值:json 、xml
private
$enabeLog
=
true
;
//日志开关。可填值:true、
private
$Filename
=
"./log.txt"
;
//日志文件
private
$Handle
;
function
__construct
(
$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
=
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
standalone=
\"
yes
\"
?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>"
;
}
}
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
<
count
(
$datas
);
$i
++
){
$data
=
$data
.
"'"
.
$datas
[
$i
]
.
"',"
;
}
$body
=
"
{
'to':'$to','templateId':'$tempId','appId':'$this->AppId','datas':[".$data."]
}
"
;
}
else
{
$data
=
""
;
for
(
$i
=
0
;
$i
<
count
(
$datas
);
$i
++
){
$data
=
$data
.
"<data>"
.
$datas
[
$i
]
.
"</data>"
;
}
$body
=
"<TemplateSMS>
<to>
$to
</to>
<appId>
$this->AppId
</appId>
<templateId>
$tempId
</templateId>
<datas>"
.
$data
.
"</datas>
</TemplateSMS>"
;
}
$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
;
}
}
}
?>
...
...
app/portal/service/SendTemplateSMS.php
0 → 100644
查看文件 @
7af8e52
<?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
app\portal\service
;
class
Mobile
{
/**
* 发送模板短信
* @param to 手机号码集合,用英文逗号分开
* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null
* @param $tempId 模板Id,测试应用和未上线应用使用测试模板请填写1,正式应用上线后填写已申请审核通过的模板ID
*/
function
sendTemplateSMS
(
$to
,
$datas
,
$tempId
)
{
include_once
(
"./CCPRestSmsSDK.php"
);
// 初始化REST SDK
//主帐号,对应开官网发者主账号下的 ACCOUNT SID
$accountSid
=
'13821821000'
;
//主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN
$accountToken
=
'suntata12345'
;
//应用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'
;
$rest
=
new
REST
(
$serverIP
,
$serverPort
,
$softVersion
);
$rest
->
setAccount
(
$accountSid
,
$accountToken
);
$rest
->
setAppId
(
$appId
);
// 发送模板短信
$result
=
$rest
->
sendTemplateSMS
(
$to
,
$datas
,
$tempId
);
if
(
$result
==
NULL
)
{
echo
"result error!"
;
break
;
}
if
(
$result
->
statusCode
!=
0
)
{
echo
"error code :"
.
$result
->
statusCode
.
"<br>"
;
echo
"error msg :"
.
$result
->
statusMsg
.
"<br>"
;
//TODO 添加错误处理逻辑
}
else
{
echo
"Sendind TemplateSMS success!<br/>"
;
// 获取返回信息
$smsmessage
=
$result
->
TemplateSMS
;
echo
"dateCreated:"
.
$smsmessage
->
dateCreated
.
"<br/>"
;
echo
"smsMessageSid:"
.
$smsmessage
->
smsMessageSid
.
"<br/>"
;
//TODO 添加成功处理逻辑
}
}
//Demo调用
//**************************************举例说明***********************************************************************
//*假设您用测试Demo的APP ID,则需使用默认模板ID 1,发送手机号是13800000000,传入参数为6532和5,则调用方式为 *
//*result = sendTemplateSMS("13800000000" ,array('6532','5'),"1"); *
//*则13800000000手机号收到的短信内容是:【云通讯】您使用的是云通讯短信模板,您的验证码是6532,请于5分钟内正确输入 *
//*********************************************************************************************************************
}
?>
...
...
app/user/controller/RegisterController.php
查看文件 @
7af8e52
...
...
@@ -10,7 +10,7 @@
// +----------------------------------------------------------------------
namespace
app\user\controller
;
use
app\portal\service\Mobile
Service
;
use
app\portal\service\Mobile
;
use
cmf\controller\HomeBaseController
;
use
cmf\controller\WeChatBaseController
;
use
think\db
;
...
...
@@ -38,8 +38,8 @@ class RegisterController extends WeChatBaseController
$code
=
cmf_get_verification_code
(
$param
[
'mobile'
],
4
);
// var_dump($code);
if
(
$code
)
{
$mobile
=
new
MobileService
();
$mobile
->
sendSMSS
(
$param
[
'mobile'
],
$code
);
$mobile
=
new
Mobile
();
$mobile
->
sendTemplateSMS
(
$param
[
'mobile'
],[
'code'
=>
$code
],
1
);
$re
=
cmf_verification_code_log
(
$param
[
'mobile'
],
$code
,
time
()
+
60
);
if
(
$re
){
return
'验证码发送成功'
;
...
...
请
注册
或
登录
后发表评论