Número de parcelas no checkout



  • No checkout, pagamentos em cartão de crédito, vem pré selecionado parcelado em 1x (à vista).

    Cliente que estou atendendo, logista, relata que seus consumidores estão efetuando o checkout e eventualmente efetuam algum procedimento na tela que gera um refresh (ex.: excluir um item do carrinho), e isso acaba recarregando as parcelas e volta para 1x. Cliente usando onepage checkout.

    O próprio cliente que atendo, entrou em contato com xtech que alega que tem que ser um "programador" para resolver. Resposta padrão para uma inúmera quantidade de dúvidas. Eu mesmo solicitei suporte e tive resposta dizendo que essa funcionalidade não é possível trabalhar. Novamente o cliente solicitou um respaldo onde foi dito que seria necessário abrir um tópico novo no "Family" para o time de TI resolver.

    Cá estou em busca de uma solução.
    Teoricamente se o <select> de parcelamento viesse com um <option>Selecione -></option> (vazio, sem valor no caso), sempre forçaria a validação a acontecer e o cliente mesmo que recarregando a página, poderia selecionar novamente as parcelas. Outra solução seria trabalhar com procedimentos em ajax no onepagecheckout para não ter refresh.

    Busco orientação do suporte para solucionar. O cliente alega que tem compras sendo feitas "à vista" no cartão gerando transtornos pós venda.



  • Olá @dtillmann, então eu fiz esse código para vc testar e ver se está de funcionando, ele guarda a última prestação e o número do cartão digitado, mesmo atualizando a página, lembrando que fiz pra funcionar para módulo de pagamento mercado pago e pagar.me

    Coloque esse código no arquivo view_cart.html antes do fim {% endblock %} (fica antes da última linha):

    {# SALVAR A ÚLTIMA PRESTAÇÃO DO CARTÃO CLICADO PARA MERCADO PAGO E PAGAR.ME #}
    <script>
        var t = localStorage.getItem('save_parcel');
        var num_card;
        
        function update_parcel(){
            $("#mercadopago-installments option, .pagarme-installments option").each(function(){
                if ($(this).val() === localStorage.getItem('save_parcel')){
                    $(this).attr("selected","selected");
                }
            });
        }
        
        $(function(){
           
            $('#mercadopago-installments, .pagarme-installments').click(function(){
                t = $(this).val();
                localStorage.setItem('save_parcel', t);
            });
            
            $('#shipping_table').click(function(){
                if($('#mercadopago-installments, .pagarme-installments').change()){
    				setTimeout(function(){
                        update_parcel();
    				}, 2000);
                }
            });
            
            $('#onepage_checkoutform').submit(function(){
                localStorage.removeItem('save_parcel');
                localStorage.removeItem('save_num_card');
            });
            
            if($(window).load()){
                $('.mercadopago_cc_card_num').val(localStorage.getItem('save_num_card'));
                setTimeout(function(){
                    if($('.mercadopago-installments').is(':visible')){
                        update_parcel();
                    }
    			}, 4000);
            }
            
            $('.mercadopago_cc_card_num').keyup(function(){
                num_card = $(this).val();
                localStorage.setItem('save_num_card', num_card);
                if(num_card.indexOf("_") >= 7){
                    setTimeout(function(){
                        update_parcel();
                    }, 1500);
                }
            });
            
        });
    </script>
    


  • @charles fiz algumas implementações.

    {# SALVAR A ÚLTIMA PRESTAÇÃO DO CARTÃO CLICADO PARA MERCADO PAGO E PAGAR.ME #}
    <script>
    var t = localStorage.getItem('save_parcel');
    var num_card;
    
    function update_parcel(){
        $("#mercadopago-installments option, .pagarme-installments option, .pagseguro-installments option, select[name='mundipagg[parcel]'] option").each(function(){
            if ($(this).val() === localStorage.getItem('save_parcel')){
                $(this).attr("selected","selected");
            }
        });
    }
    
    $(function(){
       
        $("#mercadopago-installments, .pagarme-installments, .pagseguro-installments, select[name='mundipagg[parcel]']").change(function(){
            t = $(this).val();
            localStorage.setItem('save_parcel', t);
            console.log(t);
        });
        
        $('#shipping_table').click(function(){
            if($("#mercadopago-installments, .pagarme-installments, .pagseguro-installments, select[name='mundipagg[parcel]']").change()){
    			setTimeout(function(){
                    update_parcel();
    			}, 2000);
            }
        });
        
        $('#onepage_checkoutform').submit(function(){
            localStorage.removeItem('save_parcel');
            localStorage.removeItem('save_num_card');
        });
        
        if($(window).load()){
            $(".mercadopago_cc_card_num, .pagseguro_cc_card_num, input[name='mundipagg[card_num]']").val(localStorage.getItem('save_num_card'));
            setTimeout(function(){
                if($(".mercadopago-installments, .pagseguro-installments, select[name='mundipagg[parcel]']").is(':visible')){
                    update_parcel();
                }
    		}, 4000);
        }
        
        $(".mercadopago_cc_card_num, .pagseguro_cc_card_num, input[name='mundipagg[card_num]']").keyup(function(){
            num_card = $(this).val();
            localStorage.setItem('save_num_card', num_card);
            if(num_card.indexOf("_") >= 7){
                setTimeout(function(){
                    update_parcel();
                }, 1500);
            }
        });
        
    });
    </script>
    

    Só não consegui fazer funcionar no pagseguro...



  • Olá @dtillmann tem como vc mandar o link da sua loja, pq minhas lojas testes não tem pagseguro para testar, eu testo pelo navegador mesmo, sem acessar ao código original para edição.



  • @charles para o módulo mundipagg você consegue me auxiliar?
    Também temos diversos transtornos pós venda por esse motivo.
    Obrigada.



  • Olá @sarahs, então nesse tipo de caso vc primeiro tem q mandar para o suporte xtech, para uma análise do caso, depois eles mandam para o TI. Eu não mexo com módulos de pagamento, mas conheço alguns erros que ocorrem de alguns módulos de pagamento, nessa parte o certo é mandar mesmo para o suporte.



  • Olá @sarahs, agora segue o código que salva o número do cartão e da prestação mesmo após a atualização da página ou quando o usuário muda o tipo de frete, não se preocupe, após a compra esses dados salvos serão apagados:

    0_1560285348621_screenshot-teste-xtech-intercom.xtechcommerce.com-2019.06.11-17-33-44.png

    {# SALVAR A ÚLTIMA PRESTAÇÃO DO CARTÃO CLICADO E NÚMERO DO CARTÃO PARA MERCADO PAGO, PAGAR.ME E MUNDIPAGG #}
    <script>
        var t = localStorage.getItem('save_parcel');
        var num_card;
        
        function update_parcel(){
            $("#mercadopago-installments option, .pagarme-installments option, .selectpicker option").each(function(){
                if ($(this).val() === localStorage.getItem('save_parcel')){
                    $(this).attr("selected","selected");
                }
            });
        }
        
        $(function(){
           
            $('#mercadopago-installments, .pagarme-installments, .selectpicker').click(function(){
                t = $(this).val();
                localStorage.setItem('save_parcel', t);
            });
            
            $('#shipping_table').click(function(){
                if($('#mercadopago-installments, .pagarme-installments, .selectpicker').change()){
    				setTimeout(function(){
                        update_parcel();
    				}, 2000);
                }
            });
            
            $('#onepage_checkoutform').submit(function(){
                localStorage.removeItem('save_parcel');
                localStorage.removeItem('save_num_card');
            });
            
            if($(window).load()){
                update_parcel();
                $('.mercadopago_cc_card_num').val(localStorage.getItem('save_num_card'));
                $('input[name="mundipagg[card_num]"]').val(localStorage.getItem('save_num_card'));
                setTimeout(function(){
                    if($('.mercadopago-installments').is(':visible')){
                        update_parcel();
                    }
    			}, 4000);
            }
            
            $('input[name="mundipagg[card_num]"]').keyup(function(){
                num_card = $(this).val();
                localStorage.setItem('save_num_card', num_card);
            });
            
            $('.mercadopago_cc_card_num').keyup(function(){
                num_card = $(this).val();
                localStorage.setItem('save_num_card', num_card);
                if(num_card.indexOf("_") >= 7){
                    setTimeout(function(){
                        update_parcel();
                    }, 1500);
                }
            });
            
            
            // SCRIPT QUE SELECIONA O TIPO DE BANDEIRA DO CARTÃO AO DIGITAR O PRIMEIRO NÚMERO DO CARTÃO -- MUNDIPAGG
            $('input[name="mundipagg[card_num]"]').keyup(function(){
                var firstNum = $(this).val().replace('_______________','');
                // console.log(firstNum);
                switch(true) {
                case firstNum == 5 || firstNum == 2:
                    $('.mundipagg_radio input[value=Mastercard]').prop('checked', true);
                    break;
                case firstNum == 4:
                    $('.mundipagg_radio input[value=Visa]').prop('checked', true);
                    break;
                case firstNum == 6:
                    $('.mundipagg_radio input[value=Hipercard]').prop('checked', true);
                    break;
                }
            });
            
        });
    </script>