• 1
danilo.magrini

Nova API de mensagens

Question

Alguém aqui está conseguindo usar a nova API de mensagens pós-venda?

Quote

curl -X GET “https://api.mercadolibre.com/messages/packs/$pack_id/sellers/$user_id?access_token=$ACCESS_TOKEN”

 

Aqui só fica respondendo Forbidden

Quote

{
    "message": "Forbidden",
    "error": "forbidden",
    "status": 403,
    "cause": []
}

 

Share this post


Link to post
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Realmente esta bugado. Tentei enviar o header "X-Pack-Format" para ver, mas mesmo assim da esse erro...

Consegui consultar esse usando o header, mas o que mencionou, realmente não funciona.

GET “https://api.mercadolibre.com/messages/{message_id}?access_token=$ACCESS_TOKEN”
Header:
key: “X-Pack-Format”
value: true

Share this post


Link to post
Share on other sites
  • 0
34 minutes ago, Wesley Nascimento said:

O endpoint mencionado está mal documentado e a equipe responsável já foi notificada para a correção.

Peço que para essa documentação específica utilizem a documentação em inglês.

https://developers.mercadolibre.com.ar/en_us/messaging-after-sale

Atenciosamente,
Wesley.

Eu já tinha verificado a documentação em inglês, mas acontece que a Ingles não esta atualizada para as novas regras… 

Pois pelo que entendi, muita coisa mudou… Agora as mensagens deverão ser enviadas para o PACK_ID quando for de carrinho de compras, para listar as mensagens do pacote, devo solicitar pelo pack_id tmb…  e nada sobre isso conta na documentação em Ingles.

 

De uma verificada.

Share this post


Link to post
Share on other sites
  • 0
3 hours ago, rodrigojob said:

Ronaldo, 

Aqui está normal, igual a antes

Eu acho que estamos falando de coisas diferentes.

Eu estou falando sobre a mudança do ML, de gerenciar as mensagens por carrinho e não por pedido.

http://prntscr.com/oj7c3l

Novo GET para listar todas as mensagens de um pacote (carrinho de compras)

curl -X GET “https://api.mercadolibre.com/messages/packs/$pack_id/sellers/$user_id?access_token=$ACCESS_TOKEN”

Novo sistema para enviar mensagem para o carrinho, ao invés da order.

POST "https://api.mercadolibre.com/messages/packs/$pack_id/sellers/$user_id?access_token=$ACCESS_TOKEN"

Você conseguiu usar e adaptar seu sistema para esse novo padrão de mensagens do MercadoLivre?

Pois para mim esta dando erro… Não consigo puxar as mensagens e muito menos enviar uma mensagem via API para o carrinho...

 

Usar da forma que era antes eu consigo, mas não desse novo formato, o que parece é que ta bugado
https://developers.mercadolivre.com.br/pt_br/mensagens-post-venda

Share this post


Link to post
Share on other sites
  • 0

Consegui dessa forma usando PHP

<?php 

 require 'Meli/meli.php'; // Arquivo Disponível no SDK PHP da API do Mercado Livre (Link na descrição)

 $appId = ""; // Seu ID da aplicação. Exemplo: 6371234567891234
 $secretKey = ""; // Exemplo: 6WV51Mau5HzOn0UjA7kHyhsugbdiojeD
 $meli = new Meli($appId, $secretKey);
 $access_token ""; // Access Token obtido na autenticação. Exemplo: APP_USR-6371234567891234-123456-12345a12345a12c123456a12ce12345a-123456789";
 $NumeroPedido ""; // Exemplo: 2234567890";
 $Mensagem = "Mensagem de teste";

//Obter o user_id do remetente nos dados do usuário

$URLObterDadosUsuario = "/users/me?access_token=".$access_token;
$response = $meli->get($URLObterDadosUsuario); // Requisição utilizando o método get da classe Meli, disponível no SDK do Mercado Livre 

if($response['httpCode']==200){

  $DadosUsuario = $response['body'];				
  $user_id = $DadosUsuario->id;
} else{
	die("erro ao acessar os dados do usuário");
}

// Obter o user_id do destinatário nos dados do pedido 

$URLDadosPedido = "/orders/search?seller=".$user_id."&q=".$NumeroPedido."&access_token=".$access_token;
$response = $meli->get($URLDadosPedido); // Requisição utilizando o método get da classe Meli, disponível no SDK do Mercado Livre 

if($response['httpCode']==200){

  $DadosDoPedido = $response['body']->results[0];
  $DadosDoComprador = $DadosDoPedido->buyer;		
  $user_id_destinatario = $DadosDoComprador->id; 
} else{
	die("erro ao acessar os dados do pedido");
}

// Url para envio da mensagem

$URL = "https://api.mercadolibre.com/messages?access_token=".$access_token."&application_id=".$appId;

// Montar Array e Json com os dados

$data['from'] = array('user_id' => $user_id );
$data['to'][] = array(
"user_id" =>  $user_id_destinatario,
"resource" => "orders",
"resource_id" => $NumeroPedido,
"site_id" =>  "MLB"
);    
$data['text'] = array('plain' => $Mensagem);
$json = json_encode($data); 

//Enviar a mensagem por requisição post usando a biblioteca curl

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "$URL",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>  $json,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"cache-control: no-cache"
),
));

$response = curl_exec($curl);
$erro = curl_error($curl);

$Resultado = json_decode($response);
$Status = $Resultado[0]->status;

if ($Status == "available" ) {
	echo "Mensagem enviada";	
}else{
	echo "Mensagem não enviada";
}


 ?>

 

Exemplo de resposta do servidor 

[
   {
      "_id":"59327ef371962c42abb1f6169bc2157d",
      "message_id":"59327ef371834c42abb1f6169bc2157d",
      "date_received":"2019-08-02T23:17:03.214Z",
      "date":"2019-08-02T23:17:03.214Z",
      "date_available":"2019-08-02T23:17:03.214Z",
      "date_notified":null,
      "date_read":null,
      "from":{
         "user_id":"269268456",
         "email":null,
         "name":null
      },
      "to":[
         {
            "user_id":"86394575",
            "email":null
         }
      ],
      "subject":null,
      "text":{
         "plain":"Mensagem de teste"
      },
      "attachments":[

      ],
      "attachments_validations":[

      ],
      "headers":null,
      "site_id":"MLB",
      "resource":"orders",
      "resource_id":"2090750785",
      "status":"available",
      "moderation":{
         "status":"clean",
         "date_moderated":"2019-08-02T23:17:03.276Z",
         "source":"online"
      },
      "client_id":null
   }
]

SDK PHP da API do Mercado Livre

https://github.com/mercadolibre/php-sdk

 

Ivan Melo do APPLoja

 

Share this post


Link to post
Share on other sites
  • 0

Estou tentando integrar com a parte do pacote também mas ao enviar o post esta retornando essa mensagem:

 

{"message":"The originalResourceId cannot be null","error":"bad_request","status":400,"cause":[]}

 

alguém teve esse problema?

Share this post


Link to post
Share on other sites
  • 0

Guiaondeten, Esse método que utilizou é o antigo...
Agora vai mudar o JSON, as mensagens agora serão atreladas ao PACK_ID ao invés da ORDER_ID.

E realmente, como o rodrigojob mencionou acima, você poderia usar o SDK para obter o json, acaba sendo mais pratico.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now