Ejemplo n.º 1
0
 public function callback()
 {
     if (!isset($this->session->data['order_id'])) {
         return $this->response->redirect($this->url->link('common/home'));
     }
     $this->load->library('cielo');
     $this->language->load('payment/cielo');
     $this->load->model('checkout/order');
     $this->load->model('payment/cielo');
     $order_id = $this->session->data['order_id'];
     $transaction = $this->model_payment_cielo->getTransactionByOrderId($order_id);
     if (!empty($transaction['tid'])) {
         $loja = new \Tritoq\Payment\Cielo\Loja();
         $loja->setAmbiente(\Tritoq\Payment\Cielo\Loja::AMBIENTE_PRODUCAO)->setUrlRetorno($this->url->link('payment/cielo/callback'))->setChave($this->config->get('cielo_chave'))->setNumeroLoja($this->config->get('cielo_afiliacao'))->setSslCertificado(DIR_SYSTEM . 'library/Tritoq/Payment/Cielo/ssl/ecommerce.cielo.com.br.cer');
         if ($this->config->get('cielo_teste') == '1') {
             $loja->setAmbiente(\Tritoq\Payment\Cielo\Loja::AMBIENTE_TESTE)->setChave(\Tritoq\Payment\Cielo\Loja::LOJA_CHAVE_AMBIENTE_TESTE)->setNumeroLoja(\Tritoq\Payment\Cielo\Loja::LOJA_NUMERO_AMBIENTE_TESTE);
         }
         $transacao = new \Tritoq\Payment\Cielo\Transacao();
         $transacao->setTid($transaction['tid']);
         $service = new \Tritoq\Payment\Cielo\CieloService(array('loja' => $loja, 'transacao' => $transacao));
         // Setando o tipo de versão de conexão SSL
         $service->setSslVersion(4);
         $service->doConsulta();
         $situacao = 'Autenticada';
         if ($this->config->get('cielo_autorizacao') != \Tritoq\Payment\Cielo\Transacao::AUTORIZAR_NAO_AUTORIZAR) {
             $service->doAutorizacao();
         }
         if ($transacao->getStatus() == \Tritoq\Payment\Cielo\Transacao::STATUS_AUTORIZADA) {
             $situacao = 'Autorizada';
             $comentario = "Situação: " . $situacao . "<br />";
             $comentario .= " Pedido: " . $order_id . "<br />";
             $comentario .= " TID: " . (string) $transacao->getTid() . "<br />";
             $comentario .= " Parcelado em: " . (string) $transacao->getParcelas() . "x";
             $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('cielo_aprovado_id'), $comentario, true);
         } else {
             $situacao = 'Não Autorizada';
             $comentario = "Situação: " . $situacao . "<br />";
             $comentario .= " Pedido: " . $order_id . "<br />";
             $comentario .= " TID: " . (string) $transacao->getTid() . "<br />";
             $comentario .= " Parcelado em: " . (string) $transacao->getParcelas() . "x";
             $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('cielo_nao_capturado_id'), $comentario, true);
         }
         if ($this->config->get('cielo_captura') && $transacao->getStatus() == \Tritoq\Payment\Cielo\Transacao::STATUS_AUTORIZADA) {
             $service->doCaptura();
         }
         if ($transacao->getStatus() == \Tritoq\Payment\Cielo\Transacao::STATUS_CAPTURADA) {
             $situacao = 'Capturada';
             $comentario = "Situação: " . $situacao . "<br />";
             $comentario .= " Pedido: " . $order_id . "<br />";
             $comentario .= " TID: " . (string) $transacao->getTid() . "<br />";
             $comentario .= " Parcelado em: " . (string) $transacao->getParcelas() . "x";
             $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('cielo_capturado_id'), $comentario, true);
         }
         $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_TRANSACAO);
         if (empty($requisicoes)) {
             $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_CAPTURA);
         }
         if (empty($requisicoes)) {
             $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_AUTORIZACAO);
         }
         if (empty($requisicoes)) {
             $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_CONSULTA);
         }
         $requisicao = current($requisicoes);
         if (is_array($requisicao)) {
             $requisicao = current($requisicao);
         }
         $xmlRetorno = $requisicao->getXmlRetorno();
         $data = $this->model_payment_cielo->parseData($xmlRetorno);
         $this->model_payment_cielo->addTransaction($data);
         return $this->response->redirect($this->url->link('checkout/success'));
     }
     return $this->response->redirect($this->url->link('checkout/failure'));
 }
Ejemplo n.º 2
0
 public function cancela()
 {
     $this->load->library('cielo');
     $this->load->language('payment/cielo');
     $this->document->setTitle($this->language->get('heading_title'));
     $this->load->model('payment/cielo');
     if ($this->validateCancelamento()) {
         $order_cielo_ids = array();
         if (isset($this->request->post['selected'])) {
             $order_cielo_ids = $this->request->post['selected'];
         } else {
             if (isset($this->request->get['order_cielo_id'])) {
                 $order_cielo_ids = array($this->request->get['order_cielo_id']);
             }
         }
         foreach ($order_cielo_ids as $id) {
             $transacao_info = $this->model_payment_cielo->getTransaction($id);
             $transacao = new \Tritoq\Payment\Cielo\Transacao();
             $transacao->setTid($transacao_info['tid']);
             $loja = new \Tritoq\Payment\Cielo\Loja();
             $loja->setAmbiente(\Tritoq\Payment\Cielo\Loja::AMBIENTE_PRODUCAO)->setChave($this->config->get('cielo_chave'))->setNumeroLoja($this->config->get('cielo_afiliacao'))->setSslCertificado(DIR_SYSTEM . 'library/Tritoq/Payment/Cielo/ssl/ecommerce.cielo.com.br.cer');
             if ($this->config->get('cielo_teste') == '1') {
                 $loja->setAmbiente(\Tritoq\Payment\Cielo\Loja::AMBIENTE_TESTE)->setChave(\Tritoq\Payment\Cielo\Loja::LOJA_CHAVE_AMBIENTE_TESTE)->setNumeroLoja(\Tritoq\Payment\Cielo\Loja::LOJA_NUMERO_AMBIENTE_TESTE);
             }
             $service = new \Tritoq\Payment\Cielo\CieloService(array('loja' => $loja, 'transacao' => $transacao));
             // Setando o tipo de versão de conexão SSL
             $service->setSslVersion(4);
             $service->doCancela();
             if ($transacao->getStatus() == \Tritoq\Payment\Cielo\Transacao::STATUS_CANCELADA) {
                 $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_CANCELA);
                 foreach ($requisicoes as $requisicao) {
                     $xmlRetorno = $requisicao->getXmlRetorno();
                     $data = $this->model_payment_cielo->parseData($xmlRetorno);
                     $this->model_payment_cielo->updateTransaction($id, $data);
                     $this->addOrderHistory($transacao_info['pedido_numero'], $this->config->get('cielo_cancelado_id'), $data['cancelamento_mensagem'], true);
                 }
                 $this->session->data['success'] = $this->language->get('text_success');
             } else {
                 $requisicoes = $transacao->getRequisicoes(\Tritoq\Payment\Cielo\Transacao::REQUISICAO_TIPO_CANCELA);
                 foreach ($requisicoes as $requisicao) {
                     $errors = $requisicao->getErrors();
                     if (!empty($errors)) {
                         $this->error = array_merge($this->error, $errors);
                     }
                 }
             }
         }
         $this->session->data['success'] = $this->language->get('text_success');
         $url = '';
         if (isset($this->request->get['filter_order_id'])) {
             $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
         }
         if (isset($this->request->get['filter_name'])) {
             $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
         }
         if (isset($this->request->get['filter_status'])) {
             $url .= '&filter_status=' . $this->request->get['filter_status'];
         }
         if (isset($this->request->get['sort'])) {
             $url .= '&sort=' . $this->request->get['sort'];
         }
         if (isset($this->request->get['order'])) {
             $url .= '&order=' . $this->request->get['order'];
         }
         if (isset($this->request->get['page'])) {
             $url .= '&page=' . $this->request->get['page'];
         }
         $this->response->redirect($this->url->link('payment/cielo', 'token=' . $this->session->data['token'] . $url, 'SSL'));
     }
     $this->getList();
 }