Guia de uso
Introdução
O FBA Onsite (Fulfillment by Amazon Onsite), ou FBAOS, é o programa de entrega pela Amazon e armazenamento pelo vendedor. Vale ressaltar a diferença para o FBA (também chamado de FBA Classic), onde a entrega e armazenamento são ambos feitos pela Amazon. É através destes programas 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 FBAOS é feita exclusivamente pelo vendedor (sem utilizar integração) através de uma plataforma da Amazon chamada Seller Flex Tool. Ou seja, o desenvolvedor NÃO deve enviar nenhum feed de estoque para uma oferta FBAOS.
Se o desenvolvedor fizer isso, ele estará duplicando os produtos do vendedor: o produto existirá tanto como uma oferta em FBAOS quanto uma oferta MFN. -
O XML das notas fiscais das vendas dentro do programa devem ser enviadas para a Amazon via
API. Diferentemente de um produto MFN ou FBA, as vendas de produtos FBAOS exigem com
que os XMLs das notas sejam enviados para a Amazon após emissão. -
A gestão do fluxo de pedidos é feita com auxílio do Amazon SQS (serviço de enfileiramento de
mensagens do AWS). Para participar de FBAOS, cada vendedor terá que criar uma fila no SQS
e, será através desta fila, que ele receberá as notificações dos pedidos que ele deve processar.
Caberá aos desenvolvedores criarem uma fila SQS própria e conectá-la a cada fila uma das filas
dos vendedores. Além disso, é preciso liberar acesso para que a fila dos vendedores possa
escrever na fila do desenvolvedor. Só assim este último saberá quais pedidos estão pendentes
e que precisam de nota emitida (esta fila contem o ID do pedido a ser processado). Este serviço
é pago e não é possível desenvolver para FBAOS sem utilizá-lo. -
Notifications APIs: essas API permitem com que suas aplicações leiam e escrevam na fila do
SQS. -
Shipment Invoicing APIs: permitem com que o desenvolvedor busque as informações dos
pedidos e envie o XML das notas para a Amazon. -
Conversão de produtos para FBAOS: quando um produto é criado na Amazon, ele sempre é
criado como sendo uma oferta MFN. Para vendê-lo dentro do programa de FBAOS é preciso
convertê-lo a uma oferta FBAOS, utilizando a API de Feed de estoque.
1. Fluxograma
Fluxograma de venda
Para o vendedor poder operar no dia a dia dentro do programa de FBAOS, ele deve seguir os passos abaixo. Basicamente, ele faz a gestão de seu inventário via Seller Flex (escaneando os itens que quer vender) e, após a venda ser executada, ele separa e empacota os itens para envio. Após ter a nota fiscal emitida e enviada para a Amazon, o vendedor escaneia os pacotes, etiqueta os pedidos e aguarda a coleta (que é realizada via agendamento, com uma transportadora parceira da Amazon - esse alinhamento é feito entre vendedor e o time de contas executivas da Amazon). Após a coleta, o
produto é entregue ao comprador final.
Fluxograma de Invoices
O Fluxo de invoice consiste em ler shipments pendentes na fila do AWS, buscar dados dos shipments
via API de getShipmentDetails, emitir a nota junto à SEFAZ (se o desenvolvedor for um ERP, já pode
fazer todo o processo in-house, caso contrário, precisa acionar o ERP parceiro) e submeter o XML da
nota para a Amazon (via API de submitInvoice). Caso o processamento tenha sido concluído com
sucesso (chamar a API de getInvoiceStatus), o processo chega ao fim. Caso não tenha sido concluído,
corrigir a nota e re-emitíla, passando pelas etapas posteriores novamente.
2. SQS e Notificações
Esse passo é essencial para as notificações
Configure o SQS na conta Amazon, após esse passo configure as notificações.
Passo a passo de configurações SQS.
Configure o tipo da notificação
Passo a passo para configurar as notificações.
Para criar uma notificação configure o tipo
FBA_OUTBOUND_SHIPMENT_STATUS
Tipo de notificação
Notification Type: FBA_OUTBOUND_SHIPMENT_STATUS
Quando um desenvolvedor se inscreve para receber notificações usando o FBA_OUTBOUND_SHIPMENT_STATUS, ele irá receber mensagens sempre que um novo shipment for
criado ou cancelado.
{
"NotificationVersion": "1.0",
"NotificationType": "FBA_OUTBOUND_SHIPMENT_STATUS",
"PayloadVersion": "1.0",
"EventTime": "2020-01-11T00:09:53.109Z",
"Payload": {
"FBAOutboundShipmentStatusNotification": {
"SellerId": "merchantId",
"AmazonOrderId": "113-2646096-4474645",
"AmazonShipmentId": "DrLqQwqvb",
"ShipmentStatus": "Created"
}
},
"NotificationMetadata": {
"ApplicationId": "appId",
"SubscriptionId": "subId",
"PublishTime": "2020-01-11T00:02:50.501Z",
"NotificationId": "requestId"
}
}
3. Shipment Invoicing
Após receber as notificações de shipments criados, é necessário processá-los: puxar as informações do pedido, emitir a nota e enviá-la para a Amazon. Para fazer isso, utilizar as 3 APIs de Shipment Invoicing:
- getShipmentDetails
- submitInvoice
- getInvoiceStatus
RDT Token
Sobre o RDT Token
Para fazer requisições RDT Token é necessário fazer a chamada especifica para cada endpoint, para saber tudo sobre RDT acesse a documentação completa.
Antes de rodar a API de getShipmentDetails é necessário gerar um RDT (Restricted Data Token) que
funcione para esta API (para as outras APIs desta seção, não é necessário RDT – somente para
getShipmentDetails).
Chamada POST
https://sellingpartnerapi-na.amazon.com/tokens/2021-03-01/restrictedDataToken
{
"restrictedResources": [
{
"method": "GET",
"path": "/fba/outbound/brazil/v0/shipments/{shipmentId}"
]
}
{
"payload": {
"restrictedDataToken": "Atz.sprdt|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR",
"expiresIn": 3600
}
}
getShipmentDetails
Esta API retorna os dados do shipment.
Use o valor retornado na chamada de RDT para popular o x-amz-access-token
.
Segue um detalhamento de como montar um request.
GET: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/{shipmentId}
Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb
{
"payload": {
"ShipmentDetail": {
"PurchaseDate": "2018-04-16T14:44:38Z",
"WarehouseId": "XXXX",
"AmazonOrderId": "701-0000000-0000000",
"AmazonShipmentId": "DrLqQwqvb",
"BuyerTaxInfo": {
"TaxClassifications": {
"TaxClassification": {
"Name": "CPF",
"Value": "99999999999"
}
}
},
"PaymentMethodDetails": {
"PaymentMethodDetail": "CreditCard"
},
"BuyerCounty": "Centro",
"BuyerName": "Fulano da Silva",
"MarketplaceId": "A2Q3Y263D00KWC",
"ShippingAddress": {
"City": "SAO PAULO",
"PostalCode": "00000-000",
"StateOrRegion": "SP",
"Phone": "11912345678",
"CountryCode": "BR",
"Name": "Beltrano da Silva",
"AddressLine1": "Rua da Consolação, 700",
"AddressLine2": "Apto 32"
},
"ShipmentItems": {
"ShipmentItem": {
"QuantityOrdered": "2",
"Title": "iPhone X Apple Cinza Espacial, 64 GB e Câmera 12 MP",
"PromotionDiscount": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"ASIN": "B078HVJB69",
"SellerSKU": "XY-1A0O-B1CD",
"OrderItemId": "19441439621890",
"ShippingPrice": {
"CurrencyCode": "BRL",
"Amount": "30.00"
},
"GiftWrapPrice": {
"CurrencyCode": "BRL",
"Amount": "00.00"
},
"ItemPrice": {
"CurrencyCode": "BRL",
"Amount": "5099.99"
},
"ShippingDiscount": {
"CurrencyCode": "BRL",
"Amount": "00.00"
},
"SerialNumbers": {
"SerialNumber": "1234567890"
}
}
}
}
}
}
submitInvoice
A API de submitInvoice permite com que o desenvolvedor envie o XML da nota fiscal de volta para a
Amazon. Para o campo x-amz-access-token
, utilizar o token normal (não é o RDT).
POST: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/{shipmentId}/invoice
Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb/invoice
{
"InvoiceContent": base64_encode($xml),
"ContentMD5Value": base64_encode(md5($xml, true))
}
A resposta vem vazia
{}
getInvoiceStatus
Após envio da nota fiscal, é necessário saber se ela foi processada corretamente.
GET https://sellingpartnerapi-na.amazon.com//fba/outbound/brazil/v0/shipments/{shipmentId}/invoice/status
Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb/invoice/status
{
"payload": {
"Shipments": {
"Shipment": {
"AmazonShipmentId": "DrLqQwqvb",
"InvoiceStatus": "Accepted"
}
},
"ResponseMetadata": {
"RequestId": "98bbbfc7-22fe-42cf-9ae7-7cfb1849b90f"
}
}
}
Updated over 1 year ago