Magento2 The shipping information was unable to be saved: verify the input – Erro

Este erro ocorre porque na requisição de métodos de envio de estimativa existe o campo store_pickup_id dentro do endereço, e a interface correspondente Magento\Quote\Api\Data\AddressInterface não possui nenhum método acessório para isso.

Como um checkout funciona através da API do Magento, todos os valores que você passa devem ter métodos getter e setter na interface.

Recomendo que verifique:

corpo do pedido formulário de endereço de entrega quaisquer componentes e mixins de terceiros

Desabilite todos os módulos de terceiros e ainda está vendo o mesmo comportamento.

exception.log mostra o erro vindo de
[2019-08-06 22:05:07] main.CRITICAL: ID de endereço de cliente inválido 160022 {“exception”:”[object] (Magento\Framework\Exception\NoSuchEntityException(código: 0): ID de endereço de cliente inválido 160022 em …. vendor/magento/module-quote/Model/QuoteAddressValidator.php:79)”}

Isso é QuoteAddressValidator::doValidate(AddressInterface $address, ?int $customerId), que está sendo chamado pela linha 130 no mesmo arquivo. O segundo parâmetro para doValidate é definido como: $cart->getCustomerIsGuest() ? null : $cart->getCustomer()->getId()

No entanto, $cart->getCustomerIsGuest() está me reportando como convidado, quando na verdade não sou. Fiz login durante o checkout e continuo atualizando a página de checkout, por isso deve estar bem claro agora que estou logado. Na verdade, ele está me mostrando todos os meus endereços, então parece claramente que estou logado dentro.

Por fim, getCustomerIsGuest() extrai as informações da tabela de cotação, que verifiquei e descobri que, para meu customer_id, minha cotação ativa tinha a coluna customer_is_guest definida como 1. Não tenho certeza de como a cotação (mesclada do meu carrinho de convidados) acabou com customer_is_guest ainda definido como 1, mas depois de limpá-lo, o problema desapareceu (pelo menos por enquanto).

A consulta a seguir me ajudou a encontrar as outras citações na mesma situação:

SELECT entity_id, customer_id FROM quote WHERE customer_id != 0 AND customer_is_guest = 1;
Então eu os redefino para o status adequado:

UPDATE quote SET customer_is_guest = 0 WHERE customer_id != 0 AND customer_is_guest = 1;
As únicas citações que encontrei neste estado pertenciam a contas de teste. Continuarei com os testes com módulos de terceiros habilitados e comentarei novamente se encontrar alguma outra coisa que mexe indevidamente com o campo customer_is_guest.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado.