Cara, desculpe minha ignorância, estou iniciando ainda.
Não entendi muito esse código que você postou.
A API que estou usando, acredito que seja a API antiga.
Na minha acc do PagSeguro a pagina de retorno esta configurada assim
http: // meusite. com. br/ index. php ?r=retorno/Index (coloquei os espaços pq eu nao posso postar links aqui no forum ainda)
que é o link já online, do script que eu quero executar.
Tinha feito um teste, deixando só um insert básico nesse script.
Fiz uma compra no Pagseguro nada aconteceu.
Depois eu coloquei o mesmo script dentro de outro sistema ja publicado, só que sem o framework, e fiz outra compra no pagseguro, o script rodou normalmente.
Segue o código da minha action de retorno.(Esse mesmo código peguei em um post aqui do fórum e acredito que tenha sido voce que publicou, estava tentando com outro mas achei este melhor).
class RetornoController extends Controller {
public function actionIndex() {
$retorno_token = '9E5B6FB5BAA645A28FA468C66F133DCF';
$PagSeguro = 'Comando=validar';
$PagSeguro .= '&Token=' . $retorno_token;
$Cabecalho = "Retorno PagSeguro";
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$PagSeguro .= "&$key=$value";
}
if (function_exists('curl_exec')) {
$curl = true;
} elseif ((PHP_VERSION >= 4.3) && ($fp = @fsockopen('s sl://pags eguro. uol.com .b r', 443, $errno, $errstr, 30))) {
$fsocket = true;
} elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) {
$fsocket = true;
}
if ($curl == true) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'htt ps:/ /pagseg uro.uo l.com.br/Se curity/NP I/De fault.aspx');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, 'htt ps: // pagseguro .uol. com .br/Security/ NPI /Default .aspx');
$resp = curl_exec($ch);
curl_close($ch);
$confirma = (strcmp($resp, "VERIFICADO") == 0);
} elseif ($fsocket == true) {
$Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n";
$Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n";
$Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n";
if ($fp || $errno > 0) {
fputs($fp, $Cabecalho . $PagSeguro);
$confirma = false;
$resp = '';
while (!feof($fp)) {
$res = @fgets($fp, 1024);
$resp .= $res;
if (strcmp($res, "VERIFICADO") == 0) {
$confirma = true;
break;
}
}
fclose($fp);
} else {
echo "$errstr ($errno)<br />\n";
}
}
if ($confirma) {
// Recebendo Dados
$TransacaoID = $_POST['TransacaoID'];
$VendedorEmail = $_POST['VendedorEmail'];
$Referencia = $_POST['Referencia'];
$TipoFrete = $_POST['TipoFrete'];
$ValorFrete = $_POST['ValorFrete'];
$Extras = $_POST['Extras'];
$Anotacao = $_POST['Anotacao'];
$TipoPagamento = $_POST['TipoPagamento'];
$StatusTransacao = $_POST['StatusTransacao'];
$CliNome = $_POST['CliNome'];
$CliEmail = $_POST['CliEmail'];
$CliEndereco = $_POST['CliEndereco'];
$CliNumero = $_POST['CliNumero'];
$CliComplemento = $_POST['CliComplemento'];
$CliBairro = $_POST['CliBairro'];
$CliCidade = $_POST['CliCidade'];
$CliEstado = $_POST['CliEstado'];
$CliCEP = $_POST['CliCEP'];
$CliTelefone = $_POST['CliTelefone'];
$NumItens = $_POST['NumItens'];
if ($TransacaoID <> '') {
$select = "SELECT TransacaoID FROM pagsegurotransacoes WHERE TransacaoID = '{$TransacaoID}'";
$countTransacao = Yii::app()->db->createCommand($select)->query()->getRowCount();
if ($countTransacao == 0) {
$insert = "INSERT into pagsegurotransacoes SET TransacaoID='$TransacaoID',
VendedorEmail='$VendedorEmail', Referencia='$Referencia',TipoFrete='$TipoFrete',
ValorFrete='$ValorFrete', Extras='$Extras',
Anotacao='$Anotacao', TipoPagamento='$TipoPagamento',
StatusTransacao='$StatusTransacao', CliNome='$CliNome',
CliEmail='$CliEmail', CliEndereco='$CliEndereco',
CliNumero='$CliNumero', CliComplemento='$CliComplemento',
CliBairro='$CliBairro', CliCidade='$CliCidade',
CliEstado='$CliEstado', CliCEP='$CliCEP',
CliTelefone='$CliTelefone', NumItens='$NumItens',
coddoacao = '', Data=now();";
Yii::app()->db->createCommand($insert)->execute();
} else if ($countTransacao >= 1) {
$update = "UPDATE pagsegurotransacoes SET
TipoPagamento = '{$TipoPagamento}',
StatusTransacao = '{$StatusTransacao}'
WHERE TransacaoID = '{$TransacaoID}'";
Yii::app()->db->createCommand($update)->execute();
}
}
}
}
}