| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 | 
							- <?php
 
- /**
 
-  * Wxpay.php  UTF-8
 
-  * huosdk_v8_btdev
 
-  *
 
-  * @date    : 2019/12/2 20:26
 
-  *
 
-  * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 
-  * @author  : chenbingling <cbl@huosdk.com>
 
-  * @version : HUOSDK 8.5
 
-  */
 
- namespace huoIdentify\identifyDriver\driver;
 
- use huoIdentify\identifyDriver\Driver;
 
- use huolib\status\CommonStatus;
 
- use TencentCloud\Common\Credential;
 
- use TencentCloud\Faceid\V20180301\FaceidClient;
 
- use TencentCloud\Faceid\V20180301\Models\IdCardVerificationRequest;
 
- use think\Config;
 
- use think\Log;
 
- class Wxpay extends Driver {
 
-     /**
 
-      * 构造函数
 
-      *
 
-      * @param array $config
 
-      */
 
-     public function __construct($config = []) {
 
-         if (empty($config)) {
 
-             $config = (array)Config::get('identify_conf.weixin');
 
-         }
 
-         $_config = array(
 
-             'secretId'  => get_val($config, 'SECRET_ID', ''),
 
-             'secretKey' => get_val($config, 'SECRET_KEY', ''),
 
-             'apiFrom'   => get_val($config, 'API_FROM', 2),  //认证api 来源 1 官方 2 市场
 
-         );
 
-         parent::__construct($_config);
 
-     }
 
-     /**
 
-      * 获取认证
 
-      *
 
-      * @return array
 
-      */
 
-     public function identify() {
 
-         $_api_from = $this->config['apiFrom'];
 
-         if (1 == $_api_from) {
 
-             return $this->fromOfficial();
 
-         }
 
-         return $this->fromMarket();
 
-     }
 
-     /***
 
-      * 腾讯云官方认证接口
 
-      * https://cloud.tencent.com/document/api/1007/33188
 
-      */
 
-     public function fromOfficial() {
 
-         require_once 'wxpay/TCloudAutoLoader.php';
 
-         // 实例化一个证书对象,入参需要传入腾讯云账户secretId,secretKey
 
-         $cred = new Credential($this->config['secretId'], $this->config['secretKey']);
 
-         // # 实例化要请求产品(以cvm为例)的client对象
 
-         $client = new FaceidClient($cred, "ap-guangzhou");
 
-         // 实例化一个请求对象
 
-         $req = new IdCardVerificationRequest();
 
-         $req->IdCard = $this->id_card;
 
-         $req->Name = $this->real_name;
 
-         // 通过client对象调用想要访问的接口,需要传入请求对象
 
-         $resp = $client->IdCardVerification($req);
 
-         $_rs = $resp->toJsonString();
 
-         $_rs_arr = json_decode($_rs, true);
 
-         if ('0' != $_rs_arr['Result']) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
 
-                     array($this->config, $this->id_card, $this->real_name)
 
-                 ).'&rs='.$_rs.'[微信实名认证api]', Log::ERROR
 
-             );
 
-             $_code = CommonStatus::INNER_ERROR;
 
-             return $this->huoError($_code, $_rs_arr['Description']);
 
-         }
 
-         $_code = CommonStatus::NO_ERROR;
 
-         return $this->huoSuccess($_code, CommonStatus::getMsg($_code));
 
-     }
 
-     /***
 
-      * 腾讯云市场认证接口
 
-      * https://market.cloud.tencent.com/products/15838
 
-      */
 
-     public function fromMarket() {
 
-         // 云市场分配的密钥Id
 
-         $secretId = $this->config['secretId'];
 
-         // 云市场分配的密钥Key
 
-         $secretKey = $this->config['secretKey'];
 
-         $source = 'market';
 
-         // 签名
 
-         $datetime = gmdate('D, d M Y H:i:s T');
 
-         $signStr = sprintf("x-date: %s\nx-source: %s", $datetime, $source);
 
-         $sign = base64_encode(hash_hmac('sha1', $signStr, $secretKey, true));
 
-         $auth = sprintf(
 
-             'hmac id="%s", algorithm="hmac-sha1", headers="x-date x-source", signature="%s"', $secretId, $sign
 
-         );
 
-         // 请求方法
 
-         $method = 'GET';
 
-         // 请求头
 
-         $headers = array(
 
-             'X-Source'      => $source,
 
-             'X-Date'        => $datetime,
 
-             'Authorization' => $auth,
 
-         );
 
-         // 查询参数
 
-         $queryParams = array(
 
-             'cardNo'   => $this->id_card,
 
-             'realName' => $this->real_name,
 
-         );
 
-         // body参数(POST方法下)
 
-         $bodyParams = array();
 
-         // url参数拼接
 
-         $url = 'https://service-d7fobmw9-1253662630.ap-shanghai.apigateway.myqcloud.com/release/VerifyIdcard';
 
-         if (count($queryParams) > 0) {
 
-             $url .= '?'.http_build_query($queryParams);
 
-         }
 
-         $ch = curl_init();
 
-         curl_setopt($ch, CURLOPT_URL, $url);
 
-         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
-         curl_setopt($ch, CURLOPT_TIMEOUT, 60);
 
-         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
 
-         curl_setopt(
 
-             $ch, CURLOPT_HTTPHEADER, array_map(
 
-                    function ($v, $k) {
 
-                        return $k.': '.$v;
 
-                    }, array_values($headers), array_keys($headers)
 
-                )
 
-         );
 
-         if (in_array($method, array('POST', 'PUT', 'PATCH'), true)) {
 
-             curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($bodyParams));
 
-         }
 
-         $_rs_json = curl_exec($ch);
 
-         curl_close($ch);
 
-         $_rs = json_decode($_rs_json, true);
 
-         if (!isset($_rs['error_code']) && isset($_rs['message'])) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
 
-                     array($this->config, $this->id_card, $this->real_name)
 
-                 ).'&rs='.$_rs_json.'[微信实名认证api]', Log::ERROR
 
-             );
 
-             $_code = CommonStatus::INNER_ERROR;
 
-             return $this->huoError($_code, $_rs['message']);
 
-         }
 
-         if ((isset($_rs['error_code']) && '0' != $_rs['error_code']) || empty($_rs['result'])) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
 
-                     array($this->config, $this->id_card, $this->real_name)
 
-                 ).'&rs='.$_rs_json.'[微信实名认证api]', Log::ERROR
 
-             );
 
-             $_code = CommonStatus::INNER_ERROR;
 
-             return $this->huoError($_code, CommonStatus::getMsg($_code));
 
-         }
 
-         if (!isset($_rs['result']['isok']) || false === $_rs['result']['isok']) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
 
-                     array($this->config, $this->id_card, $this->real_name)
 
-                 ).'&rs='.$_rs_json.'[微信实名认证api]', Log::ERROR
 
-             );
 
-             $_code = CommonStatus::INNER_ERROR;
 
-             return $this->huoError($_code, CommonStatus::getMsg($_code));
 
-         }
 
-         $_code = CommonStatus::NO_ERROR;
 
-         return $this->huoSuccess($_code, CommonStatus::getMsg($_code));
 
-     }
 
- }
 
 
  |