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

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

13 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

2 dias atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

3 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

4 dias atrás