deivisonarthur / OSC-Magento-Brasil-6-Pro

One Step Checkout Brasil 6 Pro
75 stars 103 forks source link

Conflito com módulo Oitoo-Cielo #104

Open emersonramos opened 9 years ago

emersonramos commented 9 years ago

Tenho o OSC 6 PRO e o módulo Cielo da Oitoo no Magento 1.9 e estou com um erro no pagamento.

Com o OSC habilitado, é apresentado o erro: "O número do cartão de crédito não é válido para bandeira selecionada."

Fiz os testes com 3 cartões VISA diferentes, e o erro é sempre o mesmo.

Desabilitei o OSC e o problema não ocorre.

Alguém já passou por esse problema? Conhece a solução?

roneclay-zz commented 9 years ago

@emersonramos eu passei por isso, mas não me recordo exatamente como fiz para resolver.

Tenta desabiitar o jQuery no OSC e caso não funcione encontre uma validação que começa assim:

if(!$validado)

No arquivo Oitoo/Cielo/Model/Payment.php

E deixe a validação assim:

if(!$validado){
            Mage::throwException(Mage::helper('payment')->__('O número do cartão de crédito não é válido para bandeira selecionada. '));
        }
isaaclopes commented 9 years ago

validacao osc https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/blob/master/skin/frontend/base/default/onestepcheckout/js/payment.js#L200

emersonramos commented 9 years ago

@isaaclopes acredita que seja neste trecho o conflito? O que segere? Devo retirar essa validação do OSC?

darlanbenetti commented 8 years ago

Estou com o mesmo problema. Algumas vezes consegui concretizar o pagamento mais em outras aparece essa mensagem "O número do cartão de crédito não é válido para bandeira selecionada. "

isaaclopes commented 8 years ago

@darlanbenetti @emersonramos Essa mensagem esta vindo no modulo da cielo nao da OSC. igual o @roneclay passou verifica no arquivo Oitoo/Cielo/Model/Payment.php deve ter alguma coisa la

brenosoares commented 8 years ago

Alguém conseguiu resolver isso? Pois tentei aqui e não esta funcionando, ainda estou com o mesmo erro.

photopcf commented 8 years ago

Ninguem ainda conseguiu resolver este erro? Se não, qual solução adotaram, tiraram o OSC ou encontraram outro modulo para Cielo? Podem me ajudar?

photopcf commented 8 years ago

Para fins de teste coloquei uma saída para um arquivo de log em duas funções, public function assignData($data) e public function validate(), tanto na minha classe quanto na classe original do Magento e verifiquei no log que a função assignData($data) original foi chamada e na minha classe não, apesar da função validate() ser chamada nas duas classes. Obrigado por qualquer ajuda.

ic3b0x commented 8 years ago

Conseguiram resolver esse problema? Estou passando pela mesma coisa e o arquivo Payment.php já está com as modificações sugeridas pelo roneclay.

brunowd commented 8 years ago

No meu ele não aparece os campos para preencher com os dados do cartão de crédito, alguma ideia?

ic3b0x commented 8 years ago

Então, instalei o one page checkout da Lotusbreath e também tive esse problema... O console ficava com mais de mil linhas de erro e não carregava nada. Estou usando no momento o IWD One Page Checkout e sempre aparece a mensagem "O número do cartão de crédito não é válido para bandeira selecionada. " Acabei de desativar pois preciso lançar a loja ainda hoje... Então vou lançar com o checkout padrão do sistema e depois quando conseguir arrumo!

brunowd commented 8 years ago

Poisé :/

No meu caso as bandeiras aparecem mas os campos não. Não tenho o OSC6 instalado. Uso o tema Cetus que tem o próprio OSC

No console do Chrome

http://rockmezz.com.br/skin/frontend/mgstheme/cetus/images/oscheckout/login.png Failed to load resource: the server responded with a status of 404 (Not Found) http://rockmezz.com.br/skin/frontend/mgstheme/cetus/images/oscheckout/ajax-loader.gif Failed to load resource: the server responded with a status of 404 (Not Found) (index):1139 Uncaught ReferenceError: selectCardTypeCc is not defined (index):1160 Uncaught ReferenceError: selectCardTypeCc is not defined (index):1181 Uncaught ReferenceError: selectCardTypeCc is not defined (index):1202 Uncaught ReferenceError: selectCardTypeCc is not defined (index):1223 Uncaught ReferenceError: selectCardTypeCc is not defined (index):1265 Uncaught ReferenceError: selectCardTypeCc is not defined 2(index):1139 Uncaught ReferenceError: selectCardTypeCc is not definedonclick @ (index):1139

Em 4 de dezembro de 2015 09:17, ic3b0x notifications@github.com escreveu:

Então, instalei o one page checkout da Lotusbreath e também tive esse problema... O console ficava com mais de mil linhas de erro e não carregava nada. Estou usando no momento o IWD One Page Checkout e sempre aparece a mensagem "O número do cartão de crédito não é válido para bandeira selecionada. " Acabei de desativar pois preciso lançar a loja ainda hoje... Então vou lançar com o checkout padrão do sistema e depois quando conseguir arrumo!

— Reply to this email directly or view it on GitHub https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/issues/104#issuecomment-161940757 .

Bruno Maciel Distribuidor Independente Herbalife

brunowd commented 8 years ago

Outra coisa...

Vi que não é o tema pq no default também não funfa!

Em 4 de dezembro de 2015 09:17, ic3b0x notifications@github.com escreveu:

Então, instalei o one page checkout da Lotusbreath e também tive esse problema... O console ficava com mais de mil linhas de erro e não carregava nada. Estou usando no momento o IWD One Page Checkout e sempre aparece a mensagem "O número do cartão de crédito não é válido para bandeira selecionada. " Acabei de desativar pois preciso lançar a loja ainda hoje... Então vou lançar com o checkout padrão do sistema e depois quando conseguir arrumo!

— Reply to this email directly or view it on GitHub https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/issues/104#issuecomment-161940757 .

Bruno Maciel Distribuidor Independente Herbalife

samuelbox commented 8 years ago

SOLUCAO GAMBIARRA QUE DESCOBRI ILUMINADO PELA RAIVA.... Verificando o código vi em /skin/frontend/base/default/js/oitoo.cielo.js

Event.observe(window, 'load', function() { document.observe('click', function(e, el) { if (el = e.findElement('.btn-checkout')) { setTimeout(function(){ $('apelidocielo_numero_cartao_cielo').setValue(''); $('apelidocielo_portador_cielo').setValue(''); $('apelidocielo_expiracao_mes_cielo').setValue(''); $('apelidocielo_expiracao_ano_cielo').setValue(''); $('apelidocielo_codigo_seguranca_cielo').setValue(''); }, 3000); } }); });

(Removi a css class "btn-checkout" do botao em app/design/frontend/base/default/template/ideasa/idecheckoutvm/onepage/review.phtml)

<button id="idecheckoutvm-place-order-button" type="submit" title="<?php echo $this->__('Place Order Now') ?>" class="checkout enable btn-checkout" onclick="checkout.save(); return false;">

OBS: REMOVENDO ISSO ANTES DA HOMOLOGACAO FARÁ QUE SEU SITE NAO SEJA HOMOLOGADO PELA CIELO.....USE O CHECKOUT PADRAO DO MAGENTO PARA HOMOLOGACAO DEPOIS HABILITE O OSC E faça estas alterações.

ALGUÉM COM TEMPO PARA IR ATRAS DE UMA SOLUÇÃO IDEAL???????

ic3b0x commented 8 years ago

samuelbox,

Também fiz uma gambiarra, mas não sei avaliar os problemas que ela pode trazer... Olha o que fiz e me fala o que acha! rs

Em uma loja que já estava homologada, tá funcionando 100%, sem problema algum. Mas essa semana ou na próxima, vou tentar homologar outra loja, e veremos o que acontece.

Alterei o arquivo/app/code/community/Oitoo/Cielo/Model/Payment.html

Como você mesmo disse, ILUMINADO PELA RAIVA, simplesmente deletei todo o código de validação abaixo, das linhas 171-231!! O interessante é que o problema parece ser uma dupla validação, pois agora que não tenho esse código o próprio One Page Checkout está cuidando da validação e mostrando as mensagens de erro corretamente, porém sem os balões de pop-up do Oitoo Cielo, agora os erros aparecem em vermelho logo abaixo do campo... O que acha? Vou passar na homologação? rs

public function validate() {

    $info     = $this->getInfoInstance();
    $ccNumber = Mage::helper('core')->decrypt($info->getCcNumber());
    $bandeira = $info->getCcType();
    $validado = false;

    if (Mage::helper('apelidocielo')->validateCcNum($ccNumber))
    {
        $ccTypeRegExp = '/^4[0-9]{12}([0-9]{3})?$/'; //visa
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'visa')
        {
            $validado = true;
        }

        $ccTypeRegExp = '/^5[1-5][0-9]{14}$/'; //mastercard
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'mastercard')
        {
            $validado = true;
        }

        $ccTypeRegExp = '/^3[47][0-9]{13}$/'; //amex
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'amex')
        {
            $validado = true;
        }

        $ccTypeRegExp = '/^6011[0-9]{12}$/'; //discover
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'discover')
        {
            $validado = true;
        }

        $ccTypeRegExp = '/^(3[0-9]{15}|(2131|1800)[0-9]{11})$/'; //jcb
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'jcb')
        {
            $validado = true;
        }

        $ccTypeRegExp = '/^3[0,6,8]\d{12}$/'; //diners
        if (preg_match($ccTypeRegExp, $ccNumber) && $bandeira == 'diners')
        {
            $validado = true;
        }

        if ($bandeira == 'elo' || $bandeira == 'aura')
        {
            $validado = true;
        }
    } else {
        Mage::throwException(Mage::helper('payment')->__('O número do cartão digitado não é válido.'));
    }

    if(!$validado):
        Mage::throwException(Mage::helper('payment')->__('O número do cartão de crédito não é válido para bandeira selecionada: ' . $bandeira));
    endif;

    return $this;
}
samuelbox commented 8 years ago

ic3b0x percebi que quando o modulo oitoo apaga os dados do cartão do formulário(exigência para homologação) via javascript é que dá o erro "O número do cartão de crédito não é válido para bandeira selecionada." bastou evitar que apague os dados e ele funciona enviando para cielo os dados corretamente. Na minha opinião o mais correto seria alterar o OSC pois os arquivos do oitoo deveriam permanecer intactos já que a função de comunicação com a cielo é dele. o ajuste deveria ser feito no OSC pois o modulo oitoo funciona perfeitamente no checkout padrão do magento, inclusive sendo homologado sem problemas.

OBS: Por ser novo no Magento posso estar falando bobagem.

gilano commented 8 years ago

Também enfrento o mesmo problema. Sem o OSC ativado o modulo da cielo da Oitoo funciona perfeitamente. Logo, todo acerto deve ser efetuado no OSC. Vou trabalhar aqui em busca de uma solução "elegante" e assim que conseguir algo eu posto aqui. Se alguém já tiver conseguido superar esses problemas, favor postar sua solução para podermos avaliar e chegarmos a melhor solução possível. Abraços.