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

WordPress não aparece no Google: noindex esquecido e robots.txt virtual

Site novo há semanas e nenhuma página indexada? Confira a caixinha de visibilidade em Leitura, o noindex no HTML e…

18 horas atrás

array_map perde as chaves do array no PHP: como manter o índice

O retorno do array_map voltou com índice 0, 1, 2 e o código que dependia da chave quebrou. Entenda quando…

2 dias atrás

Backup do Magento 2 com mysqldump: dump leve sem as tabelas de log

Dump de 12 GB que demora horas porque arrasta report_event e cron_schedule. Faça o backup em duas passadas, guarde só…

2 dias atrás

Preference do di.xml não aplica no Magento 2: o que checar antes

Escreveu a preference e o Magento 2 continua usando a classe original? Confira a área do di.xml, o generated/code e…

3 dias atrás

Filtro por atributo do WooCommerce vazio: global x personalizado

Cadastrou Cor direto na aba Atributos do produto e o filtro por atributo vem vazio. Veja como identificar o tipo,…

4 dias atrás

wp db query: rodar SQL no WordPress pelo WP-CLI sem phpMyAdmin

Precisa de um SELECT no banco do cliente e só tem SSH? O wp db query pega a senha do…

4 dias atrás