• 0
Ricardo Copano

incluir produto no ml com php

Question

Boa tarde

Estou começando a estudar a API meli.php. Já consegui conectar  ao ML 

 

Gostaria de um exemplo para incluir produto utilizando php com as seguintes caracteristicas:

1) Seleção de categoria e subcategoria para o produto (obtendo via API do MLB)

2) Enviar ao ML criando novo anuncio do produto SEMPRE QUE ESTE NÂO EXISTA AINDA caso existir, atualizar campos

Grato

 

 

 

 

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0
32 minutes ago, Ricardo Copano said:

Boa tarde

Estou começando a estudar a API meli.php. Já consegui conectar  ao ML 

 

Gostaria de um exemplo para incluir produto utilizando php com as seguintes caracteristicas:

1) Seleção de categoria e subcategoria para o produto (obtendo via API do MLB)

2) Enviar ao ML criando novo anuncio do produto SEMPRE QUE ESTE NÂO EXISTA AINDA caso existir, atualizar campos

Grato

 

 

 

 

Você tem de ler esse aqui

https://developers.mercadolibre.com/pt-br/api-docs-pt-br/categorizacao-de-produtos

depois ler esse

https://developers.mercadolibre.com/pt_br/publicacao-de-produtos

Você pode testar usando o postman e se tudo estiver certo é só fazer usando curl . O postman gera o básico para tu entender.

 

 

Share this post


Link to post
Share on other sites
  • 0
20 hours ago, Ricardo Copano said:

Boa tarde

Estou começando a estudar a API meli.php. Já consegui conectar  ao ML 

 

Gostaria de um exemplo para incluir produto utilizando php com as seguintes caracteristicas:

1) Seleção de categoria e subcategoria para o produto (obtendo via API do MLB)

2) Enviar ao ML criando novo anuncio do produto SEMPRE QUE ESTE NÂO EXISTA AINDA caso existir, atualizar campos

Grato

 

 

Olá Ricardo, a API oferece as ferramentas para isso (conforme dito pelo @gbandoni), já a execução disso e como vai trabalhar (por exemplo verificar se existe o produto) isto já é a parte de lógica da sua aplicação... qualquer dúvida sobre a API estamos aí para ajudar... abraços

Share this post


Link to post
Share on other sites
  • 0

Estou estudando o processo conforme vocês indicaram. 

vejam o código:

HTML

		<select  id='categorias' name='categoria'></select> 
        <button onclick="subcategoria();">ok</button>
        <br>

        <select  id='subcategorias' name='subcategoria'></select>  
        <button onclick="subcategoria2();">ok</button>
        <br>

        <select  id='subcategorias2' name='subcategoria2'></select>
        <button>ok</button>
        <br>

Javascript

function categoria() {
                let dropdown = document.getElementById('categorias');
                dropdown.length = 0;

                let defaultOption = document.createElement('option');
                defaultOption.text = 'Escolha categoria';

                dropdown.add(defaultOption);
                dropdown.selectedIndex = 0;

                const url = 'https://api.mercadolibre.com/sites/MLB/categories';


                const request = new XMLHttpRequest();
                request.open('GET', url, true);

                request.onload = function () {
                    if (request.status === 200) {
                        const data = JSON.parse(request.responseText);
                        let option;
                        for (let i = 0; i < data.length; i++) {
                            option = document.createElement('option');
                            option.text = data[i].name;
                            option.value = data[i].id;
                            dropdown.add(option);
                        }
                    } else
                    {
//erro
                    }
                };


                request.onerror = function () {
                    console.error('An error occurred fetching the JSON from ' + url);
                };

                request.send();
            }
            ;

function subcategoria() {
                let dropdown = document.getElementById('subcategorias');

                dropdown.length = 0;

                let defaultOption = document.createElement('option');
                defaultOption.text = 'Aguarde...';

                dropdown.add(defaultOption);
                dropdown.selectedIndex = 0;

                const url = 'https://api.mercadolibre.com/categories/' + $("#categorias").val();



                const request = new XMLHttpRequest();
                request.open('GET', url, true);

                request.onload = function () {
                    if (request.status === 200) {
                        const data = JSON.parse(request.responseText);
                        let option;
//                    var tenta1 = data["results"][1].title;
//                    alert(tenta1);
                        for (let i = 0; i < data["children_categories"].length; i++) {
                            option = document.createElement('option');
                            option.text = data["children_categories"][i].name;
                            option.value = data["children_categories"][i].id;
                            dropdown.add(option);
                        }
                        defaultOption.text = 'Escolha subcategoria';
                    } else
                    {
//erro
                    }
                };


                request.onerror = function () {
                    console.error('An error occurred fetching the JSON from ' + url);
                };

                request.send();
            }
            ;




            function subcategoria2() {
                let dropdown = document.getElementById('subcategorias2');
                dropdown.length = 0;

                let defaultOption = document.createElement('option');
                defaultOption.text = 'Escolha subcategoria';

                dropdown.add(defaultOption);
                dropdown.selectedIndex = 0;

                const url = 'https://api.mercadolibre.com/categories/' + $("#subcategorias").val();



                const request = new XMLHttpRequest();
                request.open('GET', url, true);

                request.onload = function () {
                    if (request.status === 200) {
                        const data = JSON.parse(request.responseText);
                        let option;
//                    var tenta1 = data["results"][1].title;
//                    alert(tenta1);
                        for (let i = 0; i < data["children_categories"].length; i++) {
                            option = document.createElement('option');
                            option.text = data["children_categories"][i].name;
                            option.value = data["children_categories"][i].id;
                            dropdown.add(option);
                        }
                    } else
                    {
//erro
                    }
                };


                request.onerror = function () {
                    console.error('An error occurred fetching the JSON from ' + url);
                };

                request.send();
            }
            ;

 

Pesquisando outras dicas pela internet achei parte deste código e o adaptei ao que preciso. Estou no caminho certo? 

Obrigado @gbandoni e @mldev pela atenção.

 

Share this post


Link to post
Share on other sites
  • 0

particularmente sou totalmente contra pegar códigos prontos e adaptar, acho que se deve conhecer muito bem primeiro a linguagem e a API e criar seu próprio código, é muito mais instrutivo, produtivo e depois com o tempo você não sofre se houver alguma alteração na API (o que ocorre com frequência)

Share this post


Link to post
Share on other sites
  • 0

A sua abordargem pode ser complicada pois conta que o ML vai estar 100% operacional para obter a categoria (tem mais de 100mil)

Como a própria documentação sugere como caminho começar fazendo a predição de categoria (https://api.mercadolibre.com/sites/MLB/category_predictor/predict?title=xxxx) obter a categoria e se ela não for adequada você tenta mudar (ja tive lâmpada  que caiu na categoria "casa de veraneio").

Share this post


Link to post
Share on other sites
  • 0

bom dia

@mldev

Concordo com você, estou nisso, mas para entender como funciona a API preciso de exemplos e isso consigo com alguns códigos que já funcionam. Posteriormente, claro farei meu próprio código. ? 

@gbandoni entendi sua explicação, 

Tecnicamente no processo de leitura de categorias farei da seguinte maneira; em etapa de configuração a leitura via api retornando aquele json, e salvando no meu banco de dados. Estes registros no banco de dados serão atualizados quando o usuário disparar o evento para certificar-se de possíveis alterações no ML

 

Uma pergunta. Ao postar um anuncio de produto, é gerado um ID especifico ? preciso para poder utilizar como chave para comparação com meu banco de dados, para alterações possíveis, por exemplo, de preço do produto ou disponibilidade de estoque, fotos, etc.

 

Grato pelas respostas.

 

Share this post


Link to post
Share on other sites
  • 0

Estou testando a documentação para postagem de anúncios.

Quando utilizo a categoria MLB1101 posta sem problemas, mas quando coloca a categoria MLB22648  o anuncio não aparece e não me retorna erro algum. 

A respeito das categorias no caso de testes, encontrei apenas recomendação

  • Na medida do possível, publique na categoria “Outros”.

 

 

 

$item = array(
"title" => "Item de Teste – Por favor, NÃO OFERTAR!",
"category_id" => "MLB22648", //aqui troco para MLB1101 FUNCIONA!! 
"price" => 100,
"currency_id" => "BRL",
"available_quantity" => 1,
"buying_mode" => "buy_it_now",
"listing_type_id" => "bronze",
"condition" => "new",
"description" => array("plain_text"=>"Amortecedor cabine  \n"),
"video_id" => "YOUTUBE_ID_HERE",
"warranty" => "30 dias, conforme normas do fabricante",
"pictures" => array(
array(
"source" => "https://www.autopecascarlao.com.br/imagens/_upload/produtos/8/8_0.jpg"
),
array(
"source" => "https://www.autopecascarlao.com.br/imagens/_upload/produtos/8/8_0.jpg"
)
)
);
$item = $meli->post("/items", $item, array('access_token' => $_SESSION['access_token']));

Share this post


Link to post
Share on other sites
  • 0
8 hours ago, Ricardo Copano said:

bom dia

@mldev

Concordo com você, estou nisso, mas para entender como funciona a API preciso de exemplos e isso consigo com alguns códigos que já funcionam. Posteriormente, claro farei meu próprio código. ? 

@gbandoni entendi sua explicação, 

Tecnicamente no processo de leitura de categorias farei da seguinte maneira; em etapa de configuração a leitura via api retornando aquele json, e salvando no meu banco de dados. Estes registros no banco de dados serão atualizados quando o usuário disparar o evento para certificar-se de possíveis alterações no ML

 

Uma pergunta. Ao postar um anuncio de produto, é gerado um ID especifico ? preciso para poder utilizar como chave para comparação com meu banco de dados, para alterações possíveis, por exemplo, de preço do produto ou disponibilidade de estoque, fotos, etc.

 

Grato pelas respostas.

 

sim, na resposta da API (quando há sucesso na criação do anúncio), é retornado o ID do anúncio

Share this post


Link to post
Share on other sites
  • 0
6 hours ago, Ricardo Copano said:

como se utiliza seller_custom_field para definir MARCA, TIPO DE PEÇA, NUMERO DA PEÇA para o produto via api ?

como consigo fazer leitura do anuncio postado para obter o ID ?

seller_custom_field era um campo do tipo string usado para o SKU do vendedor, porém não é mis recomendado usar este campo para o SKU, e sim utilizar o atributo SKU para isso

Share this post


Link to post
Share on other sites
  • 0

@Ricardo Copano, você está usando o SDK que facilita algumas coisas, mas há implementações atuais do ML que ele não suporta.  

Os exemplos do site developers estão com um formato conceitual, o que é infinitamente melhor para você aprender. Mas não recebe atualizações se não apontarmos os erros. No cadastro básico já vejo 2: 

"listing_type_id" => "gold_pro", // não paga nada para anunciar
"video_id" => "", //YOUTUBE_ID_HERE só informe a TAG se for incluir um video

Share this post


Link to post
Share on other sites
  • 0

alguém pode me ajudar com isso??

    "description":[
        {"plain_text":"Detalhes do Produto"}
    ],

a formula JSON esta correta, mais o retorno da API é!

{
    "message": "body.invalid_field_types",
    "error": "validation_error",
    "status": 400,
    "cause": [
        {
            "cause_id": 101,
            "type": "error",
            "code": "body.invalid_field_types",
            "references": [
                "item.description"
            ],
            "message": "invalid property type: [description] expected String but was JSONArray value: [[plain_text:]]"
        }
    ]
}

e quando eu mando sem o plain_text  API retorna um warning: The text property is deprecated. And will soon be rejected. Please use plain_text

Share this post


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

alguém pode me ajudar com isso??

    "description":[
        {"plain_text":"Detalhes do Produto"}
    ],

a formula JSON esta correta, mais o retorno da API é!

{
    "message": "body.invalid_field_types",
    "error": "validation_error",
    "status": 400,
    "cause": [
        {
            "cause_id": 101,
            "type": "error",
            "code": "body.invalid_field_types",
            "references": [
                "item.description"
            ],
            "message": "invalid property type: [description] expected String but was JSONArray value: [[plain_text:]]"
        }
    ]
}

e quando eu mando sem o plain_text  API retorna um warning: The text property is deprecated. And will soon be rejected. Please use plain_text

  "description":{"plain_text":"Detalhes do Produto"},

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