/** * 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; }