Esse erro pode acontecer na hora de finalizar um pedido no WooCommerce, pois os métodos de pagamento irão retornar um array que será convertido para JSON, entretanto por padrão se tiver qualquer erro ou alerta do PHP quando isso acontece, irá retornar nosso amiguinho SyntaxError: Unexpected token.

Antes de mais nada, se o seu servidor esta em produção não deveria exibir qualquer erro na tela e apenas em logs, já que isso sendo exibido pode ajudar alguém hackear o seu site.

Para desativar você pode adicionar seguinte código ao seu wp-config.php:

Já o seu site em um ambiente de testes/desenvolvimento é o local perfeito para deixar o debug ativado e assim conseguir corrigir esse tipo de erro.

No codex do WordPress é possível encontrar um exemplo de como configurar o seu wp-config.php para facilitar a depuração de erros em Debugging in WordPress.

Para descobrir o que exatamente causando esse erro basta abrir o console do seu navegador e ir na aba “Network”, também é possível filtrar por “XHR” e ver as requisições feitas:

chrome-network-tab

Na lista você vai poder encontrar uma requisição para ?wc-ajax=checkout e nela você deve olhar a resposta como no exemplo:

exemplo-erro-checkout-woocommerce

Veja o que erro na imagem aparece antes de {"result":....

E pronto, agora vocês sabem que arquivo e em qual linha esta causando o erro e corrigir.

Esta publicação foi inspirada no post do meu amigo Mike Jolley em Debugging “unexpected token” in WooCommerce 2.4+.