Fulfillment é o serviço de armazenamento dos produtos e envio do pedido através do CD B2W, ou seja, o lojista utiliza o centro de distribuição da B2W para estocar seus produtos e despachar ao cliente. Por este motivo foi disponibilizado via API a possibilidade da loja enviar o XML da nota em 2 formatos, tanto o arquivo quanto o caminho onde o XML se encontra. Além da possibilidade de efetuar a consulta (GET) do estoque que possui no CD e baixar as notas de retorno simbólico.
Existem situações em que os lojistas, além do Fulfillment, utilizam o próprio CD para fazer o envio dos pedidos.
Caso haja estoque do item em ambos os CDs, a prioridade do envio será sempre pelo Fulfillment. Nestes casos, haverá uma identificação no pedido no campo "shipping_method", onde será informado "B2W Fulfillment".
Uma vez que a informação é "B2W Fulfillment", significa que o pedido será enviado via Fulfillment, ou seja, o seller deve enviar o XML da nota para a B2W via integração ou via upload do arquivo diretamente no portal da Skyhub.
Se o parâmetro "shipping_method" vier preenchido com informação diferente da citada acima, o lojista terá de verificar qual transportadora utilizará para atender o pedido em questão.
Por exemplo: Se, "shipping_method":"b2wentregacorreios", o pedido deverá ser atendido pelo modo de serviço B2W Entrega by Correios.
Pedidos identificados como "B2W Fulfillment", NÃO devem ser enviados pelo CD da loja.
Para enviar o XML será utilizado o método POST o Endpoint:
POST /fulfillment/b2w/delivery
A baixo descreveremos como enviar os 2 formatos, tanto o arquivo quanto o caminho do arquivo.
Neste formato será necessário enviar o arquivo XML no body da requisição:
curl --request POST \--url https://api.skyhub.com.br/fulfillment/b2w/delivery \--header 'accept: application/json' \--header 'content-type: application/json' \--header 'x-accountmanager-key: SUAXACCOUNT' \--header 'x-api-key: YOUR API KEY HERE' \--header 'x-user-email: MUDAR@SEU_EMAIL.COM' \--data '{"recipient_document":"cnpj do CD","invoice":{"payload":"...insert XML body here..."}}'
Name | Type | Required | Description | Example |
accept | String | Required | O formato que você deseja receber o retorno da requisição | application/json |
Content-type | String | Required | | application/json |
x-user-email | String | Required | E-mail da loja | seu@email.com |
x-api-key | String | Required | Token da loja | SuaApiKey |
x-accountmanager-key | String | Required | Código identificador da sua Integração | SUAXACCOUNT |
Request Body
{"recipient_document": "cnpj do CD","invoice": {"payload": "...insert XML body here..."}}
O envio do XML deve ser em UTF-8-BOM
Responses:
200 - Success
Caso envie o XML em UTF-8, o aquivo não será aceito pela B2W, retornando erro de formatação.
Neste formato será necessário enviar o caminho do aquivo XML no body da requisição:
curl --request POST \--url https://api.skyhub.com.br/fulfillment/b2w/delivery \--header 'accept: application/json' \--header 'content-type: multipart/form-data' \--header 'x-accountmanager-key: SUAXACCOUNT' \--header 'x-api-key: YOUR API KEY HERE' \--header 'x-user-email: MUDAR@SEU_EMAIL.COM' \--data '{"invoice[payload]=caminho do arquivo XML":null,"recipient_document":"cnpj CD"}'
Request Headers
Name | Type | Required | Description | Example |
accept | String | Required | O formato que você deseja receber o retorno da requisição | application/json |
Content-type | String | Required | | application/json |
x-user-email | String | Required | E-mail da loja | seu@email.com |
x-api-key | String | Required | Token da loja | SuaApiKey |
x-accountmanager-key | String | Required | Código identificador da sua Integração | XACCOUNT |
Request Body:
{"invoice[payload]=caminho do arquivo XML": null,"recipient_document": "cnpj CD"}
O envio do XML deve ser em UTF-8-BOM
Responses:
200 - Success
Caso envie o XML em UTF-8, o aquivo não será aceito pela B2W, retornando erro de formatação.
Para se certificar da quantidade de estoque dos itens que estão no CD, foi desenvolvido um Endpoint para que a quantidade seja consultada via API.
Para consultar o estoque será utilizado o método GET e o Endpoint abaixo:
GET /fulfillment/b2w/stock
Ao fazer a consulta através do Endpoint acima, será listado apenas os primeiros 100 skus. Para consultar mais de 100 skus, será necessário paginar através de querys utilizando os parâmetros abaixo:
page: identifica qual página será solicitada (inicia no 0). per_page: quantidade de registro, sendo que o limite por pagina é 100.
Demais parâmetros:
sku= : Informar o código sku
recipient_document=cnpjdoCD: CNPJ do cd onde o produto esta estocado.
Utilizando os parâmetros informados acima, a requisição ficará da seguinte forma:
Example Request
curl --request GET \--url 'https://api.skyhub.com.br/fulfillment/b2w/stock?recipient_document=cnpjdoCD&sku=SKU&page=0&per_page=100' \--header 'accept: application/json' \--header 'content-type: application/json' \--header 'x-api-key: YOUR API KEY HERE' \--header 'x-user-email: MUDAR@SEU_EMAIL.COM'
Request Headers:
Name | Type | Required | Description | Example |
accept | String | Required | O formato que você deseja receber o retorno da requisição | application/json |
Content-type | String | Required | | application/json |
x-user-email | String | Required | E-mail da loja | seu@email.com |
x-api-key | String | Required | Token da loja | SuaApiKey |
x-accountmanager-key | String | Required | Código identificador da sua Integração | XACCOUNT |
Query Parameters
Name | Type | Required | Description | Example |
recipient_document | String | Optional | CNPJ do CD | 58441889000122 |
sku | String | Optional | sku do produto | 123 |
page | Integer | Optional | Página da requisição de pedidos | 0 |
per_page | Integer | Optional | Quantidade de pedidos por página (máximo = 100) | 100 |
Responses:
200 - Success
{"stock": [{"sku": "SKU","recipient_document": "776574000741","deposit_type": "3022 SB Revenda Outlet","stock": "2","reserved_stock": "0"}]}
Essa função será utilizado para que o seller tenha o retorno das baixas de estoque que ocorreram no CD, por exemplo: A loja enviou a quantidade de 100 itens para o CD. A cada pedido que ocorre é emitido a Nota, e a loja pode baixa-la, para que auxilie em sua contabilidade.
Para baixar a nota será necessário utilizar ao Endpoint:
GET fulfillment/b2w/delivery/nfe?cd_vat_number=05886614004476&delivery=12345678
Example Request:
curl --request GET \--url 'https://api.skyhub.com.br/fulfillment/b2w/delivery/nfe?cd_vat_number%20=05886614004476&delivery=12345678&order_access_key=foo&cd_vat_number=05886614004476' \--header 'accept: application/json' \--header 'content-type: application/json' \--header 'x-api-key: YOUR API KEY HERE' \--header 'x-user-email: MUDAR@SEU_EMAIL.COM'
Request Headers
Name | Type | Required | Description | Example |
accept | String | Required | O formato que você deseja receber o retorno da requisição | application/json |
Content-type | String | Required | | application/json |
x-user-email | String | Required | E-mail da loja | seu@email.com |
x-api-key | String | Required | Token da loja | SuaApiKey |
x-accountmanager-key | String | Required | Código identificador da sua Integração | XACCOUNT |
Query Parameters
Name | Type | Required | Description | Example |
cd_vat_number | String | Required | CNPJ do CD | 05886614004476 |
delivery | String | Optional | Numero da Entrega | 12345678 |
order_access_key | String | Optional | Chave de Acesso da Venda | |
IMPORTANTE delivery e order_access_key: Estes dois parâmetros são opcionais, porém um deles deve ser informado para efetuar a busca, ou seja é obrigatório informar um ou outro.
Responses
200 - SUCCESS
{ "nfes": [{ "id": "NFe35190105886614004476550030000537481149312314", "xml_content": "CONTEUDO DA NFE XML AQUI" }] }
422 - ERROR
{ "error": "ORA-20000: [PC_NFCA_WS.CONSULTA_XML_NF_POST] - ORA-20101: [PC_NFCA_CON.obtem_xml_nf_cnpj] Erro ao obter lista NFe (id_cia/entrega/chave) 123456 ORA-20000: pc_fire.obtem_filial: CNPJ 7123456000123 nao encontrado.\nPC_FILI.Registro 2" }
Possibilidade de listar as entregas e fazer o download das notas de retorno simbólico, para cada entrega com status finalizado.
Para baixar a nota será necessário utilizar o Endpoint:
GET https://api.skyhub.com.br/fulfillment/b2w/delivery
Example Request
curl --request GET \--url 'https//api.skyhub.com.br/fulfillment/b2w/delivery?from_date=DD%2FMM%2FAAAA&to_date=DD%2FMM%2FAAAA&status=finished%20&cd_vat_number=05886614004476&page=1&per_page=50' \--header 'accept: application/json' \--header 'content-type: application/json' \--header 'x-api-key: YOUR API KEY HERE' \--header 'x-user-email: YOUR@EMAIL.HERE'
Request Headers
Name | Type | Required | Description | Example |
accept | String | Required | O formato que você deseja receber o retorno da requisição | application/json |
Content-type | String | Required | | application/json |
x-user-email | String | Required | E-mail da loja | seu@email.com |
x-api-key | String | Required | Token da loja | SuaApiKey |
x-accountmanager-key | String | Required | Código identificador da sua Integração | XACCOUNT |
Query Parameters
Name | Type | Required | Description | Example |
| String | Required | Data de inicio para o filtro dos pedidos |
|
| String | Required | Data final para o filtro dos pedidos |
|
| String | Optional | As opçoes são: finished (Entregas Liquidadas), open (em aberto), canceled (Cancelados), all ou se não passar esse parâmetro virá todas. Lembrando que apenas as Entregas Liquidadas(finished) terão Nota Fiscal disponível para download. |
|
| String | Optional | CNPJ do CD: quando informado irá trazer apenas as entregas do CD Informado. |
|
| String | Optional | Numero da página,. Caso não informe retornará a primeira página que é a 0 |
|
| String | Optional | Quantidade de registros por página. Caso não informe retornará 50 por padrão. |
|
Responses
200 - SUCCESS
{"deliveries": [{"cd_vat_number": "5886614004476","delivery": "107209378701","status": "Finalizada","order_access_key": "35190133014556138384550010000499781579904321","invoice_sent_at": "10/01/2019 00:00:00","xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=5886614004476&order_access_key=35190133014556138384550010000499781579904321"}],"total_items": 7,"next_page_path": "/fulfillment/b2w/delivery?from_date=10%2F01%2F2019&page=1&status=finished&to_date=10%2F01%2F2019"}
404 - ERROR
422 - ERROR
{"error": "ORA-20000: pc_pedc_ag_con.lista_pedidos - erro: ORA-20000: Informe o periodo De, para lista de pedidos."}