Browse Source

实名认证

zhangxiaobin 1 year ago
parent
commit
837dad5447

+ 1 - 1
application/api/controller/Index.php

@@ -258,7 +258,7 @@ class Index extends Api
 
         $timeArr = [1=>$hour,2=>$today,3=>$weekend,4=>$month];
         $where = [];
-        $where["a.type"] = ["in",[2,3,5,6]];//type:1=充值,2=买锤子,3=送礼物,4=声币换钻石,5=开贵族,6=买装扮,7=拒绝订单返还,8=完成订单收益
+        $where["a.type"] = ["in",[0,2,3,5,6,11,13]];//查看wallet.php文件
         $where["a.createtime"] = ["gt",$timeArr[$time]];
         $list = model('UserJewelLog')->alias("a")
             ->field("sum(a.value) as total_price,u.avatar,u.nickname")

+ 21 - 18
application/api/controller/User.php

@@ -931,12 +931,13 @@ class User extends Api
             $faceParams = [
                 'real_name' => $realName,
                 'id_card' => $idCard,
+                'user_id' => $this->auth->id,
             ];
-            $res = $userService->faceAuth($faceParams);echo '<pre>';var_dump($res);exit;
+            $res = $userService->faceAuth($faceParams);
             if (!$res['status']) {
                 $this->error('您的网络开小差啦5~');
             }
-            $rs = json_decode($res['data'], true);
+            $rs = $res['data'];
             if (!$rs || $rs['code'] != 0) {
                 $this->error('您的网络开小差啦6~');
             }
@@ -945,8 +946,8 @@ class User extends Api
                 'user_id' => $this->auth->id,
                 'realname' => $realName,
                 'idcard' => $idCard,
-                'certify_id' => $rs['result']['faceId'],
-                'out_trade_no' => $data['orderNo'],
+                'certify_id' => isset($rs['result']['faceId']) ? $rs['result']['faceId'] : '',
+                'out_trade_no' => isset($rs['result']['orderNo']) ? $rs['result']['orderNo'] : '',
                 'status' => 0,
                 'createtime' => time(),
                 'updatetime' => time()
@@ -966,7 +967,7 @@ class User extends Api
                 $this->error('您的网络开小差啦7~');
             }
             //修改用户表认证状态
-            $user_rs = Db::name('user')->where(['id' => $this->auth->id])->setField('real_status', 0);
+            $user_rs = Db::name('user')->where(['id' => $this->auth->id])->setField('is_auth', 2);
             if ($user_rs === false) {
                 Db::rollback();
                 $this->error('您的网络开小差啦8~');
@@ -978,8 +979,8 @@ class User extends Api
                 'face_id' => $user_auth['certify_id'],
                 'order_no' => $user_auth['out_trade_no'],
                 'user_id' => (string)$this->auth->id,
-                'nonce' => $sign_data['nonce'],
-                'sign' => $sign
+                'nonce' => $rs['nonce'],
+                'sign' => $rs['sign'],
             ];
             $this->success('success', $return_data);
         } catch (Exception $e) {
@@ -999,9 +1000,11 @@ class User extends Api
         if (!$user_auth['certify_id']) {
             $this->success('请先进行真人认证');
         }
-
+        $tencentConfig = config('tencent_yun');
+        $sercrtId = isset($tencentConfig['SecretId']) ? $tencentConfig['SecretId'] : '';
+        $sercrtKey = isset($tencentConfig['SecretKey']) ? $tencentConfig['SecretKey'] : '';
         //获取token
-        $token_url = 'https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/access_token?app_id='.config('tencent_yun')['secret_id'].'&secret='.config('tencent_yun')['secret_key'].'&grant_type=client_credential&version=1.0.0';
+        $token_url = 'https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/access_token?app_id='.$sercrtId.'&secret='.$sercrtKey.'&grant_type=client_credential&version=1.0.0';
         $token_result = file_get_contents($token_url);
         if (!$token_result) {
             $this->error('您的网络开小差啦1~');
@@ -1013,7 +1016,7 @@ class User extends Api
         $token = $token_result['access_token'];
 
         //获取签名鉴权参数ticket
-        $ticket_url = 'https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/api_ticket?app_id='.config('tencent_yun')['secret_id'].'&access_token='.$token.'&type=SIGN&version=1.0.0';
+        $ticket_url = 'https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/api_ticket?app_id='.$sercrtId.'&access_token='.$token.'&type=SIGN&version=1.0.0';
         $ticket_result = file_get_contents($ticket_url);
         if (!$ticket_result) {
             $this->error('您的网络开小差啦3~');
@@ -1026,7 +1029,7 @@ class User extends Api
 
         //获取签名
         $sign_data = [
-            'wbappid' => config('tencent_yun')['secret_id'],
+            'wbappid' => $sercrtId,
             'orderNo'  => $user_auth['out_trade_no'],
             'version' => '1.0.0',
             'ticket'  => $ticket,
@@ -1039,7 +1042,7 @@ class User extends Api
         //人脸核身结果查询
         $url = 'https://miniprogram-kyc.tencentcloudapi.com/api/v2/base/queryfacerecord?orderNo=' . $user_auth['out_trade_no'];
         $data = [
-            'appId' => config('tencent_yun')['secret_id'],
+            'appId' => $sercrtId,
             'version' => '1.0.0',
             'nonce' => $sign_data['nonce'],
             'orderNo' => $user_auth['out_trade_no'],
@@ -1055,10 +1058,10 @@ class User extends Api
             $this->error($rs['msg']);
         }
         if ($rs['result']['liveRate'] >= 90 && $rs['result']['similarity'] >= 90) {
-            $edit_data['status'] = 1;
+            $edit_data['status'] = 2;
             $msg = '真人认证成功';
         } else {
-            $edit_data['status'] = 2;
+            $edit_data['status'] = -1;
             $edit_data['certify_id'] = '';
             $edit_data['out_trade_no'] = '';
             $msg = '真人认证失败';
@@ -1074,19 +1077,19 @@ class User extends Api
             $this->error('查询认证结果失败2');
         }
         //修改用户信息
-        $rs = Db::name('user')->where(['id' => $this->auth->id])->setField('real_status', $edit_data['status']);
+        $rs = Db::name('user')->where(['id' => $this->auth->id])->setField('is_auth', $edit_data['status']);
         if (!$rs) {
             Db::rollback();
             $this->error('查询认证结果失败3');
         }
-        if ($edit_data['status'] == 1) { //通过
+        if ($edit_data['status'] == 2) { //通过
             //tag任务赠送金币
             //真人认证奖励
-            $task_rs = \app\common\model\TaskLog::tofinish($this->auth->id,20);
+            /*$task_rs = \app\common\model\TaskLog::tofinish($this->auth->id,20);
             if($task_rs === false){
                 Db::rollback();
                 $this->error('完成任务赠送奖励失败');
-            }
+            }*/
             //系统消息
             $msg_id = \app\common\model\Message::addMessage($this->auth->id,'真人认证','真人认证已经审核通过');
         } else {

+ 60 - 0
application/common.php

@@ -644,3 +644,63 @@ if (!function_exists('getUinqueId')) {
         return $newid;
     }
 }
+if (!function_exists('curl_post')) {
+    /**
+     * 发起HTTPS请求
+     */
+    function curl_post($url, $data, $header = '', $timeOut = 0)
+    {
+        //初始化curl
+        $ch = curl_init();
+        //参数设置
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
+        curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut);
+        curl_setopt($ch, CURLOPT_HEADER, 0);
+        curl_setopt($ch, CURLOPT_POST, 1);
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        if ($header != '') {
+            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
+        }
+        $result = curl_exec($ch);
+        //连接失败
+        if ($result == FALSE) {
+            //\think\Log::record('[ CURL ] ERROR ' . curl_error($ch)."\n".var_export(debug_backtrace(), true)."\n", 'error');
+        }
+        curl_close($ch);
+        return $result;
+    }
+}
+if (!function_exists('curl_get')) {
+    /**
+     * 发起HTTP GET请求
+     */
+    function curl_get($url)
+    {
+        $oCurl = curl_init();
+        if (stripos($url, "https://") !== FALSE) {
+            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
+            curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
+            curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
+        }
+        curl_setopt($oCurl, CURLOPT_TIMEOUT, 3);
+        curl_setopt($oCurl, CURLOPT_URL, $url);
+        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
+        $sContent = curl_exec($oCurl);
+        $aStatus  = curl_getinfo($oCurl);
+        $error    = curl_error($oCurl);
+        curl_close($oCurl);
+        if ($error) {
+            $sContent = file_get_contents($url);
+            return $sContent;
+        }
+
+        if (intval($aStatus["http_code"]) == 200) {
+            return $sContent;
+        } else {
+            return false;
+        }
+    }
+}

+ 9 - 7
application/common/service/UserService.php

@@ -22,7 +22,8 @@ class UserService
         try {
             $idCard = isset($params['id_card']) ? $params['id_card'] : '';
             $realName = isset($params['real_name']) ? $params['real_name'] : '';
-            $tencentConfig = config('tencent_im');
+            $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+            $tencentConfig = config('tencent_yun');
             $sercrtId = isset($tencentConfig['SecretId']) ? $tencentConfig['SecretId'] : '';
             $sercrtKey = isset($tencentConfig['SecretKey']) ? $tencentConfig['SecretKey'] : '';
             //获取token
@@ -31,7 +32,7 @@ class UserService
             if (!$token_result) {
                 throw new Exception('您的网络开小差啦1~');
             }
-            $token_result = json_decode($token_result, true);echo '<pre>';var_dump($token_result);exit;
+            $token_result = json_decode($token_result, true);
             if ($token_result['code'] != 0) {
                 throw new Exception('您的网络开小差啦2~');
             }
@@ -52,7 +53,7 @@ class UserService
             //获取签名
             $sign_data = [
                 'wbappid' => $sercrtId,
-                'userId'  => (string)$this->auth->id,
+                'userId'  => (string)$userId,
                 'version' => '1.0.0',
                 'ticket'  => $ticket,
                 'nonce'   => Random::alnum(32)
@@ -62,12 +63,12 @@ class UserService
             $sign = sha1($sign_string);
 
             //上传身份信息
-            $orderNo = getMillisecond() . $this->auth->id . mt_rand(1, 1000); //商户请求的唯一标识
+            $orderNo = getMillisecond() . $userId . mt_rand(1, 1000); //商户请求的唯一标识
             $url = 'https://miniprogram-kyc.tencentcloudapi.com/api/server/getAdvFaceId?orderNo='.$orderNo;
             $data = [
                 'webankAppId' => $sercrtId,
                 'orderNo' => $orderNo,
-                'userId' => (string)$this->auth->id,
+                'userId' => (string)$userId,
                 'name' => $realName,//姓名
                 'idNo' => $idCard,//证件号
                 'version' => '1.0.0',
@@ -75,8 +76,9 @@ class UserService
                 'nonce' => $sign_data['nonce']
             ];
             $res = curl_post($url,json_encode($data, 320), ['Content-Type: application/json']);
-            echo '<pre>';var_dump($res);exit;
-            $result['data'] = $res;
+            $result['data'] = json_decode($res,true);
+            $result['data']['nonce'] = $sign_data['nonce'];
+            $result['data']['sign'] = $sign;
         } catch (Exception $e) {
             $result['status'] = 0;
             $result['msg'] = $e->getMessage();

+ 5 - 1
application/config.php

@@ -414,5 +414,9 @@ return [
         'key' => 'f31aa80a36cef72829fbcdcb10aa2aadcea2944787f2b268d46021e67711326b',
         'SecretId' => 'AKIDISQCk4FCuSN9j8LL9k7GH6oLgpkAOQDm',
         'SecretKey' => 'PaZKq8D4vgOtFSYUEoESVLwJVu78wXxA',
-    ]
+    ],
+    'tencent_yun' => [
+        'SecretId' => 'IDAisIo7',
+        'SecretKey' => 'cZ8neUo2kiNod7qK5zg7mbfgygjCdUQXxR3YrfxN2dYzHGKCNOXzzAbIC1p8tNP9',
+    ],
 ];