/**
  * Obtem os dados dos gateways em uso e processa
  */
 public static function sincronizarGateways()
 {
     // Obter a transação retornada
     // Verificar situação
     $dateTimeZoneTaipei = new DateTimeZone('America/Sao_Paulo');
     $dateTimeTaipei = new DateTime("now", $dateTimeZoneTaipei);
     $timeOffset = $dateTimeTaipei->getOffset();
     // Filtro de datas (1 mes)
     $timestamp = time() + $timeOffset;
     $initialDate = gmdate("Y-m-d\\TH:i:s\\Z", $timestamp - 30 * 24 * 60 * 60);
     $finalDate = gmdate("Y-m-d\\TH:i:s\\Z", $timestamp);
     // Por credencial
     /* @var $integracoes Integracao[] */
     $integracoes = Integracoes::getInstance()->getAll();
     foreach ($integracoes as $integracao) {
         //            var_dump($integracao);
         if ($integracao->servico == 'PagSeguro') {
             include_once PLUGINPATH . '/vendor/PagSeguro/PagSeguroLibrary.php';
             echo "<h1>{$integracao->titulo} ({$integracao->servico})</h1>";
             /** @var $transacoes PagSeguroTransactionSearchResult */
             $transacoes = PagSeguroUtil::getTransacoesDatas($integracao, $initialDate, $finalDate);
             //                continue;
             if (get_class($transacoes) == 'PagSeguroTransactionSearchResult') {
                 PagSeguroUtil::processarTransacoes($integracao, $transacoes);
             } else {
                 echo "Falha ao obter transações<br>";
             }
         } else {
             if ($integracao->servico == 'Cielo') {
                 // Obter todos os pedidos locais - sob algum filtro
                 $transcacao = CieloUtil::getTransacaoPedido($integracao, 53);
                 var_dump($transcacao);
                 //                $transacoes = CieloUtil::getTransacoesDatas($integracao, $initialDate, $finalDate);
                 //                continue;
                 //                if (get_class($transacoes) == 'PagSeguroTransactionSearchResult') {
                 //                    PagSeguroUtil::processarTransacoes($integracao, $transacoes);
                 //                } else {
                 //                    echo "Falha ao obter transações<br>";
                 //                }
             }
         }
     }
     echo "<br><br>Fim de sincronização<br><br>";
 }
 public function processarTransacaoCielo($transcao)
 {
     // Descer dados
     $status = $transcao['payment_status'];
     $id_inscricao = $transcao['order_number'];
     $valorBruto = $transcao['amount'];
     $data = strtotime($transcao['created_date']);
     $codigo = $transcao['checkout_cielo_order_number'];
     $forma_pagamento = $transcao['payment_method_type'];
     //        payment_method_type=1,
     //        payment_method_brand=1,
     //        payment_status=7
     //        amount=1000
     // 1 - identificar inscrição
     /** @var $inscricao Inscricao */
     $inscricao = Inscricoes::getInstance()->getById($id_inscricao);
     if ($inscricao == null) {
         return "Inscrição não encontrada no banco de dados: " . $id_inscricao;
     }
     //1	Pendente (Para todos os meios de pagamento)
     //2	Pago (Para todos os meios de pagamento)
     //3	Negado (Somente para Cartão Crédito)
     //5	Cancelado (Para cartões de crédito)
     //6	Não Finalizado (Todos os meios de pagamento)
     //7	Autorizado (somente para Cartão de Crédito)
     // Pagamento
     // order_number=43,amount=1000,checkout_cielo_order_number=43f39f6b3dff4cbeab39c05b2ea4e68c,"created_date=08/12/2015 14:32:50","customer_name=Tiago Gouvêa",customer_phone=3288735683,customer_identity=06804501659,customer_email=tiago@phormar.com.br,shipping_type=5,shipping_price=0,payment_method_type=1,payment_method_brand=1,payment_maskedcreditcard=406655******7460,payment_installments=1,payment_antifraudresult=1,payment_status=7,tid=1070722607000000002A
     // Mudança de Status
     // checkout_cielo_order_number=43f39f6b3dff4cbeab39c05b2ea4e68c,amount=1000,order_number=43,payment_status=7
     //        "data=2016-01-27 - 18:15:48",checkout_cielo_order_number=cf00b44049464f04a4f1a726ab76be33,amount=43000,order_number=46,payment_status=2
     // Pago?
     if ($status == 2 || $status == 7) {
         // 2 - Pago / 7 - Autorizado - Sim, pago!
         if ($inscricao->confirmado != 1 || $inscricao->forma_pagamento_gateway != $forma_pagamento || $inscricao->valor_pago != $valorBruto || $inscricao->forma_pagamento != 'Gateway' || $inscricao->confirmado == 0 && strtotime($inscricao->data_cancelamento) < $data) {
             $inscricao->_observacao = "Inscrição confirmada";
             $inscricao->confirmarPagamento($status, $data, $valorBruto, null, null, $codigo, null, $forma_pagamento);
         }
         if ($inscricao->status_gateway != $status) {
             $inscricao = $inscricao->registrarStatusGateway(null, $codigo, $status, $forma_pagamento);
         }
     } else {
         if ($status == 3 || $status == 5 || $status == 6) {
             // 3 - Negado / 5 - Cancelada / 6 - Não Finalizado
             if ($inscricao->confirmado == '1' && $inscricao->forma_pagamento != 'Dinheiro' && $inscricao->forma_pagamento != 'Depósito' && strtotime($inscricao->data_confirmacao) < strtotime($data)) {
                 $inscricao->_observacao = "Pagamento cancelado (desfeito)";
                 $inscricao->cancelarFalhaPagamento(true);
             } else {
                 if ($inscricao->confirmado === null) {
                     $inscricao->_observacao = "Pagamento cancelado";
                     $inscricao->cancelarFalhaPagamento();
                 }
             }
         } else {
             if ($status == 600 || $status == 700) {
                 // Ainda não - Registrar o que? A situação né...
                 // Se já estava pago e foi para Cancelada, alterar registro, avisar
                 // Se já estava pago, registrar falha, pois é um estorno ou coisa do tipo
                 // Pensar, porque pode ter sido paga em dinheiro, ai tem que reativar e tal, ignorar o cancelado
                 // Cancelada
                 //            if ($inscricao->confirmado == '1' && $inscricao->forma_pagamento != 'Dinheiro' && $inscricao->forma_pagamento != 'Depósito' && strtotime($inscricao->data_confirmacao)<strtotime($data_pagseguro)) {
                 //                $inscricao->_observacao = "Pagamento cancelado (desfeito)";
                 //                $inscricao->cancelarFalhaPagamento(true);
                 //            } else if ($inscricao->confirmado === null) {
                 //                $inscricao->_observacao = "Pagamento cancelado";
                 //                $inscricao->cancelarFalhaPagamento();
                 //            }
                 // Se foi pago em dinheiro, a inscrição permanece confirmada
             } else {
                 // Registrar status apenas quando não confirmado
                 if ($inscricao->confirmado == null && $inscricao->vencido == null) {
                     $inscricao = $inscricao->registrarStatusGateway(null, $codigo, $status, $forma_pagamento);
                 }
             }
         }
     }
     $inscricao->_status_gateway = $status . " - " . \lib\CieloUtil::getStatusTituloString($status);
     $inscricao->save();
     return $inscricao;
 }