Files
pgserver3.0/pgserver/application/lib/CEBApi.php
annnj-company 130c1026c4 first commit
2026-04-17 18:29:53 +08:00

418 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\lib;
use app\util\Tools;
use app\util\ReturnCode;
use think\facade\Response;
use think\facade\Env;
use think\Exception;
use app\util\Aes;
use app\model\CebReportResult;
use think\facade\Log;
/**
* 光大银行系统接口
*/
class CEBApi
{
//光大银行接收询价结果接口
const ESZ004_API = '/webapi/Cebbank/ESZ004/returnESZ004Info';
const ESZ009_API = '/webapi/Cebbank/ESZ009/returnESZ009Info';
const ESZ011_API = '/webapi/Cebbank/ESZ011/returnESZ011Info';
const ESZ006_API = '/webapi/Cebbank/ESZ006/returnESZ006Info'; // 2.2.2 评估报告结果返回申请
//接收正式评估结果接口
const OFFICIAL_ESTIMATE_API = '/jkpt/pggsApi/estimate/receiveOff';
private $cebhost;
private $ftp_server = "";
private $ftp_port = 0;
private $ftp_user_name = "";
private $ftp_user_pass = "";
public function __construct(){
$this->ftp_server = Env::get('cebapi.ceb_ftp_host');
$key_env = Env::get('cebapi.KEY_ENV');
if ( $key_env == "TEST") {
$this->cebhost = Env::get('cebapi.ceb_test_host');
$this->ftp_port = Env::get('cebapi.ceb_test_ftp_port');
} else { // PROD
$this->cebhost = Env::get('cebapi.ceb_prop_host');
$this->ftp_port = Env::get('cebapi.ceb_prod_ftp_port');
}
$this->ftp_user_name = Env::get('cebapi.ftp_user_name');
$this->ftp_user_pass = Env::get('cebapi.ftp_user_pass');
}
public function getFileFromFtp($remotefile) {
$ret['code'] = 1;
$ret['data'] = "";
try
{
$sftp = new SFTPConnection($this->ftp_server, $this->ftp_port);
$sftp->login($this->ftp_user_name, $this->ftp_user_pass);
$fileData = $sftp->getFile( $remotefile);
$ret['data'] = $fileData;
return $ret;
}
catch (Exception $e)
{
$ret['code'] = -1;
$ret['data'] = $e->getMessage() ;
return $ret;
}
}
public function sendFileToFtp($localfile, $path, $remotefile) {
try
{
$sftp = new SFTPConnection($this->ftp_server, $this->ftp_port);
$sftp->login($this->ftp_user_name, $this->ftp_user_pass);
$sftp->uploadFile($localfile, $path, $remotefile);
Log::debug('upload to ftp:' . $remotefile);
}
catch (Exception $e)
{
echo $e->getMessage() . "\n";
return false;
}
return true;
}
// 2.2.2 评估报告结果返回申请
public function getURLESZ006(){
return $this->cebhost . self::ESZ006_API;
}
public function getURLESZ004() {
return $this->cebhost . self::ESZ004_API;
}
public function getURLESZ011() {
return $this->cebhost . self::ESZ011_API;
}
public function getURLESZ009() {
return $this->cebhost . self::ESZ009_API;
}
public function sendInquiryResult($data) {
$url = $this->getURLESZ004();
$cebData['businessNo'] = $data['business_no'] ;
$cebData['companyCode'] = $data['company_code'] ;
$cebData['businessType'] = $data['business_type'] ;
if($data['business_type'] == "01") { //贷前询价
$cebData['unitPriceDetail'] = "0";
$cebData['guidedUnitPriceDetail'] = "0";
}else if ($data['business_type'] == "02"){ //贷中询价
$cebData['unitPriceDetail'] = $data['unitPriceDetail'];
$cebData['guidedUnitPriceDetail'] = $data['guidedUnitPriceDetail'];
}
$cebData['certificateNo'] = $data['certificate_no'] ;
$cebData['estimateDealNo'] = $data['estimate_deal_no'];
$cebData['totalPrice'] = $data['eva_total_value'] ;
$cebData['chargeAmt'] = $data['charge_amt'] ;
$cebData['guidedPrice'] = $data['guide_price'] ;
$cebData['netWorth'] = $data['eva_net_value'] ;
$cebData['evaluatorName'] = $data['evaluator_name'] ;
$cebData['telephoneNumber'] = $data['telephone_number'] ;
$cebData['estimateTime'] = $data['estimate_time'] ;
$cebData['status'] = $data['status'] ;
$cebData['field1'] = '' ;
$cebData['field2'] = '' ;
if(isset($data['reason'])) {
$cebData['field3'] = $data['reason'];
}else {
$cebData['field3'] = '';
}
return $this->sendToCEB($url,$cebData,"ESZ004");
}
public function sendReevaluateResult($data) {
$url = $this->getURLESZ011();
$cebData['businessNo'] = $data['businessNo'] ;
$cebData['companyCode'] = $data['companyCode'] ;
$cebData['estimateDealNo'] = $data['estimateDealNo'] ;
$cebData['reevaluatedFileName'] = $data['reevaluatedFileName'] ;
$cebData['reevaluatedFileEnd'] = $data['reevaluatedFileEnd'] ;
$cebData['reevaluatedFilePath'] = $data['reevaluatedFilePath'] ;
$cebData['status'] = $data['status'] ;
$cebData['estimateTime'] = $data['estimateTime'] ;
$cebData['field1'] = '' ;
$cebData['field2'] = '' ;
if(isset($data['reason'])) {
$cebData['field3'] = $data['reason'];
}else {
$cebData['field3'] = '';
}
return $this->sendToCEB($url,$cebData,"ESZ011");
}
/**
* ESZ006 预评估和正式报告回复 function
*
* @param [type] $data
* @return void
*/
public function sendReportResult($data) {
$url = $this->getURLESZ006();
$cebData['businessNo'] = $data['business_no'] ;
$cebData['companyCode'] = $data['company_code'] ;
$cebData['businessType'] = $data['business_type'] ;
$cebData['returnReportType'] = $data['return_report_type'] ;
$cebData['unitPrice'] = $data['eva_unit_price'] ;
$cebData['estimateDealNo'] = $data['estimate_deal_no']; //已有预估编号,不需要再加公司编码做前缀
$cebData['totalPrice'] = $data['eva_total_value'] ;
$cebData['totalTax'] = $data['total_tax'] ;
$cebData['detailTax'] = $data['detail_tax'];
$cebData['chargeAmt'] = $data['charge_amt'] ;
$cebData['guidedPrice'] = $data['guide_price'] ;
$cebData['netWorth'] = $data['eva_net_value'] ;
$cebData['estimateReportName'] = $data['estimate_report_name'] ;
$cebData['estimateReportEnd'] = $data['estimate_report_end'] ;
$cebData['estimateReportPath'] = $data['estimate_report_path'] ;
if( $data['business_type'] == CebReportResult::BUSINESS_TYPE_REPORT )
{
$cebData['mortgagor1'] = $data['mortgagor1'] ;
$cebData['mortgagor2'] = $data['mortgagor2'] ;
$cebData['mortgagor3'] = $data['mortgagor3'] ;
$cebData['mortgagor4'] = $data['mortgagor4'] ;
$cebData['mortgagor5'] = $data['mortgagor5'] ;
$cebData['mortgagor6'] = $data['mortgagor6'] ;
$cebData['field1'] = $data['field1'] ;
} else {
$cebData['mortgagor1'] = "" ;
$cebData['mortgagor2'] = "" ;
$cebData['mortgagor3'] = "" ;
$cebData['mortgagor4'] = "" ;
$cebData['mortgagor5'] = "" ;
$cebData['mortgagor6'] = "" ;
$cebData['field1'] = '';
}
$cebData['resultStatus'] = $data['result_status'] ;
$cebData['reason'] = $data['reason'] ;
$cebData['field2'] = '' ;
$cebData['field3'] = '' ;
$cebData['estimateTime'] = $data['estimate_time'] ;
return $this->sendToCEB($url,$cebData,"ESZ006");
}
public function sendCheckResult($data) {
$url = $this->getURLESZ009();
$cebData['businessNo'] = $data['business_no'] ;
$cebData['companyCode'] = $data['company_code'] ;
$cebData['estimateDealNo'] = $data['estimate_deal_no'];
$cebData['checkTotalPrice'] = $data['check_total_price'] ;
$cebData['checkNetWorth'] = $data['check_net_worth'] ;
$cebData['checkChargeAmt'] = $data['check_charge_amt'] ;
$cebData['checkTime'] = $data['check_time'] ;
$cebData['checkStatus'] = $data['check_status'] ;
$cebData['field1'] = '' ;
$cebData['field2'] = '' ;
if(isset($data['reason'])){
$cebData['field3'] = $data['reason'] ;
}else{
$cebData['field3'] = '' ;
}
return $this->sendToCEB($url,$cebData,"ESZ009");
}
/**
*发送给银行
*/
public function sendToCEB($url,$data,$tranCode) {
Log::debug("--------------------发送给光大银行-------------------");
Log::debug($url);
Log::debug($data);
//$arr_header['Content-Type'] = "application/json; charset=utf-8";
//$arr_header['Cebsz'] ="oemp";
//$arr_header['tranCode'] =$tranCode;
$arr_header = array(
"Content-Type: application/json; charset=utf-8",
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
"Cebsz:oemp",
"tranCode:" . $tranCode . ""
);
$httpreturn = $this->http_post($url,$data,false,60,$arr_header);
Log::debug("------------------Http post 返回-------------");
try{
Log::debug($httpreturn);
}catch(Exception $e){
Log::warning($e->getMessage());
}
return $httpreturn;
}
public function responseToCEB($code,$msg,$data) {
$res['code'] = $code;
$res['message'] = $msg;
$res['data'] = $data;
$response = Response::create($res, 'json');
return $response;
}
/**
* GET 请求
* @param string $url
*/
public function http_get($url,$param,$arr_header=array()){
$oCurl = curl_init();
if (is_string($param)) {
$strPOST = $param;
} else {
$aPOST = array();
foreach ($param as $key => $val) {
$aPOST[] = $key . "=" . $val;
}
$strPOST = join("&", $aPOST);
}
$url = $url."?".$strPOST;
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_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
if(!empty($arr_header)){
$arr_header[] = "Content-Type: application/json; charset=utf-8";
}
curl_setopt($oCurl, CURLOPT_HTTPHEADER, $arr_header);
$sContent = curl_exec($oCurl);
if (curl_errno($oCurl)){
throw new Exception(curl_error($oCurl),0);
}else{
$httpStatusCode = curl_getinfo($oCurl, CURLINFO_HTTP_CODE);
if (200 !== $httpStatusCode){
throw new Exception($arr_header[1],$httpStatusCode);
}
}
curl_close($oCurl);
return $sContent;
}
/**
* POST 请求
* @param string $url
* @param array $param
* @param boolean $post_file 是否文件上传
* @param boolean $timeout 超时时间,单位秒
* @param boolean $arr_header http请求头
* @return string content
*/
public function http_post($url, $param, $post_file = false, $timeout = 30,$arr_header=array()){
$ch = curl_init();
curl_setopt_array($ch, array(
// 不直接输出,返回到变量
CURLOPT_RETURNTRANSFER => true,
// 设置超时为60s防止机器被大量超时请求卡死
CURLOPT_TIMEOUT => $timeout
));
// 支持POST请求
if (!empty($param)) {
curl_setopt_array($ch, array(
CURLOPT_POST => true,
// 设置POST参数
CURLOPT_POSTFIELDS => json_encode($param)
));
}
/*
if (is_string($param) || $post_file) {
$strPOST = $param;
} else {
$aPOST = array();
foreach ($param as $key => $val) {
$aPOST[] = $key . "=" . $val;
}
$strPOST = join("&", $aPOST);
}
*/
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $arr_header);
$sContent = curl_exec($ch);
$aStatus = curl_getinfo($ch);
curl_close($ch);
if (intval($aStatus["http_code"]) == 200) {
return $sContent;
} else {
return $aStatus;
}
}
/**
* DELETE 请求
* @param string $url
* @param array $param
* @param boolean $user_name AUTH账号
* @param boolean $password AUTH密码
* @return string content
*/
function http_delete($url,$param,$user_name,$password) {
$oCurl = curl_init();
if (is_string($param)) {
$strPOST = $param;
} else {
$aPOST = array();
foreach ($param as $key => $val) {
$aPOST[] = $key . "=" . $val;
}
$strPOST = join("&", $aPOST);
}
$url = $url."?".$strPOST;
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCurl, CURLOPT_CUSTOMREQUEST, 'DELETE');
//设置头
curl_setopt($oCurl, CURLOPT_USERPWD, "{$user_name}:{$password}");
curl_setopt($oCurl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36');
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);//SSL认证。
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if (intval($aStatus["http_code"]) == 200) {
return $sContent;
} else {
return false;
}
}
}