Importação dos produtos
URL do Webservice : https://sws.spartoo.pt/mp/xml_import_products.phpEste webservice serve para criar e atualizar os produtos no site da Spartoo.
Para cada produto, o webservice envia um código de erro indicando se correu tudo bem ou não. Alguns erros podem bloquear o produto (fatal), outros não (warning).
Este webservice funciona em modo "Atualização" e não em modo "Supressão". Isto significa que os produtos que não são enviados no ficheiro XML não serão suprimidos.
Para retirar um produto do site, é preciso colocar o stock a 0.
Lista dos parâmetros
Os parâmetros deste webservice devem passar obrigatoriamente em POST| Parâmetro | Descrição |
|---|---|
| partenaire | Deve conter a sua identificação única: |
| xml | Sequência de caracteres XML contendo a lista dos elementos a serem criados ou atualizados |
Parametros opcionais que podem ser passados em POST
| Parâmetro | Descrição |
|---|---|
| force_overwrite | Colocar 1 se desejar corrigir os erros de integração relacionados a uma queda significativa dos preços |
Formato do parâmetro xml
Os campos de texto devem estar protegidos por balizas CDATA caso contenham caracteres especiais que possam tornar o XML inválido.
Formato mono país
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <product_name>string</product_name> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_price>float</product_price> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <product_description>string</product_description> <product_color>string</product_color> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </size> <!-- ... Várias balizas "size" possíveis ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales>0/1</sales> </discount> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Várias balizas "info" possíveis ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Várias balizas "selection" possíveis ... --> </selections> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> </root>
Formato multi país
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_name>string</product_name> <product_description>string</product_description> <product_color>string</product_color> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales /> </discount> </language> <!-- ... Várias balizas "language" possíveis ... --> </languages> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </language> <!-- ... Várias balizas "language" possíveis ... --> </languages> </size> <!-- ... Várias balizas "size" possíveis ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Várias balizas "info" possíveis ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Várias balizas "selection" possíveis ... --> </selections> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> </root>
Descrição dos campos XML de entrada
| Baliza | Descrição | Obrigatória |
|---|---|---|
| reference_partenaire |
Identificação do produto parceiro A identificação do produto só pode conter caracteres alfanuméricos e os caracteres - (hífen) _ (underscore) e . (ponto). |
Sim |
| product_name |
Nome do modelo Não deve conter a categoria, a cor ou a marca do produto |
Não |
| manufacturers_name | Nome da marca do produto | Sim |
| product_sex |
Género do produto > Ver os valores possíveis |
Sim |
| product_price | Preço do produto em euros (não obrigatório para preços de tamanho) | Sim Não |
| color_id |
Cor destinada aos filtros dos menus Se não for indicada, o produto não aparecerá se o cliente utilizar o filtro por cor > Ver os valores possíveis |
Não |
| product_style |
Categoria > Ver os valores possíveis |
Sim |
| product_description | Descrição do produto. Aparece na página do produto. | Não |
| product_color | Campo de texto livre para a cor. Aparece na página do produto. | Não |
| product_quantity |
Stock total de um produto Ignorado se for detetada uma ou mais tags size_quantity para o produto. Para produtos de tamanho único, será necessária uma etiqueta product_quantity se a etiqueta size_quantity não for especificada. |
Não |
| size |
Lista dos tamanhos e respetivo stock. Facultativo para os produtos sem tamanho ( Bolsas / Acessórios). Caso contrário é Obrigatório. |
Oui / Non |
| size_name |
Nome do tamanho > Ver os valores possíveis |
Sim |
| size_quantity | Para cada tamanho deve ser especificado o stock. Para desativar um produto, deve definir o stock para 0. Quando o stock chega a 0, o produto é desativado e deixa de aparecer em Spartoo. |
Sim |
| size_reference |
Referência do produto por tamanho. Este campo serve apenas para ser enviado nas exportações de encomendas ou devoluções. Uma boa solução será de gerar esta referência ligando os campos reference_partenaire e size_name através de um underscore "_". |
Não |
| ean | EAN do produto por tamanho | Obrigatório para o serviço logísticoNão / Sim |
| fotos |
Lista das fotos e respetivos URL. É obrigatória pelo menos uma foto. Recomendamos ter pelo menos 3 fotos. Podemos integrar no máximo 8 fotos. A foto será baixada apenas uma vez, será em seguida armazenada nos nossos servidores depois de redimensionada para as dimensões Spartoo As fotos devem estar no formato jpg, quadradas e com pelo menos 350x350 pixeis. Se elas forem superiores ou iguais a 800x800 pixeis, haverá um possível zoom no site. |
Sim |
| url1, url2 ... url8 |
Links para as fotos Deve fornecer um link para cada foto. O nome do arquivo deve conter apenas caracteres alfanuméricos e caracteres "-" (hífens), "_" (underscore) e "." (pontos). Espaços, bem como letras acentuadas (por ex. é, à e ã) não são autorizados. |
Sim | country_origin |
País de origem do produto > Ver os valores possíveis |
| heel_height | Altura do tacão em centímetro (cm). Unicamente para os calçados femininos. Deve ser um múltiplo de 0,5. | No |
| product_composition |
Composição do cano do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
| voering_composition |
Composição do forro do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
| first_composition |
Composição da palmilha do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
| zool_composition |
Composição da sola do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
| discount |
Permite aplicar uma promoção no produto ou no tamanho. O campo ratedo campo discountdiz respeito à redução do preço em percentagem em relação ao campo product_price. O campo price_discount do campo discount diz respeito à redução em preço fixo. A percentagem de redução apresentada será calculada. Se os dois campos estiverem presentes, o campo price_discount é prioritário em relação ao campo rate. Se o desconto é imediato, não será necessário indicar o campo startdate. Se a baliza sales for indicada, a promoção será uma promoção de saldos. Caso contrário, será uma promoção clássica. Indicar este parâmetro permite que os produtos estejam presentes na página de saldos durante o período de saldos. |
Não |
| extra_infos |
Permite especificar informações complementares dependentes do tipo de produto. Cada informação tem um ID ( Ver os valores ) e de um valor no formato numérico. |
Não |
| seleções | Permite especificar os contextos de utilização do produto através de uma lista de ID. O conjunto dos contextos está aqui. |
Não |
Exemplo de parâmetro xml
<root> <products> <product> <reference_partenaire>98</reference_partenaire> <product_name><![CDATA[ALL STAR HI]]></product_name> <manufacturers_name><![CDATA[Converse]]></manufacturers_name> <product_sex>M</product_sex> <product_price>64.99</product_price> <product_quantity>5</product_quantity> <color_id>8</color_id> <product_style>10010</product_style> <product_description><![CDATA[Mítica, a Chuck Taylor ALL STAR da Converse é incontornável. Aqui em versão de cano alto em lona e estampado uniforme clássico, esta sapatilha é intemporal e nunca está fora de moda! ]]></product_description> <product_color><![CDATA[Vermelho]]></product_color> <country_origin>73</country_origin> <code_hs>64059090</code_hs> <size_list> <size> <size_name>38</size_name> <size_quantity>4</size_quantity> <size_reference>98_38</size_reference> <ean>123456789011></ean> </size> <size> <size_name>39</size_name> <size_quantity>1</size_quantity> <size_reference>98_39</size_reference> <ean>123456789012></ean> </size> </size_list> <product_composition>4</product_composition> <photos> <url1>https://imgext.spartoo.com/photos/98/98/98_350_A.jpg</url1> <url2>https://imgext.spartoo.com/photos/98/98/98_350_B.jpg</url2> <url3>https://imgext.spartoo.com/photos/98/98/98_350_C.jpg</url3> <url4>https://imgext.spartoo.com/photos/98/98/98_350_D.jpg</url4> <url5>https://imgext.spartoo.com/photos/98/98/98_350_E.jpg</url5> <url6>https://imgext.spartoo.com/photos/98/98/98_350_F.jpg</url6> <url7>https://imgext.spartoo.com/photos/98/98/98_350_G.jpg</url7> <url8>https://imgext.spartoo.com/photos/98/98/98_350_H.jpg</url8> </photos> <discount> <startdate>1199170800</startdate> <stopdate>1204354800</stopdate> <rate>20</rate> </discount> </product> </products> </root>
Transferência de fluxo através de ficheiro
Também é possível transferir o fluxo (XML ou ZIP) através de um ficheiro. Para tal, o corpo da solicitação deve conter apenas o ficheiro.
Os diferentes parâmetros (como «partenaire», «force_description», «force_overwrite», etc.) devem ser transmitidos obrigatoriamente em GET.
Preço e Desconto por Tamanho
As etiquetas de preço e de desconto por tamanho foram implementadas para permitir uma diferenciação precisa dos preços dentro do mesmo produto.Elas devem ser utilizadas apenas quando um tamanho tem um preço diferente do preço geral do produto.
O preço definido ao nível do produto é a principal referência. As etiquetas específicas de tamanho destinam-se a substituir este preço apenas quando é necessária uma exceção (por exemplo: tamanhos especiais, custos adicionais de material, liquidação parcial de fim de linha, etc.).
É estritamente proibido utilizar etiquetas de preço ou de desconto por tamanho quando todos os tamanhos partilham o mesmo preço do produto principal. Neste caso, o preço deve ser definido apenas ao nível geral do produto.
Formato do XML devolvido
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <status>string</status> <action>string</action> <errors> <error> <id>int</id> <description>string</description> <level>string</level> </error> <!-- ... Várias balizas "error" possíveis ... --> </errors> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> <errors>int</errors> </root>
Lista dos códigos de erros do webservice
| Código | Descrição |
|---|---|
| 1 | Sem erros nos parâmetros |
| -1 | O parâmetro partenaire não passou no parâmetro ou está vazio |
| -2 | O parâmetro do parceiro não existe |
| -11 | O parâmetro xml não passou no parâmetro ou está vazio |
| -15 | Erro de sintaxe XML, verifique o seu ficheiro XML |
| -428 | A sua conta foi desativada. Não pode mais efetuar chamadas ao webservice |
| -429 | Efetuou demasiado chamadas para o Webservice nesta hora corrida |
Descrição dos campos da resposta XML
| Baliza | Descrição |
|---|---|
| reference_partenaire | Identificação do produto do parceiro |
| status | OK se o produto foi inserido na base de dados KO se o produto não foi inserido |
| action |
Lista das ações:
|
| errors |
Lista de erros:
|
Lista dos códigos de erros dos produtos
| Code | Nível | Descrição |
|---|---|---|
| 1 | Fatal | A referência do parceiro é demasiado curta |
| 2 | Fatal | A referência do parceiro não é válida. A referência só pode ter caracteres alfanuméricos |
| 3 | Warning | O nome do produto não foi especificado |
| 4 | Fatal | A marca não foi especificada |
| 5 | Fatal | O género não é válido. Os únicos valores possíveis são: H, F, M, K, G, B |
| 6 | Fatal | O preço deve ser um número |
| 7 | Fatal | O preço deve ser positivo |
| 8 | Warning | O preço é demasiado elevado ( > 1000€ ) |
| 195 | Fatal | O novo preço não pode conter mais de xxx dígitos |
| 81 | Fatal | O preço não poderá ser superior a 180€ |
| 9 | Fatal | A quantidade deve ser um número inteiro |
| 10 | Fatal | A quantidade deve ser positiva |
| 11 | Warning | A cor xxx não existe: o produto não estará disponível através dos filtros de cor |
| 13 | Fatal | A categoria xxx não existe |
| 14 | Warning | A descrição do produto está vazia |
| 15 | Warning | A descrição da cor está vazia |
| 16 | Warning | Não há lista de tamanhos: utilização do tamanho único |
| 17 | Warning | A composição foi especificada, mas não é válida |
| 18 | Fatal | A imagem 1 é obrigatória |
| 19 | Warning | Esta promoção não é válida. A taxa de desconto da promoção deve ser entre 0 e 100. |
| 20 | Warning | O tamanho xxx não existe |
| 200 | Warning | O tamanho xxx não existe para a marca xxx. |
| 201 | Fatal | O código EAN é obrigatório |
| 202 | Fatal | O código EAN xxx na referência xxx no tamanho xxx já está a ser utilizado. |
| 205 | Fatal | Referência parceiro demasiado comprida |
| 23 | Warning | A imagem xxx é inferior a 350x350: esta imagem terá uma má qualidade no site |
| 24 | Warning | A imagem xxx é inferior a 350x350: esta imagem não será apresentada no site |
| 25 | Fatal | Tamanho xxx: Impossível regular o stock |
| 26 | Fatal | Não há stock: o produto não será criado |
| 27 | Fatal | Impossível aceder à imagem 1 ( url xxx ) |
| 28 | Warning | Impossível aceder à imagem xxx ( url xxx ) |
| 30 | Fatal | A quantidade do tamanho xxx é demasiada elevada (Quantité max : xxx) |
| 33 | Fatal | Um produto de género xxx não pode pertencer a categoria xxx |
| 34 | Fatal | A palavra xxx está bloqueada e não deve aparecer no nome do produto. |
| 35 | Fatal | Nome do produto muito comprido, deve conter apenas o nome do modelo. Erro(s) no(s) país(es): xxx |
| 341 | Fatal | A palavra xxx está bloqueada e não deve aparecer na descrição do produto. |
| 36 | Fatal | Impossível importar o produto: o produto possui uma duplicação do par tamanho/cor. |
| 37 | Fatal | Não forneceu informações de idioma para este produto |
| 32 | Fatal | Não foram encontradas informações sobre produtos para este país. |
| 38 | Fatal | O tamanho xxx só pode ser definido uma vez para a referência xxx |
| 39 | Warning | A referência parceira está presente várias vezes, as duplicações foram ignoradas |
| 451 | Fatal | Não há preço para o tamanho xxx no país xxx. (necessário para um desconto) |
| 452 | Warning | Data final do desconto excedida para o tamanho xxx do país xxx. |
| 453 | Fatal | "taxa" (xxx) invalido para o tamanho xxx do país xxx. |
| 454 | Fatal | "taxa" (xxx) > 85% para o tamanho xxx do país xxx. |
| 455 | Warning | O tamanho xxx tem um preço num país (xxx) não definido para o produto. |
| 456 | Warning | O tamanho xxx tem um preço de xxx idêntico ao preço global neste país. |
| 194 | Fatal | O desconto do novo preço não deve ser superior a xxx% |
Exemplos de devolução XML
Exemplo de resposta a uma chamada web serviço KO :
<root> <products></products> <errors>-1</errors> </root>
Exemplo de resposta a uma chamada web serviço OK :
<root> <products> <product> <reference_partenaire>EEAJBCC</reference_partenaire> <status>KO</status> <action>not created</action> <errors> <error> <id>14</id> <description>A descrição do produto está vazia</description> <level>warning</level> </error> <error> <id>4</id> <description>A marca não foi especificada</description> <level>fatal</level> </error> </errors> </product> <product> <reference_partenaire>KJHGFDS</reference_partenaire> <status>OK</status> <action>created</action> </product> </products> <errors>1</errors> </root>
www.spartoo.pt
























