Ir para conteúdo

POWERED BY:

Arquivado

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

redstyle

[Resolvido] cURL com JSON para API do Mercado Pago

Recommended Posts

Olá pessoal, por mais que eu tente enviar o json pra api do Mercado Pago não vai. Olha o script que estou usando:

 

class MercadoPago {
 public $ch;

 public function __construct(){
  $this->ch = curl_init();

}

function __destruct(){
  curl_close($this->ch);
}

 public function acessar(){

   $ar_dados = array(
     'grant_type'    => 'client_credentials', 
     'client_id'     => '6..7', 
     'client_secret' => 'VaPf2A3.........J39jYkM3oziMzqaL'
   );



   $ar_headers = array(
     'Accept: application/json',
     'Content-Length: '.strlen(http_build_query($ar_dados)),
     'Content-Type: application/x-www-form-urlencoded',
     'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0'
   );

   curl_setopt($this->ch, CURLOPT_URL, 'https://api.mercadolibre.com/oauth/token');
   curl_setopt($this->ch, CURLOPT_POST, 1);
   curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($ar_dados));
   curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($this->ch, CURLOPT_HTTPHEADER, $ar_headers);
   $retorno = curl_exec($this->ch);
   var_dump($retorno);
   //return true;
 }
}

$ml = new MercadoPago;
var_dump($ml->acessar());

 

Retorna sempre false no $retorno. Alguém ai já trabalhou com a API do Mercado Pago?

 

Bom o problema erro uma validação de certificado. Esse script está funcionando normalmente:

 

<?php
class MercadoPago {
 public $ch;

 public function __construct(){
  $this->ch = curl_init();

}

function __destruct(){
  curl_close($this->ch);
}

 public function acessar(){

   $ar_dados = array(
     'grant_type'    => 'client_credentials', 
     'client_id'     => '8..3', 
     'client_secret' => 'VaPf2A3f...............kM3oziMzqaL'
   );



   $ar_headers = array(
     'Accept: application/json',
     'Content-Length: '.strlen(http_build_query($ar_dados)),
     'Content-Type: application/x-www-form-urlencoded',
     'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0'
   );

   curl_setopt($this->ch, CURLOPT_URL, 'https://api.mercadolibre.com/oauth/token');
   curl_setopt($this->ch, CURLOPT_POST, true);
   curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($ar_dados));
   curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($this->ch, CURLOPT_HTTPHEADER, $ar_headers);
   curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);

   $retorno = curl_exec($this->ch);
   return $retorno;
   //var_dump($retorno);
   //return true;
 }
}

$ml = new MercadoPago;
echo '<pre>';
print_r(json_decode($ml->acessar()));
echo '</pre>';
?>

 

Agora já vi um biblioteca no caso para o mercado livre https://github.com/foocoders/meli-php que não faz o uso do

 

curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);

 

Queria saber como.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!!!

 

Coloquei os parametros para o post em uma string exatamente como abaixo e passei para o CURLOPT_POSTFIELDS.

 

$paramToken = "grant_type=client_credentials&client_id=".$CLIENT_ID."&client_secret=".$CLIENT_SECRET;

curl_setopt($this->ch, CURLOPT_POSTFIELDS, $paramToken);

 

Ae funcionou!!

 

:clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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