Guia de uso
Introdução
O FBA Classic é o programa de armazenamento e entrega pela Amazon. É através deste programa de FBA que o vendedor consegue o selo Prime (entrega grátis para compradores membros).
Conceitos básicos
-
A gestão de inventário no FBA Classic é feita exclusivamente pelo vendedor (sem utilizar integração) através do Seller Central. Ou seja, o desenvolvedor NÃO deve enviar nenhum feed de estoque para uma oferta FBA Classic. Se o desenvolvedor fizer isso, ele estará duplicando os produtos do vendedor: o produto existirá tanto como uma oferta em FBA Classic quanto uma oferta MFN.
-
As notas fiscais são geradas pela Amazon.
-
Não existe API para importar os XML das notas fiscais das vendas dentro do programa. Caso seja necessário, o seller fará essa etapa manualmente.
-
A gestão do fluxo de pedidos é feita com auxílio das APIs de reports (relatórios) na Amazon.
O processo consiste em baixar uma lista de Order Ids através das APIs de reports e, uma vez com
isso em mãos, chamar o getOrders e getOrderItems para importar todos os dados do pedido.
1. Fluxograma
Fluxograma de importação de pedidos
O processo consiste em baixar uma lista de Order Ids através das APIs de reports e, com isso em
mãos, chamar o getOrders e getOrderItems para todos os pedidos da lista.
Muito importante
Fluxo de importação deve rodar num intervalo de 6 em 6 horas (os reports não são atualizados em real time, então não é necessário rodar em intervalos curtos).
Para createReport, não coloque um intervalo de datas maior do que 2 ou 3 dias, para evitar erros de geração do arquivo.
Uma vez que um pedido venha no report, procure mantê-lo em sua base por 1 mês. OrderIDs mais antigos sairão do relatório, mas é importante mantê-los sua plataforma para fornecer uma boa experiência ao seller
2. Busca de pedidos
Você deve conceder permissão para o uso do SQS
Essa permissão deve ser feita através do console AWS
É importante subscrever cada seller do programa de FBA Classic na notificação REPORT_PROCESSING_FINISHED
. Ao fazer isso, o integrador receberá uma notificação no SQS sempre que o relatório de processamento de pedidos for finalizado.
Criando uma Subscription
Ao chamar esta API, o desenvolvedor está inscrevendo o seller em sua fila no SQS. Inscrevendo-o no notification_type de REPORT_PROCESSING_FINISHED
você receberá notificações de criação ou cancelamento de qualquer relatório.
Para chamar esta Endpoint, o desenvolvedor precisa saber qual é o destinationId de sua fila.
Caso não tenha o destinationId
O
destinationId
é um campo que o integrador deve ter salvo em banco, caso não tenha umdestinationId
, verifique a documentação de Notificações.
Segue exemplo de como conseguir este token (que será necessário para chamar a API de createDestination).
Chamada POST
POST: https://sellingpartnerapi-na.amazon.com/notifications/v1/subscriptions/REPORT_PROCESSING_FINISHED
Body
{
"payloadVersion":"1.0",
"destinationId":"3acafc7e-121b-1329-8ae8-1571be663aa2" //Exemplo de destinationId
}
{
"payload":{
"subscriptionId":"7fcacc7e-727b-11e9-8848-1681be663d3e",
"payloadVersion":"1.0",
"destinationId":"3acafc7e-121b-1329-8ae8-1571be663aa2"
}
}
Criando um destination
É necessário chamar esta API para criar um destinationId. Com este destinationId, é possível chamar a API de subcription e começar a receber as notificações.
Algumas APIs de Notification são denominadas de Operações Grantless e precisam de um token especial para ser executada.
POST: https://sellingpartnerapi-na.amazon.com/notifications/v1/destinations
Body
{
"name":"YourDestinationName",
"resourceSpecification":{
"sqs":{
"arn":"arn:aws:sqs:us-east-2:444455556666:queue1" //ID da fila
}
}
}
{
"payload": {
"resource": {
"sqs": {
"arn": "arn:aws:sqs:us-east-1:112233445566:sp_api_queue"
},
"eventBridge": null
},
"destinationId": "b48425e5-acec-465d-945a-cabb67bb249a",
"name": "sp_api_queue"
}
}
Fluxo de importação de pedidos
Esta API retorna um reportId. Use o valor retornado para chamar getReport na próxima etapa.
POST https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/reports
Importante
Não coloque um intervalo maior do que 3 dias, pois isso pode gerar erros ao criar o relatório.
Body
//Exemplo marketplace Brasil
{
"marketplaceIds": [
"A2Q3Y263D00KWC"
],
"reportType": "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL",
"reportOptions": {},
"dataStartTime": "2021-01-14T05:21:30.960Z",
"dataEndTime": "2021-01-14T19:05:56.269Z"
}
//----------------------------------------------------//
//Exemplo para vários Markets
{
"reportType": "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL",
"dataStartTime": "2019-12-10T20:11:24.000Z",
"dataEndTime": "2019-12-10T20:11:24.000Z",
"marketplaceIds": [
"A2Q3Y263D00KWC",
"ATVPDKIKX0DER"
]
}
{
"reportId": "55939018857"
}
getReport
Ao concluir a etapa anterior, você obteve um reportId. Chame a API de getReport para gerar um
reportDocumentId (este parâmetro será usado posteriormente).
Chamada GET
GET https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/reports/{reportId}
Exemplo: https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/reports/55939018857
Verifique o status do pedido
Tipos | Descrição |
---|---|
IN_PROGRESS | Pedido em processamento |
DONE | Pedido concluído |
CANCELLED | Pedido cancelado |
{
"reportType": "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL ",
"processingEndTime": "2021-08-18T20:11:51+00:00",
"processingStatus": "DONE",
"marketplaceIds": [
"A2Q3Y263D00KWC"
],
"reportDocumentId": "amzn1.spdoc.1.3.0f4d4dfe-fb81-4dcb-acab-c9a30c9d446c.T2ET7HJ8HQGEHM.107",
"reportId": "54058018857",
"dataEndTime": "2021-08-18T00:00:00+00:00",
"createdTime": "2021-08-18T20:11:33+00:00",
"processingStartTime": "2021-08-18T20:11:39+00:00",
"dataStartTime": "2021-08-17T00:00:00+00:00"
}
Lendo a notificação REPORT_PROCESSING_FINISHED
Para saber se o report foi processado ou não, leia suas notificações em banco. Para identificar as notificações prontas, no payload da notificação, filtre por:
reportType: GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL
processingStatus: DONE
Para todas as notificações que tiverem estes parâmetros no payload, salve o valor do campo reportDocumentId
e depois, delete essa notificação da fila.
Ao concluir a etapa anterior, você obteve um reportDocumentId
. Chame a API de getReportDocument
para gerar a url de download do arquivo.
GET: https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/documents/{url do report}
Exemplo: https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/documents/amzn1.spdoc.1.3.0f4d4dfe-fb81-4dcbacab-c9a30c9d446c.T2ET7HJ8HQGEHM.107
{
"reportDocumentId": "amzn1.spdoc.1.3.0f4d4dfe-fb81-4dcb-acab-c9a30c9d446c.T2ET7HJ8HQGEHM.107",
"url": "https://tortuga-prod-na.s3-external-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.3.f09ca40c-10c0-481baf4c-14d910cd25ff.T220M406H2L14T?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210818T201634Z&XAmz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=AKIA5U6MO6RAFBOQNLTF%2F20210818%2Fus-east1%2Fs3%2Faws4_request&X-AmzSignature=55e71645a895f01b9dc7875cf89da6f0031a2bf1b7b19a8399daac9328fcb067"
}
{
"notificationVersion": "2020-09-04",
"notificationType": "REPORT_PROCESSING_FINISHED",
"payloadVersion": "1.0",
"eventTime": "2021-10-06T13:59:49.268Z",
"payload": {
"reportProcessingFinishedNotification": {
"sellerId": "AW4K9WPVX0NIV",
"reportId": "132246018906",
"reportType": "GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL",
"processingStatus": "DONE",
"reportDocumentId": "amzn1.tortuga.3.e5b9a150-90f4-411f-9f4a-77aba08ff27f.T3FJ42MLJNQ02C"
}
},
"notificationMetadata": {
"applicationId": "amzn1.sp.solution.f7a0e118-1efa-413a-b8f9-f9ab6be17199",
"subscriptionId": "ecddb135-c898-4839-a267-fe81e2d80c43",
"publishTime": "2021-10-06T13:59:49.316Z",
"notificationId": "4e2fa5b9-c352-498d-a200-3933ed7b8997"
}
}
3. Baixar relatório
Configurações
Clique na url retornada na API de getReportDocument e baixe o arquivo (separado por tabs). Os pedidos aqui devem ser importados a nível shipmentID: indicamos desta forma pois um mesmo orderID pode servir para shipments FBAOS e FBA Classic. Ou seja, em tela para o seller, deve ser mostrado os pedidos à nível shipmentID.
Importante também mencionar que este relatório traz pedidos FBA Classic e Onsite, por isso, deve
haver um filtro para separar os 2 tipos:
Importante
Para filtrar somente shipments Classic, busque na coluna
fulfillment-center-id
por somente pedidos cujos 3 primeiros caracteres forem ‘GRU’. Ignore os pedidos que não se enquadrem na regra.Cruze essa lista de pedidos com os pedidos em sua base e, somente continue o fluxo para aqueles pedidos que não haviam sido importados OU que tinham status
UNSHIPPED
.Os dados de preço, frete, desconto, já podem ser exportados da própria planilha:
item-price: traz o preço do produto (NÃO deve ser multiplicado pelo nº de itens)
shipping-price: custo do frete (NÃO deve ser multiplicado pelo nº de itens)
item-promotion-discount: desconto do produto (NÃO deve ser multiplicado pelo nº de itens)
Os campos carrier e tracking-number informam a transportadora e o código de rastreio
Exemplo para filtro e Shipment-id
No exemplo abaixo, considerar somente os pedidos das linhas 2,3,5 e 3 (desconsiderar o pedido da linha 4).
- Perceba que os itens das linhas 2,3 e 4 são do mesmo OrderID, mas todos com shipmentIDs diferentes. Como o item da linha 4 não deve ser importado, o seller deve ver, para o mesmo orderID, 2 pedidos distintos, identificados pelo shipmentID (linhas 2 e 3).
- Pedidos com o mesmo OrderID terão endereços de entrega iguais e informações de comprador, também iguais.
Chamada getOrders
Exporte esses Ids e rode a API de getOrders.
GET https://sellingpartnerapi-na.amazon.com/orders/v0/orders?AmazonOrderIds={OrderId},{OrderId}&MarketplaceIds={ID da Loja}
GET https://sellingpartnerapi-na.amazon.com/orders/v0/orders?CreatedAfter=2021-01-01T12-12-12Z&MarketplaceIds=ATVPDKIKX0DER
Exemplo: https://sellingpartnerapi-na.amazon.com/orders/v0/orders?AmazonOrderIds=702-9694551-6023421,702-6936402-3055424&MarketplaceIds=A2Q3Y263D00KWC
GET https://sellingpartnerapi-na.amazon.com/orders/v0/orders/702-9694551-6023421/orderItems
GET https://sellingpartnerapi-na.amazon.com/orders/v0/orders/702-6936402-3055424/orderItems
No exemplo abaixo, considerar somente os pedidos das linhas 2 e 3 (desconsiderar os pedidos das linhas 4 e 5).
Exporte esses Ids e rode a API de getOrders.
Exemplo de requests getOrders (somente com 2 orderIds)
GET https://sellingpartnerapi-na.amazon.com/orders/v0/orders?AmazonOrderIds=702-9694551-6023421,702-6936402-3055424&MarketplaceIds=A2Q3Y263D00KWC
Updated over 2 years ago