- 29 Abr 2014, 10:26
#50454
Alterações na classe system\library\PagSeguroLibrary\utils\PagSeguroHttpConnection.class.php
1. Aumentar variavel $timeout nos métodos post e get para 40
2. Alteração no método curlConnection
2.1 Descomentar a seguinte linha no método curlConnection
CURLOPT_TIMEOUT => $timeout
2.2
Alterar
if ($error) {
throw new Exception("CURL can't connect: $errorMessage");
Para
if ($error) {
if (strtoupper($method) === 'POST'){
return $this->curlReConnection('POST', $url, $data, $timeout, $charset);
}else{
return $this->curlReConnection('GET', $url, null, $timeout, $charset);
}
3. Criar novo método:
private function curlReConnection($method, $url, array $data, $timeout, $charset)
{
if (strtoupper($method) === 'POST') {
$postFields = ($data ? http_build_query($data, '', '&') : "");
$contentLength = "Content-length: " . strlen($postFields);
$methodOptions = array(
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields,
);
} else {
$contentLength = null;
$methodOptions = array(
CURLOPT_HTTPGET => true
);
}
$options = array(
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded; charset=" . $charset,
$contentLength,
'lib-description: php:' . PagSeguroLibrary::getVersion()
),
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_CONNECTTIMEOUT => $timeout,
CURLOPT_TIMEOUT => $timeout
);
// adding module version
if (!is_null(PagSeguroLibrary::getModuleVersion())) {
array_push($options[CURLOPT_HTTPHEADER], 'module-description: ' . PagSeguroLibrary::getModuleVersion());
}
// adding CMS version
if (!is_null(PagSeguroLibrary::getCMSVersion())) {
array_push($options[CURLOPT_HTTPHEADER], 'cms-description: ' . PagSeguroLibrary::getCMSVersion());
}
$options = ($options + $methodOptions);
$curl = curl_init();
curl_setopt_array($curl, $options);
$resp = curl_exec($curl);
$info = curl_getinfo($curl);
$error = curl_errno($curl);
$errorMessage = curl_error($curl);
curl_close($curl);
$this->setStatus((int) $info['http_code']);
$this->setResponse((String) $resp);
if ($error) {
throw new Exception("CURL can't reconnect: $errorMessage");
} else {
return true;
}