From dd317a42462c9ee6e15d669a1ed31657d9c90d65 Mon Sep 17 00:00:00 2001 From: qinzongqing Date: Thu, 13 Apr 2023 18:52:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/Oauth2Controller.php | 60 ++--- app/controllers/SmsController.php | 339 +++++++++++++++------------ 2 files changed, 216 insertions(+), 183 deletions(-) diff --git a/app/controllers/Oauth2Controller.php b/app/controllers/Oauth2Controller.php index cac888b..d3d4adc 100644 --- a/app/controllers/Oauth2Controller.php +++ b/app/controllers/Oauth2Controller.php @@ -19,12 +19,12 @@ class Oauth2Controller extends ControllerBase{ function testAction(){ //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/oauth2/code"; //$url = "http://127.0.0.1/tiffany/api/oauth2/code?qaz=wsx"; - //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/oauth2/accesstoken"; - $url = "http://127.0.0.1/tiffany/api/oauth2/accesstoken?qaz=wsx"; + $url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/oauth2/accesstoken"; + //$url = "http://127.0.0.1/tiffany/api/oauth2/accesstoken?qaz=wsx"; $post_arr = array(); $post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7"; $post_arr['appsecrect'] = "b82015bd-8d4c-4df8-87a8-c25477a8976f"; - $post_arr['code'] = "ua0mqjhsbdp8i4xt5ekwg2zn1693yc7f"; + $post_arr['code'] = "0807571e456241fcac19c836ed4fd9f7"; $post_json = json_encode($post_arr); $result = $this->__http_post_request($url, $post_json, true); print_r($result); die; @@ -38,7 +38,7 @@ class Oauth2Controller extends ControllerBase{ function codeAction(){ //如果未获取到请求数据 if(empty(file_get_contents("php://input"))){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -49,7 +49,7 @@ class Oauth2Controller extends ControllerBase{ $request_arr = json_decode(file_get_contents("php://input"), true); //如果请求数据整体为空 if(empty($request_arr)){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -60,12 +60,12 @@ class Oauth2Controller extends ControllerBase{ $rs['errmsg'] = ""; //如果未获取到appid if(empty($request_arr['appid'])){ - //告知用户appid is empty; + //告知用户"appid is empty;" $rs['errmsg'].= "appid is empty;"; } //如果以上判断未通过 if(!empty($rs['errmsg'])){ - //告知用户参数错误 error detail: + //告知用户"参数错误 error detail:".$rs['errmsg'] $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; $rs['errcode'] = 61451; $rs['data'] = null; @@ -78,7 +78,7 @@ class Oauth2Controller extends ControllerBase{ $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 if(empty($AppInfo)){ - //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; $rs['data'] = null; @@ -100,7 +100,7 @@ class Oauth2Controller extends ControllerBase{ if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 if($today_req_times>=$day_max_req_times){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -115,7 +115,7 @@ class Oauth2Controller extends ControllerBase{ else{ //如果接口请求次数限制不大于0 if($day_max_req_times<=0){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -135,7 +135,7 @@ class Oauth2Controller extends ControllerBase{ $AppInfo->LastReqTime = $current_date; //如果更新失败 if(!($AppInfo->save())){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -163,14 +163,14 @@ class Oauth2Controller extends ControllerBase{ $TempCode->ExpireTime = date("Y-m-d H:i:s", $current_time+300); //如果保存失败 if(!($TempCode->save())){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; } //如果保存成功 else{ - //告知用户ok + //告知用户"ok" $rs['errmsg'] = "ok"; $rs['errcode'] = 0; $rs['data']['code'] = $code; @@ -193,7 +193,7 @@ class Oauth2Controller extends ControllerBase{ function accesstokenAction(){ //如果未获取到请求数据 if(empty(file_get_contents("php://input"))){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -204,7 +204,7 @@ class Oauth2Controller extends ControllerBase{ $request_arr = json_decode(file_get_contents("php://input"), true); //如果请求数据整体为空 if(empty($request_arr)){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -218,22 +218,22 @@ class Oauth2Controller extends ControllerBase{ $rs['errmsg'] = ""; //如果未获取到appid if(empty($request_arr['appid'])){ - //告知用户appid is empty; + //告知用户"appid is empty;" $rs['errmsg'].= "appid is empty;"; } //如果未获取到appsecrect if(empty($request_arr['appsecrect'])){ - //告知用户appsecrect is empty; + //告知用户"appsecrect is empty;" $rs['errmsg'].= "appsecrect is empty;"; } //如果未获取到code if(empty($request_arr['code'])){ - //告知用户code is empty; + //告知用户"code is empty;" $rs['errmsg'].= "code is empty;"; } //如果以上判断未通过 if(!empty($rs['errmsg'])){ - //告知用户参数错误 error detail: + //告知用户"参数错误 error detail:".$rs['errmsg'] $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; $rs['errcode'] = 61451; $rs['data'] = null; @@ -246,7 +246,7 @@ class Oauth2Controller extends ControllerBase{ $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 if(empty($AppInfo)){ - //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; $rs['data'] = null; @@ -268,7 +268,7 @@ class Oauth2Controller extends ControllerBase{ if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 if($today_req_times>=$day_max_req_times){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -283,7 +283,7 @@ class Oauth2Controller extends ControllerBase{ else{ //如果接口请求次数限制不大于0 if($day_max_req_times<=0){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -303,7 +303,7 @@ class Oauth2Controller extends ControllerBase{ $AppInfo->LastReqTime = $current_date; //如果更新失败 if(!($AppInfo->save())){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -314,7 +314,7 @@ class Oauth2Controller extends ControllerBase{ $appsecrect = $request_arr['appsecrect']; //如果appsecrect不匹配 if($appsecrect!=$AppInfo->AppSecret){ - //告知用户密钥不匹配,err detail:密钥不匹配 + //告知用户"密钥不匹配,err detail:密钥不匹配" $rs['errmsg'] = "密钥不匹配,err detail:密钥不匹配"; $rs['errcode'] = 40037; $rs['data'] = null; @@ -327,7 +327,7 @@ class Oauth2Controller extends ControllerBase{ $TempCode = TempCode::findFirst("AppId = '$appid' AND Code = '$code'"); //如果未查询到临时code if(empty($TempCode)){ - //告知用户code 不正确,err detail:code 不匹配 + //告知用户"code 不正确,err detail:code 不匹配" $rs['errmsg'] = "code 不正确,err detail:code 不匹配"; $rs['errcode'] = 40038; $rs['data'] = null; @@ -338,7 +338,7 @@ class Oauth2Controller extends ControllerBase{ $expire_time = $TempCode->ExpireTime; //如果code已失效 if($current_datetime>=$expire_time){ - //告知用户authorize code is expired,err detail:code 已过期 + //告知用户"authorize code is expired,err detail:code 已过期" $rs['errmsg'] = "authorize code is expired,err detail:code 已过期"; $rs['errcode'] = 80103; $rs['data'] = null; @@ -349,7 +349,7 @@ class Oauth2Controller extends ControllerBase{ $is_used = $TempCode->IsUsed; //如果code已使用过 if(!empty($is_used)){ - //告知用户 + //告知用户"authorize code is used,err detail:code已使用" $rs['errmsg'] = "authorize code is used,err detail:code已使用"; $rs['errcode'] = 80104; $rs['data'] = null; @@ -366,7 +366,7 @@ class Oauth2Controller extends ControllerBase{ if(!($TempCode->save())){ //回滚事务 $this->db->rollback(); - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -405,7 +405,7 @@ class Oauth2Controller extends ControllerBase{ if(!($AccessToken->save())){ //回滚事务 $this->db->rollback(); - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -414,7 +414,7 @@ class Oauth2Controller extends ControllerBase{ else{ //执行事务 $this->db->commit(); - //告知用户ok + //告知用户"ok" $rs['errmsg'] = "ok"; $rs['errcode'] = 0; $rs['data']['access_token'] = $access_token; diff --git a/app/controllers/SmsController.php b/app/controllers/SmsController.php index 847a666..d4bbb5b 100644 --- a/app/controllers/SmsController.php +++ b/app/controllers/SmsController.php @@ -19,19 +19,19 @@ class SmsController extends ControllerBase{ function testAction(){ //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/sms/send"; //$url = "http://127.0.0.1/tiffany/api/sms/send?qaz=wsx"; - //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/sms/authcode"; + $url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/sms/authcode"; //$url = "http://127.0.0.1/tiffany/api/sms/authcode?qaz=wsx"; - $url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/sms/query_reports"; + //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/sms/query_reports"; //$url = "http://127.0.0.1/tiffany/api/sms/query_reports?qaz=wsx"; $post_arr = array(); - $post_arr['appid'] = ""; - $post_arr['mobile'] = ""; - $post_arr['access_token'] = ""; + $post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7"; + $post_arr['mobile'] = "13501882318"; + $post_arr['access_token'] = "71ebca94ab954d67a57af759424a94e1"; $post_arr['content'] = ""; $post_arr['format'] = ""; - $post_arr['len'] = ""; - $post_arr['type'] = ""; - $post_arr['is_resend'] = ""; + $post_arr['len'] = -1; + $post_arr['type'] = -1; + $post_arr['is_resend'] = true; $post_arr['min_id'] = ""; $post_json = json_encode($post_arr); $result = $this->__http_post_request($url, $post_json, true); @@ -51,7 +51,7 @@ class SmsController extends ControllerBase{ } //如果未获取到请求数据 elseif(empty(file_get_contents("php://input"))){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errcode'] = -1; $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['data'] = null; @@ -62,7 +62,7 @@ class SmsController extends ControllerBase{ $request_arr = json_decode(file_get_contents("php://input"), true); //如果请求数据整体为空 if(empty($request_arr)){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -73,27 +73,27 @@ class SmsController extends ControllerBase{ $rs['errmsg'] = ""; //如果未获取到appid if(empty($request_arr['appid'])){ - //告知用户appid is empty; + //告知用户"appid is empty;" $rs['errmsg'].= "appid is empty;"; } //如果未获取到手机号 if(empty($request_arr['mobile'])){ - //告知用户mobile is empty; + //告知用户"mobile is empty;" $rs['errmsg'].= "mobile is empty;"; } //如果未获取到access_token if(empty($request_arr['access_token'])){ - //告知用户access_token is empty; + //告知用户"access_token is empty;" $rs['errmsg'].= "access_token is empty;"; } //如果未获取到短信内容 if(empty($request_arr['content'])){ - //告知用户content is empty; + //告知用户"content is empty;" $rs['errmsg'].= "content is empty;"; } //如果以上判断未通过 if(!empty($rs['errmsg'])){ - //告知用户参数错误 error detail: + //告知用户"参数错误 error detail:".$rs['errmsg'] $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; $rs['errcode'] = 61451; $rs['data'] = null; @@ -106,7 +106,7 @@ class SmsController extends ControllerBase{ $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 if(empty($AppInfo)){ - //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; $rs['data'] = null; @@ -128,7 +128,7 @@ class SmsController extends ControllerBase{ if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 if($today_req_times>=$day_max_req_times){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -143,7 +143,7 @@ class SmsController extends ControllerBase{ else{ //如果接口请求次数限制不大于0 if($day_max_req_times<=0){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -163,7 +163,7 @@ class SmsController extends ControllerBase{ $AppInfo->LastReqTime = $current_date; //如果更新失败 if(!($AppInfo->save())){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -176,7 +176,7 @@ class SmsController extends ControllerBase{ $AccessToken = AccessToken::findFirst("AppId = '$appid' AND (AccessToken = '$access_token' OR PrevAccessToken = '$access_token')"); //如果未查询到接口信息 if(empty($AccessToken)){ - //告知用户accesstoken 不正确,err detail:找不到accesstoken信息 + //告知用户"accesstoken 不正确,err detail:找不到accesstoken信息" $rs['errmsg'] = "accesstoken 不正确,err detail:找不到accesstoken信息"; $rs['errcode'] = 40039; $rs['data'] = null; @@ -190,8 +190,11 @@ class SmsController extends ControllerBase{ //如果access_token匹配前access_token if($access_token==$AccessToken->PrevAccessToken){ //如果前access_token已过期 + //注意: + //原代码逻辑中前access_token似乎也按现access_token的到期时间算 + //此处先遵循文档,按照现access_token生成时间后10分钟算到期时间 if($current_datetime>$PrevExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 + //告知用户"access_token is expired,err detail:accesstoken 已过期" $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; $rs['errcode'] = 80105; $rs['data'] = null; @@ -201,7 +204,7 @@ class SmsController extends ControllerBase{ else{ //如果现access_token已过期 if($current_datetime>$ExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 + //告知用户"access_token is expired,err detail:accesstoken 已过期" $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; $rs['errcode'] = 80105; $rs['data'] = null; @@ -228,7 +231,7 @@ class SmsController extends ControllerBase{ $string = !empty($array[0])?$array[0]:""; //如果发送失败 if(!(strpos(strtolower($xml), "ok")!==false)){ - //告知用户发送失败,err detail:短信发送失败: + //告知用户"发送失败,err detail:短信发送失败:".$string //ERROR:200:[非手机号码] //ERROR:108:[FormatID 非法数值] $rs['errmsg'] = "发送失败,err detail:短信发送失败:".$string; @@ -240,7 +243,7 @@ class SmsController extends ControllerBase{ //获取messageid //OK:[202304121675878871004778] $messageid = str_replace("]", "", str_replace("OK:[", "", $string)); - //告知用户ok + //告知用户"ok" $rs['errmsg'] = "ok"; $rs['errcode'] = 0; $rs['data']['messageid'] = $messageid; @@ -270,7 +273,7 @@ class SmsController extends ControllerBase{ } //如果未获取到请求数据 elseif(empty(file_get_contents("php://input"))){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errcode'] = -1; $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['data'] = null; @@ -281,7 +284,7 @@ class SmsController extends ControllerBase{ $request_arr = json_decode(file_get_contents("php://input"), true); //如果请求数据整体为空 if(empty($request_arr)){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -292,151 +295,178 @@ class SmsController extends ControllerBase{ $rs['errmsg'] = ""; //如果未获取到appid if(empty($request_arr['appid'])){ - //告知用户appid is empty; + //告知用户"appid is empty;" $rs['errmsg'].= "appid is empty;"; } //如果未获取到手机号 if(empty($request_arr['mobile'])){ - //告知用户mobile is empty; + //告知用户"mobile is empty;" $rs['errmsg'].= "mobile is empty;"; } //如果未获取到access_token if(empty($request_arr['access_token'])){ - //告知用户access_token is empty; + //告知用户"access_token is empty;" $rs['errmsg'].= "access_token is empty;"; } //如果以上判断未通过 if(!empty($rs['errmsg'])){ - //告知用户参数错误 error detail: + //告知用户"参数错误 error detail:".$rs['errmsg'] $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; $rs['errcode'] = 61451; $rs['data'] = null; } //如果以上判断都通过 else{ - //准备判断appid是否有效 - $appid = $request_arr['appid']; - //查询接口信息 - $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); - //如果未查询到接口信息 - if(empty($AppInfo)){ - //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 - $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; - $rs['errcode'] = 40036; + //获取验证码长度 + //注意: + //原代码逻辑中验证码长度小于等于0则取默认值4 + //此处先遵循原代码逻辑,而不按照文档限制判断 + $len = !empty($request_arr['len'])?$request_arr['len']:4; + $len = (int)$len; + $len = $len>0?$len:4; + //如果验证码长度小于2或大于10 + //注意: + //原代码逻辑中验证码长度为大于等于1而小于等于9 + //此处则先遵循文档,而不按照原代码逻辑限制判断 + if($len<2 || $len>10){ + //告知用户"参数错误 error detail:" + $rs['errmsg'] = "参数错误 error detail:"; + $rs['errcode'] = 61451; $rs['data'] = null; } - //如果有查询到接口信息 + //如果验证码长度大于等于2且小于等于10 else{ - //获取上次请求日期 - $last_req_time = $AppInfo->LastReqTime; - $last_req_date = date("Y-m-d", strtotime($last_req_time)); - //获取当前时间及当天日期 - $current_time = time(); - $current_datetime = date("Y-m-d H:i:s", $current_time); - $current_date = date("Y-m-d", $current_time); - //获取上次请求日期所在日的请求次数 - $today_req_times = $AppInfo->TodayReqTimes; - //获取接口请求次数限制 - $day_max_req_times = $AppInfo->DayMaxReqTimes; - //如果上次请求日期是当天日期 - if($last_req_date==$current_date){ - //如果当天请求次数已达到接口请求次数限制 - if($today_req_times>=$day_max_req_times){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 - $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; - $rs['errcode'] = 80102; - $rs['data'] = null; - } - //如果当天请求次数尚未达到接口请求次数限制 - else{ - //当天请求次数加一 - $today_req_times = $today_req_times+1; - } + //获取验证码类型:1 纯数字 2 字母加数字 + //注意: + //原代码逻辑中验证码类型小于等于0则取默认值1 + //此处先遵循原代码逻辑,而不按照文档限制判断 + $type = !empty($request_arr['type'])?$request_arr['type']:1; + $type = (int)$type; + $type = $type>0?$type:1; + //如果验证码类型不是1或2 + if($type!=1 && $type!=2){ + //告知用户"参数错误 error detail:" + $rs['errmsg'] = "参数错误 error detail:"; + $rs['errcode'] = 61451; + $rs['data'] = null; } - //如果上次请求日期不是当天日期 + //如果验证码类型是1或2 else{ - //如果接口请求次数限制不大于0 - if($day_max_req_times<=0){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 - $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; - $rs['errcode'] = 80102; + //准备判断appid是否有效 + $appid = $request_arr['appid']; + //查询接口信息 + $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); + //如果未查询到接口信息 + if(empty($AppInfo)){ + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" + $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; + $rs['errcode'] = 40036; $rs['data'] = null; } - //如果接口请求次数限制大于0 + //如果有查询到接口信息 else{ - //初始当天请求次数 - $today_req_times = 1; - } - } - //如果以上判断都通过 - if(empty($rs['errcode'])){ - //准备更新当天请求次数 - $AppInfo->LastModifiedTime = $current_datetime; - //其他字段 - $AppInfo->TodayReqTimes = $today_req_times; - $AppInfo->LastReqTime = $current_date; - //如果更新失败 - if(!($AppInfo->save())){ - //告知用户系统繁忙,请稍候再试 - $rs['errmsg'] = "系统繁忙,请稍候再试"; - $rs['errcode'] = -1; - $rs['data'] = null; - } - //如果更新成功 - else{ - //准备判断access_token是否有效 - $access_token = $request_arr['access_token']; - //查询接口信息 - $AccessToken = AccessToken::findFirst("AppId = '$appid' AND (AccessToken = '$access_token' OR PrevAccessToken = '$access_token')"); - //如果未查询到接口信息 - if(empty($AccessToken)){ - //告知用户accesstoken 不正确,err detail:找不到accesstoken信息 - $rs['errmsg'] = "accesstoken 不正确,err detail:找不到accesstoken信息"; - $rs['errcode'] = 40039; - $rs['data'] = null; - } - //如果有查询到接口信息 - else{ - //获取现access_token到期时间 - $ExpireTime = $AccessToken->ExpireTime; - //获取前access_token到期时间 - $PrevExpireTime = date("Y-m-d H:i:s", strtotime($AccessToken->ExpireTime)-14400+600); - //如果access_token匹配前access_token - if($access_token==$AccessToken->PrevAccessToken){ - //如果前access_token已过期 - if($current_datetime>$PrevExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 - $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; - $rs['errcode'] = 80105; - $rs['data'] = null; - } + //获取上次请求日期 + $last_req_time = $AppInfo->LastReqTime; + $last_req_date = date("Y-m-d", strtotime($last_req_time)); + //获取当前时间及当天日期 + $current_time = time(); + $current_datetime = date("Y-m-d H:i:s", $current_time); + $current_date = date("Y-m-d", $current_time); + //获取上次请求日期所在日的请求次数 + $today_req_times = $AppInfo->TodayReqTimes; + //获取接口请求次数限制 + $day_max_req_times = $AppInfo->DayMaxReqTimes; + //如果上次请求日期是当天日期 + if($last_req_date==$current_date){ + //如果当天请求次数已达到接口请求次数限制 + if($today_req_times>=$day_max_req_times){ + //告知用户"request today reached the request limit,err detail:超过请求上限限制" + $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; + $rs['errcode'] = 80102; + $rs['data'] = null; } - //如果access_token匹配现access_token + //如果当天请求次数尚未达到接口请求次数限制 else{ - //如果现access_token已过期 - if($current_datetime>$ExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 - $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; - $rs['errcode'] = 80105; + //当天请求次数加一 + $today_req_times = $today_req_times+1; + } + } + //如果上次请求日期不是当天日期 + else{ + //如果接口请求次数限制不大于0 + if($day_max_req_times<=0){ + //告知用户"request today reached the request limit,err detail:超过请求上限限制" + $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; + $rs['errcode'] = 80102; + $rs['data'] = null; + } + //如果接口请求次数限制大于0 + else{ + //初始当天请求次数 + $today_req_times = 1; + } + } + //如果以上判断都通过 + if(empty($rs['errcode'])){ + //准备更新当天请求次数 + $AppInfo->LastModifiedTime = $current_datetime; + //其他字段 + $AppInfo->TodayReqTimes = $today_req_times; + $AppInfo->LastReqTime = $current_date; + //如果更新失败 + if(!($AppInfo->save())){ + //告知用户"系统繁忙,请稍候再试" + $rs['errmsg'] = "系统繁忙,请稍候再试"; + $rs['errcode'] = -1; + $rs['data'] = null; + } + //如果更新成功 + else{ + //准备判断access_token是否有效 + $access_token = $request_arr['access_token']; + //查询接口信息 + $AccessToken = AccessToken::findFirst("AppId = '$appid' AND (AccessToken = '$access_token' OR PrevAccessToken = '$access_token')"); + //如果未查询到接口信息 + if(empty($AccessToken)){ + //告知用户"accesstoken 不正确,err detail:找不到accesstoken信息" + $rs['errmsg'] = "accesstoken 不正确,err detail:找不到accesstoken信息"; + $rs['errcode'] = 40039; $rs['data'] = null; } - } - //如果以上判断都通过 - if(empty($rs['errcode'])){ - //获取短信内容 - $content = !empty($request_arr['content'])?$request_arr['content']:"你的验证码是[$=yzm=$]"; - $content = strpos($content, "[$=yzm=$]")!==false?$content:"你的验证码是[$=yzm=$]"; - //获取验证码长度 - $len = isset($request_arr['len'])?$request_arr['len']:4; - $len = (int)$len; - $len = $len>=2&&$len<=10?$len:4; - //获取验证码类型:1 纯数字 2 字母加数字 - $type = isset($request_arr['type'])?$request_arr['type']:1; - $type = (int)$type; - $type = in_array($type, array(1, 2))?$type:1; - //获取是否重发旧验证码 - $is_resend = isset($request_arr['is_resend'])?$request_arr['is_resend']:false; - $is_resend = in_array($is_resend, array(true, false))?$is_resend:false; + //如果有查询到接口信息 + else{ + //获取现access_token到期时间 + $ExpireTime = $AccessToken->ExpireTime; + //获取前access_token到期时间 + $PrevExpireTime = date("Y-m-d H:i:s", strtotime($AccessToken->ExpireTime)-14400+600); + //如果access_token匹配前access_token + if($access_token==$AccessToken->PrevAccessToken){ + //如果前access_token已过期 + //注意: + //原代码逻辑中前access_token似乎也按现access_token的到期时间算 + //此处先遵循文档,按照现access_token生成时间后10分钟算到期时间 + if($current_datetime>$PrevExpireTime){ + //告知用户"access_token is expired,err detail:accesstoken 已过期" + $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; + $rs['errcode'] = 80105; + $rs['data'] = null; + } + } + //如果access_token匹配现access_token + else{ + //如果现access_token已过期 + if($current_datetime>$ExpireTime){ + //告知用户"access_token is expired,err detail:accesstoken 已过期" + $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; + $rs['errcode'] = 80105; + $rs['data'] = null; + } + } + //如果以上判断都通过 + if(empty($rs['errcode'])){ + + } + } } } } @@ -461,7 +491,7 @@ class SmsController extends ControllerBase{ } //如果未获取到请求数据 elseif(empty(file_get_contents("php://input"))){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errcode'] = -1; $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['data'] = null; @@ -472,7 +502,7 @@ class SmsController extends ControllerBase{ $request_arr = json_decode(file_get_contents("php://input"), true); //如果请求数据整体为空 if(empty($request_arr)){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -483,17 +513,17 @@ class SmsController extends ControllerBase{ $rs['errmsg'] = ""; //如果未获取到appid if(empty($request_arr['appid'])){ - //告知用户appid is empty; + //告知用户"appid is empty;" $rs['errmsg'].= "appid is empty;"; } //如果未获取到access_token if(empty($request_arr['access_token'])){ - //告知用户access_token is empty; + //告知用户"access_token is empty;" $rs['errmsg'].= "access_token is empty;"; } //如果以上判断未通过 if(!empty($rs['errmsg'])){ - //告知用户参数错误 error detail: + //告知用户"参数错误 error detail:".$rs['errmsg'] $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; $rs['errcode'] = 61451; $rs['data'] = null; @@ -506,7 +536,7 @@ class SmsController extends ControllerBase{ $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 if(empty($AppInfo)){ - //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; $rs['data'] = null; @@ -528,7 +558,7 @@ class SmsController extends ControllerBase{ if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 if($today_req_times>=$day_max_req_times){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -543,7 +573,7 @@ class SmsController extends ControllerBase{ else{ //如果接口请求次数限制不大于0 if($day_max_req_times<=0){ - //告知用户request today reached the request limit,err detail:超过请求上限限制 + //告知用户"request today reached the request limit,err detail:超过请求上限限制" $rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制"; $rs['errcode'] = 80102; $rs['data'] = null; @@ -563,7 +593,7 @@ class SmsController extends ControllerBase{ $AppInfo->LastReqTime = $current_date; //如果更新失败 if(!($AppInfo->save())){ - //告知用户系统繁忙,请稍候再试 + //告知用户"系统繁忙,请稍候再试" $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; $rs['data'] = null; @@ -576,7 +606,7 @@ class SmsController extends ControllerBase{ $AccessToken = AccessToken::findFirst("AppId = '$appid' AND (AccessToken = '$access_token' OR PrevAccessToken = '$access_token')"); //如果未查询到接口信息 if(empty($AccessToken)){ - //告知用户accesstoken 不正确,err detail:找不到accesstoken信息 + //告知用户"accesstoken 不正确,err detail:找不到accesstoken信息" $rs['errmsg'] = "accesstoken 不正确,err detail:找不到accesstoken信息"; $rs['errcode'] = 40039; $rs['data'] = null; @@ -590,8 +620,11 @@ class SmsController extends ControllerBase{ //如果access_token匹配前access_token if($access_token==$AccessToken->PrevAccessToken){ //如果前access_token已过期 + //注意: + //原代码逻辑中前access_token似乎也按现access_token的到期时间算 + //此处先遵循文档,按照现access_token生成时间后10分钟算到期时间 if($current_datetime>$PrevExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 + //告知用户"access_token is expired,err detail:accesstoken 已过期" $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; $rs['errcode'] = 80105; $rs['data'] = null; @@ -601,7 +634,7 @@ class SmsController extends ControllerBase{ else{ //如果现access_token已过期 if($current_datetime>$ExpireTime){ - //告知用户access_token is expired,err detail:accesstoken 已过期 + //告知用户"access_token is expired,err detail:accesstoken 已过期" $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; $rs['errcode'] = 80105; $rs['data'] = null;