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')); }
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(); }