r-martins / PagSeguro-Magento-Transparente

Módulo de checkout transparente para Pagseguro - com api v. 2.0
GNU General Public License v2.0
66 stars 53 forks source link

Erro Acesso PagSeguro - Cartão de Crédito #259

Closed ghost closed 5 years ago

ghost commented 5 years ago

Bom dia! Ao tentar tentar fazer uma requisição no módulo está retornando o seguinte erro. Não é apenas uma loja, são várias. Erro começou hoje.

Access to XMLHttpRequest at 'https://ws.pagseguro.uol.com.br/v2/installments.json?sessionId=45412f528fc54a7c90ab328d7250b61c&amount=99.06&creditCardBrand=mastercard' from origin 'https://pagseguro.uol.com.br' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

pagseguro

Moisa commented 5 years ago

Estou com problemas também, no meu não abilita o combobox de parcela, mais alguém com problema?

Att,

Moises

Em qua, 22 de mai de 2019 às 11:10, Gustavo Bernardi < notifications@github.com> escreveu:

Bom dia! Ao tentar tentar fazer uma requisição no módulo está retornando o seguinte erro. Não é apenas uma loja, são várias. Erro começou hoje.

Access to XMLHttpRequest at ' https://ws.pagseguro.uol.com.br/v2/installments.json?sessionId=45412f528fc54a7c90ab328d7250b61c&amount=99.06&creditCardBrand=mastercard' from origin 'https://pagseguro.uol.com.br' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

[image: pagseguro] https://user-images.githubusercontent.com/28944628/58181100-8bd30a80-7c81-11e9-8659-4a06fad05114.png

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/r-martins/PagSeguro-Magento-Transparente/issues/259?email_source=notifications&email_token=AB2V7T5JBFPFGQKDUWOQVJTPWVH3VA5CNFSM4HOUXCWKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GVHD7KA, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2V7TZ2LBEFVJRDWIDDFCDPWVH3VANCNFSM4HOUXCWA .

LucasGianoto commented 5 years ago

Estou tendo exatamente o mesmo problema fazendo com que as opções de parcela não apareçam.

WidecommerceDev commented 5 years ago

Conseguimos resolver esse problema editando o arquivo:

app/code/community/RicardoMartins/PagSeguro/controllers/AjaxController.php

Encontre o método getGrandTotalAction() e adicione a seguinte linha:

$this->getResponse()->setHeader('Access-Control-Allow-Origin', 'https://pagseguro.uol.com.br');

Ficando assim:

public function getGrandTotalAction()
    {
        /** @var Mage_Sales_Model_Quote $quote */
        $quote = Mage::helper('checkout/cart')->getQuote();
        $quote->getPayment()->setMethod('rm_pagseguro_cc');
        $quote->collectTotals();
        $total = $quote->getGrandTotal();

        $this->getResponse()->setHeader('Content-type', 'application/json', true);
        $this->getResponse()->setHeader('Access-Control-Allow-Origin', 'https://pagseguro.uol.com.br');
        $this->getResponse()->setBody(json_encode(array('total'=>$total)));
    }
r-martins commented 5 years ago

Senhores, como podemos ver na imagem do @guh9rX, o erro de CORS se dá em uma requisição entre os domínios do próprio PagSeguro e não no getGrandTotal.

Em conversa recente com o PagSeguro soube que há uma instabilidade no serviço que busca as parcelas. A sugestão recomendada é que eu trouxesse o valor a vista sempre carregado no dropdown, de forma que, caso o getInstallments falhe, o usuário ainda poderá concluir o pedido a vista. Estou trabalhando nisso.

r-martins commented 5 years ago

Como não encontrei uma forma de simular o serviço de parcelas fora do ar, o que fiz foi usar o evento "error" da própria chamada para tratar esse assunto. Caso vocês experienciem um caso de problemas nas parcelas, por favor reabram esse ticket com prints de qual request ao pagseguro falhou (de preferencia na aba Network). Qualquer outra informação que ajude a pegar o momento que "deu pau" é bem-vinda para que eu possa endereçar a correção com outra abordagem. Valeu! :)

carlosalbertocruz commented 4 years ago

As requisições nao podem ser feitas diretamente no front end, voce deve fazer via backend..

r-martins commented 4 years ago

@carlosalbertocruz pode ser mais específico? Se possível, entre em contato comigo.