Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ximnes

Problemas no recebimento POST Checkout Cielo.

Recommended Posts

Boa noite a todos.

Resolvendo problemas, e vindo com mais problemas rs.

 

Fiz a integração com a Cielo, porém agora estou com problemas no recebimento dos dados do pedido via POST que eles mandam na página de Notificação e Mudança de Status.

 

Estou usando o framework CodeIgniter.

 

Recebo E-mail deles com os seguintes dados.

Assunto: Checkout Cielo - Falha na tentativa de envio do POST de mudança de status

Falha na tentativa de envio do POST de mudança de status [https://cieloecommerce.cielo.com.br]

Dados do pedido

Número do pedido 15b29d12c3a24f9a9008c5ce2ad6edd6

URL de mudança de status http://tests.mubrecords.com/store/status/

Código de status HTTP 404

Conteúdo do Post

checkout_cielo_order_number 15b29d12c3a24f9a9008c5ce2ad6edd6

amount 8480

order_number 2c25c2b684564bc2c3253cb68f862362

payment_status 3

 

Meu Route.php

$route['store/notify'] = 'cart/notify/';
$route['store/status'] = 'cart/status/';

E no controller Cart.php

	public function notify(){
				$order_number = $this->input->post('order_number');

		if(isset($order_number)){
		$mod_ship = $this->input->post('shipping_type');
		$name_ship = $this->input->post('shipping_name');
		$price_ship = $this->input->post('shipping_price');
		$cep_ship = $this->input->post('shipping_adress_zipcode');
		$dist_ship = $this->input->post('shipping_adress_district');
		$city_ship = $this->input->post('shipping_adress_city');
		$state_ship = $this->input->post('shipping_state');
		$adre_ship1 = $this->input->post('shipping_adress_line1');
		$adre_ship2 = $this->input->post('shipping_adress_line2');
		$number_ship = $this->input->post('shipping_adress_number');
		$details_ship = $mod_ship.'<br>'.
						$name_ship.'<br>'.
						$price_ship.'<br>'.
						$cep_ship.'<br>'.
						$state_ship.'<br>'.
						$city_ship.'<br>'.
						$adre_ship1.', '.$number_ship.', '.$adre_ship2.', '.$dist_ship;
						$valor_total_cf = $valor_total + $price_ship;
						
		$data = array(
			'details_ship' => $details_ship,
			'order_price' => $valor_total_cf,
			'order_shipping' => $price_ship,
			'order_status' => $this->input->post('payment_status'),
			'order_tid'	=> $this->input->post('tid')
		);

		$myOrder = $this->store_model->upMyOrders($order_number, $data);
		
		echo '<status>OK</status>';

		$this->load->view('store/notify');
		} else {
		redirect(base_url());
		}

	}
	public function status(){
		$order_number = $this->input->post('order_number');
		$data = array(
			'order_status' => $this->input->post('payment_status'),
		);

        $myOrder = $this->store_model->upMyOrders($order_number, $data);
		echo '<status>OK</status>';
		$this->load->view('store/status');
	}

E o Store_model.php

		public function upMyOrders($order_number, $data){
			$query = $this->db->where(array('order_number' => $order_number))
							  ->update('tb_store_orders', $data);
							  return true;
		}

Tem algo de errado? Alguém pra dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A Cielo me mandou um E-mail avisando que se estiver no modo de teste, as urls de notificação e status não vão funcionar,

Então eu desativei o modo teste, porém o problema continua.

Nenhum dado muda no banco de dados.

 

Fiz uma página notify.php e botei na pasta public:

				$order_number = $_POST['order_number'];		if(isset($order_number)){$host = "host";$dbname = "bd";$userdb = "user";$user_pass = "pass";$pdo = new PDO("mysql:host=$host; dbname=$dbname", $userdb, $userpass);$pdo->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$sql = 'UPDATE `tb_store_orders` SET `details_ship` = :details_ship, `order_shipping` = :price_ship, `order_status` = :order_status, `order_tid` = :order_tid WHERE `order_number` = :order_number';				$mod_ship = $_POST['shipping_type'];		$name_ship = $_POST['shipping_name'];		$price_ship = $_POST['shipping_price'];		$cep_ship = $_POST['shipping_adress_zipcode'];		$dist_ship = $_POST['shipping_adress_district'];		$city_ship = $_POST['shipping_adress_city'];		$state_ship = $_POST['shipping_state'];		$adre_ship1 = $_POST['shipping_adress_line1'];		$adre_ship2 = $_POST['shipping_adress_line2'];		$number_ship = $_POST['shipping_adress_number'];		$details_ship = $mod_ship.'<br>'.						$name_ship.'<br>'.						$price_ship.'<br>'.						$cep_ship.'<br>'.						$state_ship.'<br>'.						$city_ship.'<br>'.						$adre_ship1.', '.$number_ship.', '.$adre_ship2.', '.$dist_ship;		$order_status = $_POST['payment_status'];		$order_tid = $_POST['tid'];  $statement = $pdo->prepare($sql); $statement->bindValue(":details_ship", $details_ship); $statement->bindValue(":price_ship", $price_ship); $statement->bindValue(":order_status", $order_status); $statement->bindValue(":order_tid", $order_tid); $statement->bindValue(":order_number", $order_number); 						$count = $statement->execute();  $pdo = null; 		echo '<status>OK</status>';		}		echo 'Nenhum';

botei a url no backoffice para apontar pra lá, porém continua sem mudar o BD

 

Lembrando que não tenho como ver essa página por que não estarei enviando post nenhum para ela, recebo os $_POST da API da Cielo

 

desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

O tópico é bem antigo e você provavelmente já resolveu o seu problema.

Mas o script que você passou vai sempre retornar o termo: Nenhum mesmo que encontre o número da ordem.

Isto é o desejado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal,

 

Fiz a instalacao recente da Integracao CheckOut Cielo e tenho os mesmos problemas.

 

E ai alguem para ajudar ?
Tenho o mesmo problema e nao consegui resolver ate agora. loja parada por conta disso.

Lembrando que nao tenho desenvolvedor, e o desenvolvedor do plugin que uso para Woocommerce nao responde a gente em tempo habil.
Ja verifiquei no meu servor se estava bloqueando alguma coisa e informaram que nao tem nada bloqueando. Lembrando tambem que meu servidor é LOCAWEB.

Parece que é um monte de leigo procurando solucao para este caso viu, e nao achei nada que posso esta causando o problema a nao ser problema de desenvolvimento sei la.

MEUS PROBLEMAS SAO 2:
PROBLEMA 1 – Checkout Cielo – Falha na tentativa de envio do POST de notificação.
PROBLEMA 2 – Falha na tentativa de envio do POST de mudança de status [https://cieloecommerce.cielo.com.br]

Alguem para ajudar ou informar como solucionar o caso?

Em 17/10/2016 at 20:18, ZENDMaN disse:

O tópico é bem antigo e você provavelmente já resolveu o seu problema.

Mas o script que você passou vai sempre retornar o termo: Nenhum mesmo que encontre o número da ordem.

Isto é o desejado?

Sera que voce tem noção do que pode ser e como resolver ?

Fiz a instalacao recente da Integracao CheckOut Cielo e tenho os mesmos problemas.

 

Tenho o mesmo problema e nao consegui resolver ate agora. loja parada por conta disso.

Lembrando que nao tenho desenvolvedor, e o desenvolvedor do plugin que uso para Woocommerce nao responde a gente em tempo habil.
Ja verifiquei no meu servor se estava bloqueando alguma coisa e informaram que nao tem nada bloqueando. Lembrando tambem que meu servidor é LOCAWEB.

Parece que é um monte de leigo procurando solucao para este caso viu, e nao achei nada que posso esta causando o problema a nao ser problema de desenvolvimento sei la.

MEUS PROBLEMAS SAO 2:
PROBLEMA 1 – Checkout Cielo – Falha na tentativa de envio do POST de notificação.
PROBLEMA 2 – Falha na tentativa de envio do POST de mudança de status [https://cieloecommerce.cielo.com.br]

Alguem para ajudar ou informar como solucionar o caso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera bom dia estou com problema com a integração chekout cielo.

O sistema já esta tudo ok, porém não recebo nenhum post de notificação e nem de mudança de status, já liguei na cielo já olhei manual e nada, eu preciso saber quais parâmetros eu preciso ter na pagina que eu configurei para receber as urls de retorno.

Estou usando php e MySQL(phpmyadmin) será que alguem pode me ajudar? estou desesperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clovis.sardinha
      Como fazer para colocar um spinner antes de carregar os dados do bd? Eu clico no link e entra na função do controle e só vai para a página da views quando já está pronto a query. Vi uns exemplos de colocação de spinner, mas se a página ainda não apareceu como faço? Vou anexar a função que chama a página para facilitar. 
      public function inativos()  {     $session = \Config\Services::session();     $pager = \Config\Services::pager();     $usuarios=$this->usuarios->getInativos();//faz a query no bd.     $dados=[         'usuarios'=>$usuarios,         'pager'=>$this->usuarios->pager,     ];     echo view('Admin/Relatorios/listaInativos',$dados); }   
    • Por mark1978
      Boa noite srs, tem o código abaixo e esta funcionando normal e carregando o Qrcode no HTML na soma.
      Porém gostaria de alterar e que fosse da seguinte forma:
      Se "totalServico" for menor que "totalProdutos" e diferente de zero então carregue o Qr Code com esse valor
      Se não o valor for "0,00" carregue o valor "totalProdutos". Essa finalidade é para ter uma opção de desconto.
       
      <?php use Piggly\Pix\StaticPayload; class Os_model extends CI_Model { public function getProdutos($id = null) { $this->db->select('produtos_os.*, produtos.*'); $this->db->from('produtos_os'); $this->db->join('produtos', 'produtos.idProdutos = produtos_os.produtos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function getServicos($id = null) { $this->db->select('servicos_os.*, servicos.nome, servicos.preco as precoVenda'); $this->db->from('servicos_os'); $this->db->join('servicos', 'servicos.idServicos = servicos_os.servicos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function valorTotalOS($id = null) { $totalServico = 0; $totalProdutos = 0; if ($servicos = $this->getServicos($id)) { foreach ($servicos as $s) { $totalServico = $totalServico + $s->preco; } } if ($produtos = $this->getProdutos($id)) { foreach ($produtos as $p) { $totalProdutos = $totalProdutos + $p->subTotal; } } return ['totalServico' => $totalServico, 'totalProdutos' => $totalProdutos]; } public function getQrCode($id, $pixKey, $emitente) { if (empty($id) || empty($pixKey) || empty($emitente)) { return; } $result = $this->valorTotalOS($id); $amount = round(floatval($result['totalServico'] + $result['totalProdutos']), 2); if ($amount <= 0) { return; } $pix = (new StaticPayload()) ->applyValidCharacters() ->applyUppercase() ->setPixKey(getPixKeyType($pixKey), $pixKey) ->setMerchantName($emitente->nome, true) ->setMerchantCity($emitente->cidade, true) ->setAmount($amount) ->setTid($id) ->setDescription(sprintf("%s OS %s", $emitente->nome, $id), true); return $pix->getQRCode(); } }  

    • Por Samuel Pietro
      Olá pessoal!

      Preciso da ajuda de vocês no seguinte!
      Tenho um arquivo retornos.json
       
      { "retornos": [ { "id": 1, "sigla": "00", "nome": "Efetuado" }, { "id": 2, "sigla": "01", "nome": "Inválido" }, { "id": 3, "sigla": "02", "nome": "Corrompido" } ] }
      E na minha aplicação feita com CodeIgniter tenho uma consulta que me mostra a sigla que está cadastrada no BD.
       
      foreach ($results as $r) {  $retorno = $r->codRetorno; } 
      Eu preciso que essa consulta ao me retornar a sigla 02 por exemplo o echo apresente o "nome" para tal "sigla" que esta cadastrada no JSON.

      No caso seria a seguinte lógica: 
      if ("$retorno" == JSON["sigla"]){ echo JSON["nome"];  } //ESTE NÃO É UM CÓDIGO VÁLIDO, É APENAS PARA FINS DE ENTENDER A LÓGICA DO QUE EU PRECISO. // PS. ESSA LOGICA PRECISA SER APLICADA DENTRO DE UM FOREACH COM MILHARES DE REGISTROS.
      Como eu posso fazer isso?
       
    • Por buganti
      Olá!
       
      Estou me familiarizando com o codeigniter e desenvolvendo um site, a estrutura dele montei usando o conceito de uma página só, então eu tenho algumas section que ao clicar nos botões do menu a página vai até a section referenciada, porém, me surgiu uma questão, uma dessas section terá referências a outras páginas separadas, por exemplo, terei alguns cards com produtos, ao clicar em algum desses cards abrirá uma nova página com mais detalhes sobre esse produto, aí nessa página o meu será o mesmo, via template, só que ao clicar no botões ele busca as referências das section da página principal (única) e aí não funciona para voltar para lá, como eu deveria fazer essa referência de forma que funciona-se para ambas as situações?
       
      Não sei se fui clara na minha dúvida, se caso for necessário posso tentar me explicar melhor.
       
      Desde já agradeço.
    • Por tncardoso
      Fala Pessoal... estou tendo algumas dificuldades num projeto pessoal que estou desenvolvendo com o PHP CodeIgniter.
      Estou tentando mudar o caminho da pagina inicial, para um template que eu baixei e configurei dentro deste projeto.

      Ao fazer isso.. me deparei com o seguinte erro...
      A PHP Error was encountered
      Severity: Notice
      Message: Undefined property: Home::$template
      Filename: controllers/Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line: 9
      Function: _error_handler
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
      An uncaught Exception was encountered
      Type: Error
      Message: Call to a member function show() on null
      Filename: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
       
      Em caso de Dúvida, segue aqui também um pouco do arquivo Home.php que estou trabalhando.
      <?php defined('BASEPATH') OR exit('No direct script access allowed');   class Home extends CI_Controller {          public function index()     {         // $this->load->view('home');         $this->template->show('home');     } }  
       
      Aguardo Resposta.
      Obrigado...
       
      Thiago Cardoso
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.