/** * 请求第三方进行认证 * <code> * $this->requestApi([['Name' => 'xx', 'CardNum' => 'xx']]) * </code> * @param array $identities * @return string */ private function requestApi(array $identities) { $config = IoC::get('config')->validateConfig; $soap = new \SoapClient($config->wsdlURL, ['connection_timeout' => 15]); $des = new Des($config->Key, $config->iv); $partner = $des->encrypt($config->partner); $partnerPW = $des->encrypt($config->partnerPW); $type = $des->encrypt($config->type); $userData = []; foreach ($identities as $one) { $userData[] = $this->formatParam($config->type, $one); } $userData = implode(';', $userData); //先将中文转码 $userData = mb_convert_encoding($userData, "GBK", "UTF-8"); $userData = $des->encrypt($userData); $params = array("userName_" => $partner, "password_" => $partnerPW, "type_" => $type, "param_" => $userData); //请求查询 $method = count($identities) > 1 ? 'queryBatch' : 'querySingle'; $returnValueKey = count($identities) > 1 ? 'queryBatchReturn' : 'querySingleReturn'; $data = $soap->{$method}($params); $resultXML = $des->decrypt($data->{$returnValueKey}); $resultXML = mb_convert_encoding($resultXML, "UTF-8", "GBK"); return $resultXML; }
/** * @param array $param 查询参数(二维数组) * @return string */ function getData($param) { $config = $this->getDI()->getConfig()->validateConfig; try { $soap = new \SoapClient($config->wsdlURL, array("connection_timeout" => 15)); } catch (Exception $e) { return "LinkError"; } $DES = new Des($config->Key, $config->iv); //@todo 加密数据 $partner = $DES->encrypt($config->partner); $partnerPW = $DES->encrypt($config->partnerPW); $type = $DES->encrypt($config->type); $userData = ''; if (count($param) > 1) { foreach ($param as $k => $v) { $userData .= $this->formatParam($config->type, $v) . ';'; } $userData = substr($userData, 0, -1); } else { $userData = $this->formatParam($config->type, $param[0]); } //先将中文转码 $userData = mb_convert_encoding($userData, "GBK", "UTF-8"); $userData = $DES->encrypt($userData); $params = array("userName_" => $partner, "password_" => $partnerPW, "type_" => $type, "param_" => $userData); //请求查询 if (count($param) > 1) { //传入的数组有多条数据就查询多个 $data = $soap->queryBatch($params); $resultXML = $DES->decrypt($data->queryBatchReturn); } else { $data = $soap->querySingle($params); $resultXML = $DES->decrypt($data->querySingleReturn); } //@todo 解密数据 $resultXML = mb_convert_encoding($resultXML, "UTF-8", "GBK"); return $resultXML; }