Primeiros passos
AliExpress Open Platform
AliExpress Open Platform é uma plataforma de desenvolvimento de aplicativos para o AliExpress. A plataforma fornece uma série de APIs e serviços para ajudar os desenvolvedores a criar aplicativos para o AliExpress. A plataforma também fornece uma série de ferramentas para ajudar os desenvolvedores a gerenciar seus aplicativos.
Sobre este documento
Este documento fornece uma visão geral da plataforma para desenvolvedores brasileiros. Para obter mais informações sobre as APIs e serviços, consulte a documentação da API.
Cadastro de conta de desenvolvedor
Você pode se registrar como ISV ou autodesenvolvedor aqui.
Approvação de conta de desenvolvedor
Após o registro, você pode entrar na plataforma e verificar o status da sua conta.
Criação de aplicativo
Após o registro, você pode criar um aplicativo clicando em "Create" na página App Console.
Gerenciamento de aplicativo
Após a criação do aplicativo, você pode gerenciar o aplicativo clicando em "Manage" na página App Console.
- appKey e appSecret são necessários para a autenticação de API. Você pode encontrar essas informações na "App Overview".
- SDKs estão disponíveis na página "SDK Download".
- Configuração do webhook está disponível na página "Notification service(webhook)".
- Para garantir a segurança dos dados, você pode usar a IP whitelist para restringir o acesso às APIs. Você pode encontrar a IP whitelist na página "IP Whitelist".
- Para monitorar a integridade da integração da API, você pode usar a página "API Access Log".
Approvação de aplicativo
Por padrão, o aplicativo criado está no modo de teste. Neste mode, você pode usar a API para testar seu aplicativo. Existem algumas limitações no modo de teste:
- número limitado de lojas autorizadas.
- número limitado de chamadas de API.
- tokens de acesso expiram em 24 horas.
Para usar o aplicativo em produção, você deve enviar uma solicitação de aprovação.
API calls
Ambiente de produção
Sempre siga este padrão ao fazer solicitações de API, api_path
deve sempre ser um parâmetro do sistema:
https://api-sg.aliexpress.com/sync?method={api_path}&{query}
Para simplificar, é recomendado sempre fazer solicitações POST
com system parameters
em URL
e business parameters
em corpo de solicitação.
Por exemplo:
URL: https://api-sg.aliexpress.com/sync?app_key=123456&format=json&method=aliexpress.logistics.redefining.getonlinelogisticsservicelistbyorderid&session=50000**********************************&sign=E7E3F**********************&sign_method=sha256&simplify=true×tamp=1681223300803
Body: order_id=3022167240092096
System parameters
Os parâmetros listados abaixo são comuns a todos os métodos da API. Para maior clareza do documento, eles não são mostrados nos exemplos de solicitação.
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
app_key | String | Sim | Chave de aplicativo. |
session | String | Não | Token de acesso. access_token |
format | String | Sim | Formato de resposta. json . |
timestamp | String | Sim | Timestamp. Em formato como 2017-11-11T12:00:00Z ou 1675532891453 . |
method | String | Sim | Método da API. Também conhecido como api_path . |
simplify | String | Não | Simplificar a resposta. true . |
sign_method | String | Sim | Método de assinatura. sha256 |
sign | String | Sim | Assinatura. |
Business parameters
Além dos parâmetros do sistema que devem ser incluídos na solicitação de chamada de API, os business parameters específicos do método também devem ser incluídos.
Cálculo de Assinatura
Todas as solicitações de chamada de API devem ser assinadas para garantir a segurança da comunicação. A assinatura é calculada com base nos parâmetros de solicitação e na chave de aplicativo. Solicitações de chamada de API sem assinatura não serão processadas.
Selecionar os parâmetros
{
"app_key": "33006842",
"simplify": true,
"format": "json",
"timestamp": 1675534526072,
"sign_method": "sha256",
"method": "/auth/token/create",
"code": "3_33006842_SZ1H8Oz9cEDw61nU1eitmABF7383"
}
- Selecionar todos os parâmetros de solicitação, incluindo os System parameters e os Business parameters.
- Excluir o parâmetro
sign
e parâmetros de tipo de arquivobyte[]
por exemplo, imagens do produtos, XML de nota fiscal, etc.). - Incluir o parâmetro
method
no método migrado.
Ordenar os parâmetros
Ordene os parâmetros selecionados em ordem alfabética pelo nome do parâmetro.
Concatenar os parâmetros
concatenated_string=app_key33006842code3_33006842_SZ1H8Oz9cEDw61nU1eitmABF7383formatjsonmethod/auth/token/createsign_methodsha256simplifytruetimestamp1675534526072
Concatenar os nome e valor dos parâmetros ordenados sem nenhum separador.
Prefixar o valor do method
no início no método novo.
Codificar o string concatenado
UTF-8
Calcular a assinatura
assume_that_app_secret=fb750490a63ee2218bf82a4f0c01a25f
sign=73D4F0A06612F6023A62543067466A0D62B5EF9F77DC4F48D083ED21D1E8614A
- Applicar o algoritmo de hash
sha256
no string codificado. - Converter o resultado do hash em hexadecimal e converter para maiúsculo.
Enviar a solicitação
Enviar a solicitação HTTP com o método POST
ou GET
.
Usar API com SDK
Você pode baixar o SDK do seu App Console e simplificar o uso da API.
O SDK pode lidar com System parameters
e a assinatura automaticamente.
Autenticação e Autorização
Você precisa ser autorizado pelo vendedor para que seu app se comunique com as APIs não públicas.
O processo de autorização é dividido em os seguintes passos:
Gerar o link de autorização
Você deve gerar um link de autorização para o vendedor com as seguintes especificações:
https://api-sg.aliexpress.com/oauth/authorize?response_type=code&force_auth=true&redirect_url=${redirect_url}&client_id=${client_id}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
client_id | String | Sim | Chave de aplicativo. |
redirect_url | String | Sim | URL de redirecionamento. Devem com a mesma domain com callback_url configurado no App Console. |
response_type | String | Sim | Deve ser code . |
force_auth | Boolean | Não | Se true , o vendedor será obrigado a fazer login novamente. |
state | String | Não | Parâmetro que vai ser retornado na URL de redirecionamento. |
uuid | String | Não | Parâmetro que vai ser retornado na URL de redirecionamento. |
Guiar o vendedor a autorizar seu app
Guiar o vendedor abrir o link de autorização gerado no passo anterior. O vendedor será redirecionado para a página de login do AliExpress. O vendedor deve fazer login e autorizar seu app.
Obter o code
Após o vendedor autorizar seu app, o vendedor será redirecionado para a URL redirect_url
configurada acima.
O code
será retornado na URL de redirecionamento.
Se o state
ou uuid
foi configurado, eles serão retornados na URL de redirecionamento.
Obter o token de acesso
Você deve usar o code
obtido no passo anterior para obter o token de acesso.
Method
Business parameters
{
"code": "3_33006842_SZ1H8Oz9cEDw61nU1eitmABF7383"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
code | String | Sim | O código obtido no passo anterior. |
Resposta
{
"refresh_token_valid_time": 1738263120048,
"havana_id": "id-in-string-format",
"expire_time": 1706727119024,
"locale": "zh_CN",
"user_nick": "br####",
"access_token": "a-long-access-token",
"refresh_token": "a-long-refresh-token",
"user_id": "user-id",
"account_platform": "seller_center",
"refresh_expires_in": 63072002,
"expires_in": 31536001,
"sp": "ae",
"seller_id": "seller-id",
"account": "seller-email",
"request_id": "2102fd2216751911180912262"
}
Pelo menos os seguintes parâmetros devem ser salvos para uso futuro:
access_token
para autenticação nas APIs.refresh_token
para obter um novoaccess_token
quando oaccess_token
expirar.seller_id
,user_nick
para identificar o vendedor.
Também é recomendado monitorar o valor de expires_in
, refresh_token_valid_time
e refresh_expires_in
.
Esses prazos de expiração podem estar sujeitos a alterações.
Atualizar o token de acesso
Quando o access_token
expirar, você deve usar o refresh_token
para obter um novo access_token
.
É recomendado que você atualize o access_token
30 minutos antes de expirar.
O processo pode ser feito sem a intervenção do vendedor.
Method
Business parameters
{
"refresh_token": "a-long-refresh-token"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
refresh_token | String | Sim | O refresh_token obtido no passo anterior. |
Resposta
{
"refresh_token_valid_time": 1738263120048,
"havana_id": "id-in-string-format",
"expire_time": 1706727119024,
"locale": "zh_CN",
"user_nick": "br####",
"access_token": "a-long-access-token",
"refresh_token": "a-long-refresh-token",
"user_id": "user-id",
"account_platform": "seller_center",
"refresh_expires_in": 63072002,
"expires_in": 31536001,
"sp": "ae",
"seller_id": "seller-id",
"account": "seller-email",
"request_id": "2102fd2216751911180912262"
}
Guia para produtos
Configurações antes de publicar um produto
As seguintes condições devem ser atendidas para que um produto seja publicado no AliExpress:
- Aplicado e concedido permisão para categorias e marcas.
- Configurado templates de serviço.
- Configurado templates de envio.
- Configurado templates de medida.
Escolher uma categoria
Os categorias do AliExpress são organizados em uma hierarquia. Você deve escolher uma categoria que seja apropriada para o seu produto. Você pode baixar a lista de categorias usando o seguinte endpoint recursivamente:
aliexpress.category.redefining.getchildrenpostcategorybyid
O ID da raiz da categoria é 0
.
Uma categoria de leaf
é uma categoria que não tem subcategorias.
Produtos só podem ser publicados em categorias de leaf
.
Propriedades para produtos
Com categorias selecionadas, você pode obter as propriedades para produtos usando o seguinte endpoint:
aliexpress.category.redefining.getchildattributesresultbypostcateidandpath
Uma lista de propriedades para produtos é retornada. Cada propriedade vem com uma especificacão:
{
"spec": 2,
"required": false,
"keyAttribute": false,
"sku": false,
"id": 196,
"values": [
{
"id": 134,
"names": {
"zh": "交流",
"en": "AC"
}
}
],
"names": {
"zh": "输出类型",
"en": "Output Type"
},
"inputType": "STRING",
"attributeShowTypeValue": "list_box"
}
required
: Se a propriedade é obrigatória.sku
: Se a propriedade é usada para gerar SKU.- Propriedade de SKU é usada para gerar SKU.
- Propriedade commum é usada para informar o comprador.
Propriedade de SKU
Cada produto pode ter múltiplas variações(SKU). Cada variação é uma combinação de valores de propriedades de SKU. Por exemplo, uma camisa pode ter as seguintes propriedades de SKU:
- Cor: Vermelho, Azul, Amarelo
- Tamanho: M, L, XL, XXL
Então, a camisa terá 3x4 = 12 variações.
Para cade variação, a ordem dos valores de propriedades de SKU deve siguir a ordem das spec
de propriedades de SKU.
Por example, para categoria de id 348
, a ordem das propriedades de SKU é 14, 5, 200007763.
[
{
"id": 5,
"names": {
"zh": "尺寸",
"en": "Size"
},
"sku": true,
"spec": 2
},
{
"id": 14,
"names": {
"zh": "颜色",
"en": "Color"
},
"sku": true,
"spec": 1
},
{
"id": 200007763,
"names": {
"zh": "发货地",
"en": "Ships From"
},
"sku": true,
"spec": 3
}
]
Cada propriedade de SKU tem 4 campos
Campo | Customização | Descrição | Exemplo |
---|---|---|---|
sku_property_id | Não | ID da propriedade de SKU | 200009209 |
property_value_id | Não | ID do valor da propriedade de SKU | 200660849 |
property_value_definition_name | Sim | Nome do valor da propriedade de SKU | pink |
sku_image | Sim | Imagem da variação | "http://***.jpg" |
Propriedades comuns
Propriedades comuns são usadas para informar o comprador. Há duas tipos de propriedades comuns:
- Propriedades definidas pela categoria.
- Propriedades definidas pelo vendedor.
Para propriedades definidas pela categoria, o seguinte tabela mostra os campos:
Condição | attr_name_id | attr_value_id | attr_name | attr_value |
---|---|---|---|---|
Com lista de valores, sem "other" opção | Obrigatório | Obrigatório | Invalido | Invalido |
Com lista de valores, com "other" opção | Obrigatório | Obrigatório | Invalido | Obrigatório quando "other" é selecionado |
Sem lista de valores | Obrigatório | Invalido | Invalido | Obrigatório |
Para propriedades definidas pelo vendedor, o seguinte tabela mostra os campos:
attr_name_id | attr_value_id | attr_name | attr_value |
---|---|---|---|
Invalido | Invalido | Obrigatório | Obrigatório |
Fotos do produto
Você pode enviar imagens para o produto usando o seguinte endpoint:
aliexpress.image.redefining.uploadtempimageforsdk
Descricao PC e Mobile
Você pode enviar a descrição do produto de versão PC e Mobile.
A descrição é um moduleList
e você pode seguir o Original data format of detail para mais detalhes.
Modelo de frete
Você pode obter o modelos de frete usando o seguinte endpoint:
aliexpress.freight.redefining.listfreighttemplate
Parâmetros
Sem parâmetros.
Retorno
{
"result_success": true,
"aeop_freight_template_d_t_o_list": [
{
"template_name": "Alpha-Nomeado pelo vendedor",
"template_id": 12345678901,
"is_default": false
},
{
"template_name": "Prod-Nomeado pelo vendedor",
"template_id": 12345678902,
"is_default": false
}
]
}
Os modelos de frete são usados para relacionar os produtos com os métodos de frete. Eles também definem descontos de frete e regras de frete grátis.
Os modelos de frete devem ser configurados no painel do AliExpress antes de serem usados. Se a lista de modelos de frete estiver vazia, você deve informar o vendendor para configurar os modelos de frete. guia para configurar modelos de frete
Se mais de um modelo de frete estiver disponível, você deve dexar o vendedor escolher o modelo de frete quando publicar o produto.
Certificado ANATEL
De acordo com a regulamentação brasileira, certos produtos eletrônicos devem ter um certificado da ANATEL. A partir de 31 de agosto de 2024, os produtos de certas categorias sem o número do certificado da ANATEL vai ser penalizado.
Categorias que precisam do número do certificado da ANATEL
Os categorias que precisam do número do certificado da ANATEL estão listadas pelo esse artigo: AliExpress announcement regarding products subject to ANATEL certification
Também é possível verificar se um produto precisa do número do certificado da ANATEL usando o seguinte endpoint com category_id
:
GET aliexpress.category.qualifications.list
{
"aliexpress_category_qualifications_list_response": {
"support": true,
"qualification_module_list": {
"qualification_module": [
{
"label": "Certificado ANATEL",
"type": "image",
"key": "item_anatel_certificate",
"tips": "Faça o upload do certificado de certificação ANATEL brasileiro ou uma imagem clara da captura de tela do site oficial, o tamanho deve estar dentro de 3M",
"required": false
},
{
"label": "ANATEL Certificate_Number",
"type": "text",
"key": "ANATEL_Certificate_Number",
"tips": "",
"required": false
},
...
]
},
"request_id": "21014bee17223693878538411"
}
}
Por exemplo, para a categoria de id 5090301
(celulares),
existe um campo ANATEL_Certificate_Number
que é um número de certificado da ANATEL.
Atualizar o número do certificado da ANATEL
Para atulizar o número do certificado da ANATEL, você pode usar os endpoints do produtos pelo campo item_qualifications
.
Um dos endpoints é aliexpress.solution.product.post
{
"post_product_request": {
...
"item_qualifications":
[
{
"key": "ANATEL_Certificate_Number",
"type": "text",
"value": "1234567890"
}
]
...
}
}
O campo item_qualifications
é um lista de objetos com os seguintes campos:
Campo | Descrição | Exemplo |
---|---|---|
key | Chave do campo de qualificação | "ANATEL_Certificate_Number" |
type | Tipo do campo de qualificação, pode ser "text" ou "image" | "text" |
value | Valor do campo de qualificação | "1234567890" |
Criar um produto
Você pode criar um produto usando o seguinte endpoint:
aliexpress.solution.product.post
Status do produto
O produto pode ter os seguintes status:
product_status_type | Descrição |
---|---|
onSelling | O produto está online e disponível para compra. |
offline | O produto está offline e indisponível para compra. |
auditing | O produto está sendo auditado. O produto entrará no status editingRequired se a auditoria falhar. |
editingRequired | O produto precisa ser editado para ser auditado novamente. |
Guia para pedidos
Esta guia tem como objetivo auxiliar na sincronização de pedidos do AliExpress para o seu sistema.
Endpoints para sincronização de pedidos
- aliexpress.trade.redefining.findorderlistsimplequery para obter uma lista de pedidos.
- aliexpress.trade.new.redefining.findorderbyid para obter detalhes de um pedido.
Initializar o processo de sincronização
Para cada novo vendedor autorizado, você deve inicializar o processo de sincronização de pedidos.
Sincronização incremental pelo API
Para sincronizar os pedidos incrementalmente,
você deve obtendo a lista de pedidos usando o endpoint aliexpress.trade.redefining.findorderlistsimplequery
repentinamente, e então obter detalhes de cada pedido usando o endpoint aliexpress.trade.new.redefining.findorderbyid
.
Esta solução não é a ideal para grande volume de pedidos, o seguinte mecanismo de sincronização incremental é recomendado:
Sincronização incremental pelo Webhook
O AliExpress oferece um mecanismo de sincronização incremental por Webhook. Para utilizar este mecanismo, você deve configurar um webhook no painel do AliExpress.
Estrutura do webhook
{
"havana_id": "123456789012",
"seller_id": "1234567890",
"message_type": 12,
"data": {
"msg_tag": "OrderConfirmed",
"login_id": "br1234567890abcd",
"order_status": "FINISH",
"status_update_time_millis": 1684842846000,
"pay_status": "PAID",
"trade_order_id": "1234567890123456",
"extraParams": {},
"status_update_time": "2023-05-23 04:54:06"
},
"timestamp": 1684842846,
"site":"ae_global"
}
O corpo do webhook é um JSON com os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
havana_id | String | ID do vendedor |
seller_id | String | ID do vendedor |
message_type | Integer | Tipo de mensagem |
data | Object | Dados da mensagem |
timestamp | Integer | Timestamp da mensagem |
site | String | "ae_global" |
O message_type
indica o tipo de mensagem,
você pode encontrar uma lista completa de tipos de mensagem na documentação oficial.
O header do webhook contém o Authorization
.
Por segurança, você deve verificar se o Authorization
é válido.
Status de pedidos
Code | Descrição |
---|---|
PLACE_ORDER_SUCCESS | Pedido criado, aguardando pagamento |
IN_CANCEL | Comprador solicitou cancelamento |
WAIT_SELLER_SEND_GOODS | Aguardando envio pelo vendedor |
SELLER_PART_SEND_GOODS | Vendedor enviou parte dos itens |
WAIT_BUYER_ACCEPT_GOODS | Aguardando aceitação do comprador |
FUND_PROCESSING | Processando pagamento |
IN_ISSUE | Em disputa |
IN_FROZEN | Em congelamento |
WAIT_SELLER_EXAMINE_MONEY | Aguardando análise de pagamento pelo vendedor |
PAYMENT_PROCESSING | Processando pagamento |
RISK_CONTROL | Controle de risco, aguardando aprovação(24 horas) |
FINISH | Pedido arquivado, verifique o motivo no campo endReason |
Motivo do fim do pedido
endReason
é um campo que indica o motivo do fim do child order
.
Pedido encerrado com sucesso
endReason | Descrição |
---|---|
buyer_accept_goods | Pedido sucesso com confirmação do comprador |
buyer_accept_goods_timeout | Pedido sucesso com timeout de confirmação do comprador |
Pedido encerrado com falha
Os seguintes são alguns dos motivos de falha de um pedido, para uma lista mais completa, consulte a documentação oficial.
endReason | Descrição |
---|---|
end_issue | Pedido finalizado por disputa |
trade_close | Pedido finalizado por cancelamento |
pay_timeout | Pedido finalizado por timeout de pagamento |
buyer_pay_timeout | Pedido finalizado por timeout de pagamento do comprador |
buyer_cancel_order | Pedido finalizado por cancelamento do comprador |
risk_closed | Pedido finalizado por controle de risco |
suspicious_trade | Pedido finalizado por suspeita de fraude |
confirm_payamount_timeout | Pedido finalizado por timeout de confirmação de valor |
reject_payamount | Pedido finalizado por rejeição do pagamento |
send_goods_timeout | Pedido finalizado por timeout de envio |
buyer_cancel_notpay_order | Pedido finalizado por cancelamento do comprador antes do pagamento |
buyer_cancel_order_in_risk | Pedido finalizado por cancelamento do comprador durante o controle de risco |
security_close | Pedido finalizado por segurança |
security_close1 | Pedido finalizado por segurança |
security_close2 | Pedido finalizado por segurança |
security_close5 | Pedido finalizado por segurança |
security_close6 | Pedido finalizado por segurança |
security_close7 | Pedido finalizado por segurança |
out_of_stock_overtime_close_order | Pedido falhou por falta de estoque |
productNotEnoughForSeller | Pedido falhou por falta de estoque |
Unable_to_ship | Pedido falhou por tempo de envio excedido |
otherReason | Pedido falhou por outro motivo |
Códigos de serviço logístico
solution_code | Descrição |
---|---|
CAINIAO_BRL2L_STANDARD | Cainiao flat-rate |
BRL2L_STANDARD_CORREIOS | Solução logística integrada com os Correios |
Guia para logística
Cainiao flat-rate é a solução logística preferida da AliExpress. Ele fornece uma maneira econômica para os vendedores entregarem encomendas rapidamente e com segurança. A solução comercial exige que os vendedores carreguem o NFe (Nota Fiscal Eletrônica) para cada encomenda. Esse seção fornece um guia passo a passo de como integrar a solução logística Cainiao.
Para vendedores da região não coberta pela solução logística Cainiao, os Correios são a solução logística preferida. Nesse case, NFe não é obrigatório, dependendo da política dos Correios.
Os vendedores podem associar cada produto a um solução logística pelo modelo de envio. Ao criar um ordem de envio, solução logística é selecionada automaticamente de acordo com o modelo de envio.
Pré-requisito de logística para lojas
As lojas deverão atender aos seguintes requisitos para usar API de logística:
- A loja deve ter um endereço de remetente válido.
- A loja deve ter um contrato de logística válido. Tem que ser confirmado manualmente no painel do AliExpress pelo vendedor com um pedido de logística.
- A loja precisa entrar em contato com o gerente de conta para ativar a solução logística desejada (Cainiao ou Correios).
Para confirmar acordos de cada serviço logístico que vendendor deseja usar, é necessário emitir um pedido de logística no painel do AliExpress manualmente:
Obter endereços de vendedores
Esta etapa obtém os address_id
dos vendedores. address_id
é necessário para criar ordens de envio.
aliexpress.logistics.local.getlogisticsselleraddresses
{
"seller_address_query": "sender,pickup,refund"
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
seller_address_query | String[] | Sim | tipo de endereço do vendedor |
seller_address_query
pode ser um dos seguintes valores:
- sender
- pickup
- refund
seller_address_query
também pode ser uma lista de valores unidos por vírgula: sender,pickup,refund
.
Guia para configurar endereços de vendedores
Obter endereços de compradores
Devido à política de privacidade, os endereços dos compradores pode ser mascarados nos detalhes do pedido. Para obter endereços completos, você deve usar este endpoint.
aliexpress.solution.order.receiptinfo.get
{
"param1": {
"order_id": "1234567890654321",
}
}
Carregar NF-e para pedidos
Esta etapa é necessária para solução logística Cainiao. Deve ser feito antes de criar ordens de envio.
/brazil/local/invoice/upload
{
"file_name": "invoice.xml",
"trade_order_id": "1234567890654321",
"file_content": "file bytes in multipart/form-data..., not included for signature calculation"
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
file_name | String | Sim | Nome do arquivo |
trade_order_id | String | Sim | ID do pedido |
file_content | byte[] | Sim | Conteúdo do arquivo em bytes |
Criar pedido de envio
O endpoint requer endereços do vendedor e endereço do comprador, produtos e informações de envio.
Se a solicitação for bem-sucedida, o endpoint retornará
warehouse_order_id
, first_mile_mode
entre outras informações.
aliexpress.logistics.local.createwarehouseorder
{
"trade_order_id": "1234567890654321",
"package_num": 1,
"is_agree_upgrade_reverse_parcel_insure": false,
"undeliverable_decision": 0,
"insurance_coverage": { "cent": 699, "currency_code": "USD" },
"trade_order_from": "AE_BR",
"top_user_key": 123456,
"declare_product_d_t_os": [
{
"product_num": 1,
"product_id": 1234567890123456,
"product_declare_amount": 21.9,
"product_weight": 1.26,
"category_cn_desc": "Nome do Produto em português",
"category_en_desc": "Nome do Produto",
"sku_code": "123456",
"sku_value": "Azul, XXL",
"hs_code": "",
"aneroid_markup": false,
"contains_special_goods": false,
"only_battery": false,
"child_order_id": "1234567890654321",
},
],
"address_d_t_os": {
{
"receiver": {
"street": "Rua da Usuária",
"street_address": "Rua da Usuária",
"city": "Nome da Cidade",
"province": "SP",
"country": "BR",
"post_code": "99999-000",
"name": "Nome da Usuária",
"phone": "11999998888",
},
"sender": {
"address_id": 1234567890123
}
}
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
trade_order_id | String | Sim | ID do pedido |
package_num | Integer | Sim | Número de pacotes |
is_agree_upgrade_reverse_parcel_insure | Boolean | Não | Aceita o seguro reverso |
undeliverable_decision | Integer | Sim | Decisão de não entrega {0: retornar ao remetente, 1: descartar} |
insurance_coverage | Object | Não | Cobertura do seguro |
trade_order_from | String | Sim | Origem do pedido AE_BR |
top_user_key | Integer | Sim | ID do ISV |
declare_product_d_t_os | Object[] | Sim | Lista de produtos |
address_d_t_os | Object | Sim | Endereços do comprador e do vendedor |
declare_product_d_t_os
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
product_num | Integer | Sim | Número de produtos |
product_id | Long | Sim | ID do produto |
product_declare_amount | Double | Sim | Valor declarado do produto |
product_weight | Double | Não | Peso do produto |
category_cn_desc | String | Sim | Descrição do produto em português |
category_en_desc | String | Sim | Descrição do produto em inglês |
sku_code | String | Sim | Código SKU |
sku_value | String | Sim | Valor do SKU |
hs_code | String | Não | Código HS |
aneroid_markup | Boolean | Não | Produto com marcação aneróide |
contains_special_goods | Boolean | Não | Produto com conteúdo especial |
only_battery | Boolean | Não | Produto com bateria |
child_order_id | String | Sim | ID do pedido |
{
"result": {
"warehouse_order_id": 123456789012345,
"out_order_id": 1234567890123,
"trade_order_id": 1234567890123456,
"error_code": 1,
"trade_order_from": "AE_BR",
"first_mile_mode": "SELF_SEND"
},
"result_success": true,
}
Resposta
Resposta com result_success = true
e result.error_code = 1
indica que a solicitação foi bem-sucedida.
A solicitação pode falhar e a causa do erro pode ser não obvia. Se o venderdor for novo no AliExpress, verifique o checklist de pré-requisitos.
Consultar status de envio
{
"order_id": "1234567890654321",
}
O endpoint retorna os numeros de rastreamento internationallogistics_id
e os status de envio logistics_status
.
aliexpress.logistics.redefining.getonlinelogisticsinfo
{
"trade_order_id": "1234567890654321",
}
Ou alternativamente:
aliexpress.logistics.querylogisticsorderdetail
Consultar rasreamento de envio
O endpoint retorna o rastreamento de envio do pedido.
aliexpress.logistics.redefining.querytrackingresult
{
"to_area": "BR",
"logistics_no": "CANI123456789tx",
"service_name": "BRL2L_STANDARD_COMMERCIAL",
"origin": "AE_BR",
"out_ref": "1234567890654321",
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
to_area | String | Sim | Código do país de destino, BR |
logistics_no | String | Sim | Número de rastreamento |
service_name | String | Sim | Nome do serviço de envio |
origin | String | Sim | Origem do pedido AE_BR |
out_ref | String | Sim | ID do pedido order_id |
action_code
será retornado e pode ser um dos seguintes valores:
action_code | Descrição |
---|---|
LOGISTICS_PACKAGE_SEND | Pedido criado |
AE_WMS_SYSTEM_ACCEPT | Pedido aceito pelo armazém |
TRADE_WAREHOUSE_RECEIVE | Pedido recebido pelo armazém |
TRADE_WAREHOUSE_RECEIVE_FAIL | Falha ao receber o pedido |
TRADE_WAREHOUSE_PICKEDUP | Pedido coletado |
TRADE_WAREHOUSE_NO_PICKEDUP | Pedido não coletado |
TRADE_WAREHOUSE_ENTRY | Pedido recebido pelo armazém |
TRADE_WAREHOUSE_NO_ENTRY | Pedido não recebido pelo armazém |
LOGISTICS_SEC_DISPATCHED | Pedido enviado pelo armazém |
LOGISTICS_SEC_NO_DISPATCHED | Pedido não enviado pelo armazém |
LOGIS_CUSTOMS_CLR | Pedido liberado pela alfândega |
LOGIS_CUSTOMS_CLR_FAIL | Falha ao liberar o pedido pela alfândega |
TRADE_WAREHOUSE_HANDOVER | Pedido entregue ao transportador |
TRADE_WAREHOUSE_HANDOVER_FAIL | Falha ao entregar o pedido ao transportador |
LOGISTICS_PACKAGE_REFUND | Pedido devolvido ao remetente |
LOGISTICS_INTER_MAILNO | Número de rastreamento emitido |
LOGISTICS_PACKAGE_CANCEL | Pedido cancelado |
LOGISTICS_PACKAGE_NOT_CANCEL | Falha ao cancelar o pedido |
APPLY_CANCEL_ORDER | Vendendor solicitou cancelamento do pedido |
CAI_AIR_DELIVERY | Pedido liberado pela segurança da aviação |
CAI_AIR_DELIVERY_FAIL | Falha ao liberar o pedido pela segurança da aviação |
CAI_SIGN_IN | Pedido recebido e assinado pelo comprador |
CAI_SIGN_IN_FAIL | Falha ao receber e assinar o pedido pelo comprador |
LOGISTICS_INTERDELIVERY_EXCEPTION | Exceção de entrega |
PACKAGE_UNDELIVERABLE | Pedido não entregue |
LASTMILE_SC_ARRIVE | Pedido chegou ao centro de distribuição |
Obter etiqueta (PDF) de envio
O endpoint retorna a etiqueta de envio em formato PDF.
aliexpress.logistics.local.getwaybillbypdf
{
"warehouse_order_id": 1234567890123456,
"intl_tracking_no": "CANI123456789tx",
"print_detail": false
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
warehouse_order_id | Long | Sim | ID do order de envio order_id |
intl_tracking_no | String | Sim | Número de rastreamento |
print_detail | Boolean | Não | Imprimir detalhes do pedido |
Declaração de envio
O endpoint declara o envio do pedido.
aliexpress.logistics.sellershipmentfortop
{
"logistics_no": "CANI123456789tx",
"send_type": "all",
"service_name": "CAINIAO_BRL2L_STANDARD",
"out_ref": "1234567890654321"
}
Parâmetro | Tipo | Mandatório | Descrição |
---|---|---|---|
logistics_no | String | Sim | Número de rastreamento |
send_type | String | Sim | Tipo de envio all ou part |
service_name | String | Sim | Nome do serviço de envio, CAINIAO_BRL2L_STANDARD ou BRL2L_STANDARD_CORREIOS |
out_ref | String | Sim | ID do pedido order_id |
Guia para migração
Esta guia tem como objetivo auxiliar na migração da versão antiga para a versão atual da API do AliExpress.
A nova versão oferece recursos mais completos e melhor experiência de uso. Ao mesmo tempo, o caminho para a migração é simples e direto com poucas mudanças.
A plataforma legada está sendo desativada, com limite de tráfego em breve. Portanto, é importante que você migrar para a nova versão o quanto antes.
Qual versão da API estou usando?
Para saber qual versão da API você está usando, basta verificar o
host
da requisição.
Se o host
não for api-sg.aliexpress.com
,
você está usando a versão antiga da API e deve migrar para a nova.
O que mudou?
A versão atual da API do AliExpress possui algumas mudanças em relação a versão antiga.
Mudaças na Autenticação
access_token
não é compatível com a versão antiga. Para cada loja, é necessário gerar um novoaccess_token
na versão atual da API. É vital solicitar a autorização dos sellers assim que a atualização for feita.refresh_token
pode ser usado para gerar um novoaccess_token
na versão atual da API. Com esta atualização, sellers não precisam mais autorizar a cada 30 dias.
Mudanças nos API calls
Há algumas mudanças nos API calls da versão atual da API. Você pode seguir a seção API calls para mais detalhes. Alternativamente, você pode seguir a seção Usar API com SDK para utilizar o SDK.
Mudanças nos Endpoints
- Para endpoints que já existiam na versão antiga, os parâmetros permanecem os mesmos, os retornos também permanecem os mesmos.
- Novos endpoints foram adicionados na versão atual da API. Principalmente endpoints relacionados a logística, que foi listado na seção Guia para logística.
FAQ
Nome do produtos não aparece no Danfe
Para exibir corretamente o nome do produto no Danfe gerado por Cainiao,
é necessário que o nome do produto seja inserido
no campo category_cn_desc
quando criar um pedido logistico no Cainiao pelo o seguinte endpoint:
aliexpress.logistics.local.createwarehouseorder
Formato do endereço do pedido
Houve uma alteração no formulário de endereço do pedido no AliExpress.
Atualmente, existem duas versões coexistentes de endereços.
No novo formato, o street_address
é concatenado de 3 campos:
rua|numero|complemento
.
Erro B-071-0203-01-16-002
Este erro ocorre quando a loja não assinou o contrato de logística ou termos de serviço. Para resolver, acessar o panel do AliExpress e assinar os documentos necessários.
Erro “null#package_height” is not valid
A dimensão do produto precisa ser números inteiros positivos em centímetros.
Personalizar propriedades de SKU
Cada categoria define um esquema para seus produtos. O esquema inclui como as variantes podem ser definidas e quais propriedades podem variar entre os SKUs. Por exemplo, muitas categorias suportam variantes de cores diferentes. Uma lista de cores padrão é fornecida para os vendedores escolherem e deve ser suficiente na maioria dos casos.
{
"customized_name": true,
"visible": true,
"customized_pic": true,
"key_attribute": false,
"values": [
{
"names": "{\"en\":\"Army Green\",\"zh\":\"军绿色\"}",
"id": 200004889,
"has_sub_attr": false,
"value_tags": "{}"
},
{
"names": "{\"en\":\"Dark Grey\",\"zh\":\"深灰色\"}",
"id": 200004890,
"has_sub_attr": false,
"value_tags": "{}"
},
...
],
"input_type": "STRING",
"attribute_show_type_value": "check_box",
"required": true,
"spec": 1,
"features": "{\"AE_FEATURE_PUserDefineStrategy\":\"ES,BR\",\"AE_FEATURE_PDisplayStrategy\":\"ES,BR\"}",
"names": "{\"en\":\"Color\",\"zh\":\"颜色\"}",
"support_enum_input": false,
"id": 14,
"sku": true
}
Mas certos produtos podem ter cores que não estão presentes na lista fornecida.
Neste caso é necessário verificar o campo customized_name
e customized_pic
.
{
"sku_property_id": "14",
"property_value_id": "29",
"property_value_definition_name": "Wine Red",
"sku_image": "https://ae01.alicdn.com/kf/Sebc6e4fda11f45a7997******.jpg"
}
Se algum dos campos customized_name
ou customized_pic
estiverem marcados como true
,
você pode definir o texto ou a imagem da variante.
Isto significa que além de definir sku_property_id
e property_value_id
em
aeop_s_k_u_property
,
você também deve definir property_value_definition_name
e sku_image
em aeop_s_k_u_property_value
.
Erro TPL_NOT_EXIT
Este erro ocorre quando o produto não tem um modelo de frete ou o id fornecido não existe.
Para resolver, verificar seção Modelo de frete.