Magento 2

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.

Post Recentes

YouTube sem cookie: adiar o embed do vídeo e do Maps até o aceite

Seu banner de consentimento está certo, mas o vídeo incorporado grava cookie de terceiro no primeiro carregamento. Troque o domínio…

8 horas atrás

Custom post type dando 404: flush_rewrite_rules na ativação do plugin

A listagem do custom post type abre e o single dá 404 no WordPress 6.9. Entenda o cache das rewrite…

2 dias atrás

systemd timer no lugar do cron: agendar script com log e sem execução dupla

Um par .service e .timer substitui a linha do crontab com log no journal, execução perdida recuperada no boot e…

2 dias atrás

Descrição em massa no WooCommerce: wp eval-file lendo a lista de SKUs

400 produtos importados do fornecedor com a aba Descrição vazia. Um wp eval-file percorre os SKUs sem texto, grava pelo…

2 dias atrás

Frete grátis no WooCommerce: esconder as outras opções de entrega

Some com PAC e SEDEX da lista quando o frete grátis está disponível, usando woocommerce_package_rates, e limpe o cache de…

3 dias atrás

Erro HTTP no WordPress ao enviar imagem para a biblioteca de mídia

A barra de upload chega no fim e o WordPress devolve só "Erro HTTP". Separe as três causas: Imagick barrado…

3 dias atrás