Ir para conteúdo
Fórum Script Brasil
  • 0

AJUDA - API CIELO 3.0


Messhias

Pergunta

Bom dia galera,

 

Estou com um problema e umas dúvidas sobre a API 3.0 da CIELO, estou tentando fazer uma requisição de venda no ambiente de testes da sandbox e mesmo assim não consigo ter nenhum tipo de retorno.

 

Estou usando o framework codeigniter e to tentando fazer através de uma controller, algo basico e a aplicação ainda está no inicio de seu desenvolvimento.

 

Tentei tanto com PHP como Javascript:

 

Script PHP da controller (na minha tentativa com o PHP)

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Pagamento extends CI_Controller {

	public function index()
	{
		$url = 'https://apiquerysandbox.cieloecommerce.cielo.com.br/1/sales/';
		$headers = array(
			'MerchantId' 	=> 'XXXXX-XXX-XXX-XXX-XXX',
			'MerchantKey' 	=>	'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
			'Content-Type'	=>	'Content-Type: application/json',
			'RequestId'		=>	rand(10,1000)
		);

		$data = array(
			"MerchantOrderId"=>rand(0,99999),
			"Customer"=>array(  
				"Name"=>"Comprador Teste"
		   ),
		);


		print_r($this->curl->submit_data($url,$data,$headers));

	}

}

/* End of file Checkout.php */
/* Location: ./application/controllers/Checkout.php */

Aqui está o script da library que eu criei para ler cURL:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Curl
{
	private $response;

	protected $ci;

	public function __construct()
	{
        $this->ci =& get_instance();
	}


	public function submit_data($url = '', $data = array(),$headers = array()){
		ini_set('max_execution_time', 300); 
		$ch = curl_init();
		$timeout = 500000;
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data,true));
		$this->response = curl_exec($ch);
		curl_close($ch);

		return $this->response;
	}

	public function setResponse($response = ""){
		$this->response = $response;
	}

	public function getResponse(){
		return $this->response;
	}

}

/* End of file Curl_library.php */
/* Location: ./application/libraries/Curl_library.php */

 

 

Achando que era um possivel problema de implementação minha no PHP eu criei uma uma requisição também com JQuery, porém, não obtive sucesso;

 

Javascript/JQuery:

<script type="text/javascript">
		$(document).ready(function() {

			$.ajaxSetup({
			    beforeSend: function(xhr) {
			        xhr.setRequestHeader("MerchantId", 'XXXXXXX-XXXX-XXXX-XXX-XXXXXXXXXXXXX');
			        xhr.setRequestHeader('MerchantKey', "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
			        xhr.setRequestHeader('X-Requested-With','XMLHttpRequest')
			    }
			});

			$.ajax({
				url: 'https://apiquerysandbox.cieloecommerce.cielo.com.br/1/sales/',
				type: 'POST',
				dataType: 'json',
        		contentType: 'application/json',
        		crossDomain:false,
				data: {
				},
				error:function(e,text,xhr) {
					console.log(e);	
				},
				complete:function(e,text,xhr){
					console.log(e);	
				}
			});
		});
	</script>

 

Link da documentação da API: https://developercielo.github.io/Webservice-3.0/

Link para criação do MerchantID e Key e chave para utilizar o sandbox: https://cadastrosandbox.cieloecommerce.cielo.com.br/

 

Estou a uns 3 dias encalhado nisso e não to conseguindo entender ainda onde foi que cometi algum erro ou se algo na doc não está claro ou se estou fazendo o procedimento errado.

 

Espero que possam me ajudar.

[EDIT]

Com o uso da cURL o php me retorna em branco, não tenho retorno de nada.

 

No javascript / jquery meu retorno é apenas "error".

[\EDIT]

Obrigado

Editado por Messhias
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Estou tendo um problema semelhante. Criei uma classe genérica para realizar as transações com a API 3.0 da Cielo. Porém só consigo o retorno {"Code": 0, "Message": "InternalError". 

$array = array();
        $array['MerchantOrderId'] = self::$_ORDER_ID;
        $array['Customer']['Name'] = self::$_CUSTOMER_NAME;
        
        $array['Payment']['Type'] = self::$_PAYMENT_TYPE;
        $array['Payment']['Amount'] = self::$_AMOUNT;
        //$array['Payment']['Provider'] = self::$_PROVIDER;
        $array['Payment']['Installments'] = self::$_Installments;
        $array['Payment']['CreditCard']['CardNumber'] = self::$_CARTAO_NUMERO;
        $array['Payment']['CreditCard']['Holder'] = self::$_CARTAO_HOLDER;
        $array['Payment']['CreditCard']['ExpirationDate'] = self::$_CARTAO_EXPIRATION;
        $array['Payment']['CreditCard']['SecurityCode'] = self::$_SECURITY_CODE;
        $array['Payment']['CreditCard']['Brand'] = self::$_BRAND;


        $json = json_encode($array);

        //var_dump($json);

        if (self::$_transaction_mode == '1') {
            $url = self::API_SENDBOX_TESTE;
        } else {
            $url = self::API_PRODUCAO;
        }

        $url = $url . '1/sales/';

        ob_start();

        //Initiate cURL.
        $ch = curl_init($url);

        //Tell cURL that we want to send a POST request.
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

        //Attach our encoded JSON string to the POST fields.
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);

        $headers = array(
            'Content-Type: application/json',
            'MerchantId: ' . self::$_MerchantId,
            'MerchantKey: ' . self::$_MerchantKey,
            'RequestId: ' . self::$_RequestId,
        );

        //Set the content type to application/json
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        //Execute the request
        curl_exec($ch);

        $result = ob_get_contents();

        ob_end_clean();
        curl_close($ch);

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...