Userauth.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 实名认证,真人认证相关
  7. */
  8. class Userauth extends Api
  9. {
  10. protected $noNeedLogin = [];
  11. protected $noNeedRight = '*';
  12. public function __construct(){
  13. $this->error('投票活动结束了');
  14. }
  15. //实名认证信息
  16. public function idcard_info(){
  17. $check = Db::name('user_idconfirm')->where('user_id',$this->auth->id)->order('id desc')->find();
  18. $this->success('success',$check);
  19. }
  20. //申请实名认证
  21. public function apply_idcard_confirm(){
  22. $truename = input('truename','');
  23. $idcard = input('idcard' ,'');
  24. if(empty($truename) || empty($idcard)){
  25. $this->error('实名认证信息必填');
  26. }
  27. if($this->auth->idcard_status == 1){
  28. $this->error('您已经完成实名认证');
  29. }
  30. if($this->auth->idcard_status == 0){
  31. $this->error('您已经提交实名认证,请等待审核');
  32. }
  33. Db::startTrans();
  34. $check = Db::name('user_idconfirm')->where('user_id',$this->auth->id)->lock(true)->find();
  35. if(!empty($check)){
  36. if($check['status'] == 0){
  37. Db::rollback();
  38. $this->error('您已经提交实名认证,请等待审核');
  39. }
  40. if($check['status'] == 1){
  41. Db::rollback();
  42. $this->error('您已经完成实名认证');
  43. }
  44. }
  45. $count = Db::name('user_idconfirm')->where(['idcard' => $idcard, 'user_id' => ['neq', $this->auth->id]])->count('id');
  46. if ($count) {
  47. $this->error('该身份证号已被他人使用');
  48. }
  49. $data = [
  50. 'user_id' => $this->auth->id,
  51. 'truename' => $truename,
  52. 'idcard' => $idcard,
  53. 'status' => 0, //人工审核
  54. 'createtime' => time(),
  55. 'updatetime' => time(),
  56. ];
  57. //更新
  58. $update_rs = Db::name('user')->where('id',$this->auth->id)->update(['idcard_status'=>$data['status']]);
  59. if(!empty($check)){
  60. $rs = Db::name('user_idconfirm')->where('id',$check['id'])->update($data);
  61. }else{
  62. $rs = Db::name('user_idconfirm')->insertGetId($data);
  63. }
  64. if(!$rs || !$update_rs){
  65. Db::rollback();
  66. $this->error('提交失败');
  67. }
  68. Db::commit();
  69. $this->success('提交成功,请等待审核');
  70. }
  71. //产品链接:https://market.aliyun.com/products/57000002/cmapi026109.html#sku=yuncode20109000025
  72. //阿里云-数脉api
  73. //姓名+身份证号
  74. private function userauth_aliyun_two($cardNo = '',$realname = ''){
  75. if(!$cardNo || !$realname){
  76. return false;
  77. }
  78. $config = config('aliyun_auth_shumai_two');
  79. $host = "https://eid.shumaidata.com";
  80. $path = "/eid/check";
  81. $method = "POST";
  82. $appcode = $config['app_code'];
  83. $headers = array();
  84. array_push($headers, "Authorization:APPCODE " . $appcode);
  85. $querys = "idcard=".$cardNo."&name=".urlencode($realname);
  86. $bodys = '';
  87. $url = $host . $path . "?" . $querys;
  88. $curl = curl_init();
  89. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
  90. curl_setopt($curl, CURLOPT_URL, $url);
  91. curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  92. curl_setopt($curl, CURLOPT_FAILONERROR, false);
  93. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  94. //设定返回信息中是否包含响应信息头,启用时会将头文件的信息作为数据流输出,true 表示输出信息头, false表示不输出信息头
  95. //如果需要将字符串转成json,请将 CURLOPT_HEADER 设置成 false
  96. curl_setopt($curl, CURLOPT_HEADER, false);
  97. if (1 == strpos("$".$host, "https://"))
  98. {
  99. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  100. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  101. }
  102. $returnRes = curl_exec($curl);
  103. //var_dump($returnRes);
  104. curl_close($curl);
  105. $result = json_decode($returnRes,true);
  106. //dump($result);
  107. if(is_array($result) && isset($result['code']) && $result['code'] == 0){
  108. if(isset($result['result']) && isset($result['result']['res'])){
  109. if($result['result']['res'] == 1){
  110. //实名过了
  111. return true;
  112. }
  113. }
  114. }
  115. return false;
  116. }
  117. }