Multi Frete no Storefront
Nessa secção iremos falar sobre como implementar adequadamente a funcionalidade de Multi Frete no Storefront Wake. Para saber o que é essa funcionalidade clique aqui.
A seguir, detalharemos os passos técnicos necessários para implementar corretamente o Multi-frete, garantindo o funcionamento adequado da funcionalidade no Storefront Wake.
Esse recurso só deve ser utilizado por lojas em construção!!
Se você está trabalhando em uma loja que já está em produção e precisa utilizar o recurso de Multi-frete, entre em contato com o Suporte Wake solicitando ajuda.
Pré-requisito
Antes de mais nada você deve habilitar a configuração de Multi-frete no admin da loja. Para isso siga o caminho Fretes> Configurações> Multi fretes nos produtos de CDs diferentes (Storefront).

Como Cotar o Frete
Com a configuração de Multi-frete ativa, a cotação de frete deve ser realizada exclusivamente através da query shippingQuoteGroups
.
Importante!
A query
shippingQuotes
(antiga) foi substituída pelashippingQuoteGroups
(nova) e elas não devem ser utilizadas em conjunto.
A query shippingQuoteGroups
agrupa os produtos do checkout por Centro de Distribuição (CD) priorizado e retorna cotações para cada um desses grupos.
Para um exemplo real da query clique aqui
Query shippingQuoteGroups
:
shippingQuoteGroups(
cep: CEP
checkoutId: Uuid!
useSelectedAddress: Boolean
): [ShippingQuoteGroup]
checkoutId:
(Obrigatório) O identificador único do checkout.
cep
ou useSelectedAddress
: Utilize um CEP específico ou defina useSelectedAddress: true
para utilizar o endereço já salvo no checkout. Não envie ambos os parâmetros ao mesmo tempo.
Entendendo o Retorno
O retorno da query é um array de ShippingQuoteGroup
. Cada objeto neste array representa um pacote de frete, contendo os produtos de um mesmo CD e as opções de envio disponíveis para eles.
Estrutura do ShippingQuoteGroup
:
type ShippingQuoteGroup {
distributionCenter: DistributionCenter
pickups: [PickupShippingQuote]
products: [ShippingQuoteGroupProduct]
shippingQuotes: [GroupShippingQuote]
}
distributionCenter
: O Centro de Distribuição de origem para este pacote.products
: A lista de produtos que fazem parte deste pacote.shippingQuotes
: A lista de cotações de frete (entrega ou retirada) disponíveis para este pacote, baseadas no CD priorizado.pickups
: A lista de opções de retirada adicionais.
Como selecionar o frete para cada pacote
Para cada ShippingQuoteGroup
retornado pela query, sua aplicação deve permitir que o usuário final selecione uma das opções de frete disponíveis (shippingQuotes
), e então enviar essa escolha via mutation checkoutSelectShippingQuote
. Clique aqui para ver um exemplo real desta mutation.
- Mutation
checkoutSelectShippingQuote
:
checkoutSelectShippingQuote(
checkoutId: Uuid!
shippingQuoteId: Uuid!
distributionCenterId: ID
# Outros campos como additionalInformation, customerAccessToken, etc.
): Checkout
Fluxo de seleção:
- Execute a query
shippingQuoteGroups
. - Para cada grupo no array de resposta:
- Apresente as opções de frete disponíveis no campo
shippingQuotes
.
- Apresente as opções de frete disponíveis no campo
- Para o usuário selecionar uma opção execute a mutation
checkoutSelectShippingQuote
, enviando:checkoutId
: O ID do checkout.shippingQuoteId
: O ID da cotação escolhida (vinda deshippingQuotes
).distributionCenterId
: O ID do CD principal do grupo (vindo dedistributionCenter.id
).
Verificando as Cotações selecionadas e concluindo a etapa
Após cada chamada à mutation checkoutSelectShippingQuote
, é possível verificar o estado atual das seleções de frete. O campo selectedShippingGroups
no objeto Checkout
(retornado por queries e mutations de checkout) contém essa informação.
O Campo selectedShippingGroups
selectedShippingGroups
Este array espelha a estrutura dos pacotes de frete, mostrando qual cotação foi selecionada para cada um.
Exemplo de Query para Verificar o Checkout
:
query GetCheckout($checkoutId: String!) {
checkout(checkoutId: $checkoutId) {
checkoutId
# O array de grupos de cotações já selecionadas.
selectedShippingGroups {
distributionCenter {
id # CD do pacote
sellerName
}
products {
productVariantId
}
# A cotação que foi selecionada para este pacote.
# Se este campo for nulo, a seleção para este pacote ainda está pendente.
selectedShipping {
shippingQuoteId
name
type
value
}
}
completed
}
}
A seleção de frete é considerada concluída quando todos os grupos no array selectedShippingGroups
tiverem o campo selectedShipping
preenchido (não nulo). A partir desse ponto, é possível prosseguir para as etapas seguintes do checkout, como pagamento e finalização.
Updated about 6 hours ago