• 0
Sign in to follow this  
Leandro Lambertini

Delphi - Erro ao publicar um produto

Question

Olá pessoal tudo bem?

Estou desenvolvimento uma integração utilizando o Delphi como linguagem, estou tentando publicar um primeiro item. Já gerei o Access Token, já consegui consumir o post para criar um usuário de teste, porém ao tentar publicar um produto estou tendo o retorno:

HTTP/1.1 403 Forbidden

Tenho a impressão de ser algo relacionado a permissão, porém verfiquei que estou com as seguintes permissões:

Read, Offline Access e Write

Estou enviando o meu item desta forma:

  Json := '{'+
  '"title":"Item de teste - Nao Ofertar",'+
  '"category_id": "MLB3530",'+
  '"price":1,'+
  '"currency_id":"BRL",'+
  '"available_quantity":1,'+
  '"buying_mode":"buy_it_now",'+
  '"listing_type_id":"gold_special",'+
  '"condition":"new",'+
  '"description": "Item de test - No Ofertar",'+
  '"video_id": "YOUTUBE_ID_HERE",'+
  '"warranty": "12 months",'+
  '"pictures":['+
  '{"source":"http://mlb-s2-p.mlstatic.com/976752-MLB26236865495_102017-I.jpg"}'+
  ']'+
  '}';

  JsonToSend := TStringStream.Create( UTF8Encode(Json) );
  Response := TStringStream.Create('');
  IdHTTPMercadoLivre := TIdHTTP.create(nil);

  try
    IdHTTPMercadoLivre.Request.ContentType             := 'application/json';
    IdHTTPMercadoLivre.Request.Method                  := 'POST';

    IdHTTPMercadoLivre.Post('https://api.mercadolibre.com/items?access_token=APP_USR-6851505103268247-102506-9bf0a1a3b3f7371eafaaa1ef0a6f15a8__I_H__-279710442', JsonToSend, Response);

    Memo1.Lines.Text := Response.DataString;
  except on E: EIdHTTPProtocolException do
    begin
      Memo1.Lines.Text := E.ClassName + ': '+E.Message;
    end;
  

Será que alguém já passou por isso?

Muito obrigado galera!

 

 

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0
"video_id": "YOUTUBE_ID_HERE",

Isto já é uma coisa para dar errado, pois não há ID nenhum.
Perdi a prática com Delphi, já se vão 13 anos...
A posição do JsonToSend é o body? Acho que sim.
No post mande também o sellerid

 

 

 

Share this post


Link to post
Share on other sites
  • 0

Olá Rodrigo, vlw pelas dicas ai!

Mas olha só eu descobri o que é, eu consumir o método pelo Postman, e lá retornou:

 

{
    "message": "seller.unable_to_list",
    "error": "User LALE5273790 (279710442) is unable to list.",
    "status": 403,
    "cause": [
        "identification_pending",
        "identification_empty_or_invalid_doc_type"
    ]
}

Vou correr atrás aqui de preencher a identificação e acredito que já vai dar certo!

Obrigado!

Share this post


Link to post
Share on other sites
  • 0

Neste caso acredito que o problema não está nos dados que enviara, a mensagem diz que o vendedor é incapaz de publicar, isto está relacionado à conta, tive este problema quando comecei, a solução foi publicar um produto manualmente, logo através da API foi de boa.

Edited by adriano

Share this post


Link to post
Share on other sites
  • 0
17 hours ago, adriano said:

Neste caso acredito que o problema não está nos dados que enviara, a mensagem diz que o vendedor é incapaz de publicar, isto está relacionado à conta, tive este problema quando comecei, a solução foi publicar um produto manualmente, logo através da API foi de boa.

Boa Adriano, então a mensagem de retorno deve ser a que ele viu no POSTMAN, será que não voltou no código?
Então, entendo que há um procedimento que impede o cadastramento automático do primeiro anúncio de um vendedor novo.
Não lembro de ter ocorrido isto com conta de teste. E não posso mais cadastrar usuários convencionais no ML. (Uma antiga rusga...)

Share this post


Link to post
Share on other sites
  • 0

Então pessoal era isso mesmo, meu vendedor não estava com os dados completos. 

Cadastrei manualmente um item no ML e depois disso liberou para publicar via API. 

Infelizmente pelo delphi não consegui ter o retorno completo do erro, apenas o código do mesmo.

Aproveitando, existe algum método para verificar se o Access Token ainda é valido?

 

Edited by Leandro Lambertini

Share this post


Link to post
Share on other sites
  • 0
4 hours ago, Leandro Lambertini said:

Aproveitando, existe algum método para verificar se o Access Token ainda é valido?

é gastar tempo verificar se ele ainda é válido, faça um GET deu retorno de erro de token expirado faça a renovação e faça o GET de novo.
Guarde a informação de prazo do token e confie nela, é muito baixo o número de vezes que ela falha.
Eu tenho sistema que roda 24hs por dia e deixo um cron para renovação a cada 1h menos do prazo :)

 

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
Sign in to follow this