• Muitos clientes reclamando que ao clicar em finalizar pedido fica o loading e n?o vai para frente, após investigar o código JS do plugin, percebo que o problema é com a tokeniza??o do plugin, simplesmente o código js faz referencias a elementos com ids e classes HTML que nem existem, ou seja n?o é compatível com outros temas e plugins. Abaixo segue uma gambiarra que fiz em um arquivo JS separado para tentar reduzir os erros, e gerar o Token para enviar o formulário. O problema também acontece quando a pessoa troca o meio de pagamento, por exemplo, gerou o token no PIX e depois decidiu fazer no credito, ao selecionar ele nao gera….

    /**
    * Function to check for errors and block form submission
    *
    * @param {Element} event Clicked Place Order Button
    * @since 09/10/2024
    */
    function validatePagarmeErrors(event) {
    // Select the error div associated with the selected payment method
    const pagarmeErrorDiv = $('input[name$="payment_method"]:checked').closest('li').find('#wcmp-checkout-errors .woocommerce-error');

    // Check if the error div contains content and is visible
    if (pagarmeErrorDiv.length && pagarmeErrorDiv.is(':visible')) {
    // Scroll the page to the error div
    $('html, body').animate({
    scrollTop: pagarmeErrorDiv.offset().top - 50 // Adjust the scroll to be slightly above the div
    }, 300); // The animation time in milliseconds

    // Call the function to remove the loading state
    $(document.body).trigger('checkout_error');
    }
    }

    /**
    * Add an event listener to the checkout form submit button
    *
    * @since 09/10/2024
    */
    $(document).on('click', '#place_order', function (event) {
    validatePagarmeErrors(event);
    });

    /**
    * Prevent Pagar.me Bugs
    */
    if(pagarmeTokenize && pagarmeCard){
    /**
    * Intercepting the Pagar.me showError function
    *
    * @since 08/10/2024
    */
    const originalShowError = pagarmeTokenize.showError;
    pagarmeTokenize.showError = function (text) {
    // Call the original function
    originalShowError.call(this, text);

    // Add behavior to remove the loading state
    $(document.body).trigger('checkout_error');
    };

    /**
    * Intercepting the Pagar.me listError function
    *
    * @since 08/10/2024
    */
    const originalListError = pagarmeTokenize.listError;
    pagarmeTokenize.listError = function (errors) {
    // Call the original function
    originalListError.call(this, errors);

    // Add behavior to remove the loading state
    $(document.body).trigger('checkout_error');
    };

    /**
    * Prevent Tokenizer Bug, when user change payment method and token already created.
    *
    * @since 09/10/2024
    */
    const originalCanExecute = pagarmeCard.canExecute;
    pagarmeCard.canExecute = function (event) {
    // Call the original function
    let canExecute = originalCanExecute.call(this, event);

    if (!canExecute && pagarmeCard.isTokenized()) {
    pagarmeTokenize.clearInputTokens();
    $('input[name$="payment_method"]:checked').trigger('change');
    pagarmeTokenize.tokenize();

    canExecute = originalCanExecute.call(this, event);
    }

    if (!canExecute) {
    // Select the error message wrapper
    let errorWrapper = $(".woocommerce-notices-wrapper:last");

    // Check if the error list already exists
    let listError = errorWrapper.find("ul.woocommerce-error");

    // If the list does not exist, create a new one
    if (listError.length === 0) {
    listError = $('<ul role="alert" class="woocommerce-error"></ul>');
    errorWrapper.append(listError);
    }

    // Add the new error message to the list
    if (listError.find('#chd-payment-error').length === 0) {
    listError.append('<li id="chd-payment-error"><strong>Verifique</strong> as informa??es de pagamento selecionadas e tente novamente!</li>');
    }

    // If you want to ensure that the message is always visible, you can force scroll to the error list
    $('html, body').animate({
    scrollTop: errorWrapper.offset().top
    }, 500);

    // Add behavior to remove the loading state
    $(document.body).trigger('checkout_error');
    }

    return canExecute;
    }
    }

    Este é mais um de vários outros erros que estou postando a mais de 2 meses, resultado? SEM RESPOSTA.

  • You must be logged in to reply to this topic.