Files
littleTiger/plugins/payment/tenpay/classes/client/TenpayHttpClient.class.php

180 lines
3.9 KiB
PHP
Raw Permalink Normal View History

2019-02-28 19:48:21 +08:00
<?php
/**
* http<EFBFBD><EFBFBD>httpsͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ============================================================================
* api˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* setReqContent($reqContent),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD>get<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>get<EFBFBD><EFBFBD>ʽ<EFBFBD>
* getResContent(), <EFBFBD><EFBFBD>ȡӦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* setMethod($method),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󷽷<EFBFBD>,post<EFBFBD><EFBFBD><EFBFBD><EFBFBD>get
* getErrInfo(),<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* setCertInfo($certFile, $certPasswd, $certType="PEM"),<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>飬˫<EFBFBD><EFBFBD>httpsʱ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD>
* setCaInfo($caFile), <EFBFBD><EFBFBD><EFBFBD><EFBFBD>CA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽδpem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲻼<EFBFBD><EFBFBD><EFBFBD>
* setTimeOut($timeOut)<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʱʱ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* getResponseCode(), ȡ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>http״̬<EFBFBD><EFBFBD>
* call(),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýӿ<EFBFBD>
*
* ============================================================================
*
*/
class TenpayHttpClient {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>post<73><74>get<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>get<65><74>ʽ<EFBFBD>
var $reqContent;
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var $resContent;
//<2F><><EFBFBD>󷽷<EFBFBD>
var $method;
//֤<><D6A4><EFBFBD>ļ<EFBFBD>
var $certFile;
//֤<><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var $certPasswd;
//֤<><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PEM
var $certType;
//CA<43>ļ<EFBFBD>
var $caFile;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
var $errInfo;
//<2F><>ʱʱ<CAB1><CAB1>
var $timeOut;
//http״̬<D7B4><CCAC>
var $responseCode;
function __construct() {
$this->TenpayHttpClient();
}
function TenpayHttpClient() {
$this->reqContent = "";
$this->resContent = "";
$this->method = "post";
$this->certFile = "";
$this->certPasswd = "";
$this->certType = "PEM";
$this->caFile = "";
$this->errInfo = "";
$this->timeOut = 120;
$this->responseCode = 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function setReqContent($reqContent) {
$this->reqContent = $reqContent;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function getResContent() {
return $this->resContent;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󷽷<EFBFBD>post<73><74><EFBFBD><EFBFBD>get
function setMethod($method) {
$this->method = $method;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
function getErrInfo() {
return $this->errInfo;
}
//<2F><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>Ϣ
function setCertInfo($certFile, $certPasswd, $certType="PEM") {
$this->certFile = $certFile;
$this->certPasswd = $certPasswd;
$this->certType = $certType;
}
//<2F><><EFBFBD><EFBFBD>Ca
function setCaInfo($caFile) {
$this->caFile = $caFile;
}
//<2F><><EFBFBD>ó<EFBFBD>ʱʱ<CAB1><CAB1>,<2C><>λ<EFBFBD><CEBB>
function setTimeOut($timeOut) {
$this->timeOut = $timeOut;
}
//ִ<><D6B4>http<74><70><EFBFBD><EFBFBD>
function call() {
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>CURL<52>
$ch = curl_init();
// <20><><EFBFBD><EFBFBD>curl<72><6C><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EEB3A4><EFBFBD><EFBFBD>
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeOut);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// <20><>֤<EFBFBD><D6A4><EFBFBD>м<EFBFBD><D0BC><EFBFBD>SSL<53><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
$arr = explode("?", $this->reqContent);
if(count($arr) >= 2 && $this->method == "post") {
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>POST<53><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>application/x-www-form-urlencoded<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1BDBB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $arr[0]);
//Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
curl_setopt($ch, CURLOPT_POSTFIELDS, $arr[1]);
}else{
curl_setopt($ch, CURLOPT_URL, $this->reqContent);
}
//<2F><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>Ϣ
if($this->certFile != "") {
curl_setopt($ch, CURLOPT_SSLCERT, $this->certFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $this->certPasswd);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, $this->certType);
}
//<2F><><EFBFBD><EFBFBD>CA
if($this->caFile != "") {
// <20><><EFBFBD><EFBFBD>֤֤<D6A4><D6A4><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><C4BC>飬0<E9A3AC><30>ʾ<EFBFBD><CABE>ֹ<EFBFBD><D6B9>֤<EFBFBD><D6A4><EFBFBD>ĺϷ<C4BA><CFB7>Եļ<D4B5><C4BC>顣1<E9A1A3><31>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>CURLOPT_CAINFO
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, $this->caFile);
} else {
// <20><><EFBFBD><EFBFBD>֤֤<D6A4><D6A4><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><C4BC>飬0<E9A3AC><30>ʾ<EFBFBD><CABE>ֹ<EFBFBD><D6B9>֤<EFBFBD><D6A4><EFBFBD>ĺϷ<C4BA><CFB7>Եļ<D4B5><C4BC>顣1<E9A1A3><31>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>CURLOPT_CAINFO
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
}
// ִ<>в<EFBFBD><D0B2><EFBFBD>
$res = curl_exec($ch);
$this->responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($res == NULL) {
$this->errInfo = "call http err :" . curl_errno($ch) . " - " . curl_error($ch) ;
curl_close($ch);
return false;
} else if($this->responseCode != "200") {
$this->errInfo = "call http err httpcode=" . $this->responseCode ;
curl_close($ch);
return false;
}
curl_close($ch);
$this->resContent = $res;
return true;
}
function getResponseCode() {
return $this->responseCode;
}
}
?>