Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP Fatal error: Uncaught Error: Call to undefined method #11

Open
mauricinhojr opened this issue May 27, 2020 · 18 comments
Open

PHP Fatal error: Uncaught Error: Call to undefined method #11

mauricinhojr opened this issue May 27, 2020 · 18 comments

Comments

@mauricinhojr
Copy link

Estou tendo o problema abaixo:

PHP Fatal error: Uncaught Error: Call to undefined method Magento\Payment\Gateway\Data\Order\OrderAdapter::getCustomerIsGuest() in /home/*******/public_html/atividades/app/code/Picpay/Payment/Helper/Data.php:593

Line: 593 - 599
if(!$order->getCustomerIsGuest()){
$customerId = $order->getCustomerId();
$customer = $this->customerRepositoryInterface->getById($customerId);
if ($customer && $customer->getId()) {
$taxvat = $customer->getTaxvat();
}

@schmite
Copy link
Contributor

schmite commented May 29, 2020

Olá @mauricinhojr ,

Provavelmente a variavel $order deve estar com alguma classe que não possui o método getCustomerIsGuest. Estamos fazendo uma alteração que irá deixar de usar esse método.

@deniscsz

@mauricinhojr
Copy link
Author

mauricinhojr commented May 29, 2020 via email

@schmite
Copy link
Contributor

schmite commented May 31, 2020

Estamos fazendo testes e homologando em https://github.com/resultate/magento2 e assim que estiver tudo ok, subiremos para o repositório oficial. Se você quiser efetuar testes a partir desse repositório, é bem-vindo.

@mauricinhojr
Copy link
Author

mauricinhojr commented May 31, 2020 via email

@mauricinhojr
Copy link
Author

Olá, @schmite !

Em um dos subdomínios funcionou perfeitamente. a outra deu o erro abaixo:

Uncaught Error: Call to undefined method Magento\Payment\Gateway\Data\Order\AddressAdapter::getVatId() in /home/extre146/public_html/loja/app/code/Picpay/Payment/Helper/Data.php:602

Line: 601 - 618:

   if(!$taxvat){
        $taxvat = $billingAddress->getVatId();
    }

    $buyerFirstname = $billingAddress->getFirstname();
    $buyerLastname = $billingAddress->getLastname();
    $buyerDocument = $this->_formatTaxVat($taxvat);
    $buyerEmail = $billingAddress->getEmail();
    $buyerPhone = $this->_extractPhone($billingAddress->getTelephone());

    return array(
        "firstName" => $buyerFirstname,
        "lastName" => $buyerLastname,
        "document" => $buyerDocument,
        "email" => $buyerEmail,
        "phone" => $buyerPhone
    );
}

@deniscsz
Copy link
Contributor

deniscsz commented May 31, 2020

@mauricinhojr

Em um dos subdomínios funcionou perfeitamente. a outra deu o erro abaixo

Só para nos ajudar a entender. Você testou em duas lojas diferentes e em uma funcionou e na outra não? Ou são subdomínios diferentes para a mesma loja?

Pelo o que analisei, esse segundo erro ocorre por um bug do Magento 2.3.4 (talvez em alguma outra versão também ocorra), como podemos conferir no repositório do Magento2 no github:

Você pode contornar o erro forçando que o usuário crie uma conta (desativando o "guest checkout") pois o uso do CPF (taxvat ou vatId dependendo se há conta ou não) é obrigatório para criar uma transação no Picpay.

@mauricinhojr
Copy link
Author

mauricinhojr commented May 31, 2020 via email

@deniscsz
Copy link
Contributor

@mauricinhojr quando a transação for cancelada pelo lojista no painel do Picpay ou mesmo expirar após o prazo, o pedido deve ser cancelado automaticamente no Magento. O Picpay envia uma notificação para o módulo nesses casos, fazendo com que o Magento execute a troca de status. Se tiver problema em relação a isso, por favor, deixe-nos saber mas abra uma nova issue para não misturar os tópicos.

Como a questão foi resolvida você pode, por gentileza, fechar a issue?

@schmite Acho que vale a pena colocar que tem que ativar essa opção no README, como o próprio @mauricinhojr sugeriu.

@LuizSantos1
Copy link

Bom, eu não consegui instalar o Picpay via composer
Como não há instrução para instalação manual, eu segui a estrutura de pastas do Magento 1 parcialmente para instalar
e deixo aqui a instrução pra quem tiver o mesmo problema

Dentro da pasta "app", caso não exista, temos que criar a pasta "code", e dentro dessa pasta, criar a pasta "Picpay" e "Payment"
Assim, a estrutura ficará: app/code/Picpay/Payment
Baixe o arquivo do github, descompacte, e entre nas pastas "Picpay" e "magento2"
Faça o upload todos os arquivos de dentro da pasta Picpay/magento2 para Picpay/Payment
Agora abra o terminal SSH, entre na raiz (root) da sua instalação Magento 2 e rode os seguites comando CLI
php bin/magento module:enable -c Picpay_Payment
bin/magento setup:upgrade
bin/magento setup:static-content:deploy -f
bin/magento setup:di:compile
bin/magento cache:clean

Pronto, agora para configurar vá ao Admin da sua loja em
Stores/Configuration/Sales/Payment Methods/PIcpay

Espero ter ajudado!

@mauricinhojr
Copy link
Author

mauricinhojr commented Jun 28, 2020 via email

@LuizSantos1
Copy link

LuizSantos1 commented Jun 29, 2020

Testei aqui e deu erro...
Quando não é o problema com o Guest habilitado (o que me obriga a desinstalar um outro módulo que usa guest)
é este:

"Fatal Error: 'Uncaught Error: Call to undefined method Magento\Payment\Gateway\Data\Order\AddressAdapter::getVatId() in /app/code/Picpay/Payment/Helper/Data.php:602\nStack trace:\n#0 /app/code/Picpay/Payment/Gateway/Request/AuthorizationRequest.php(74): Picpay\Payment\Helper\Data->getBuyer(Object(Magento\Payment\Gateway\Data\Order\OrderAdapter))\n#1 /vendor/magento/module-payment/Gateway/Request/BuilderComposite.php(50): Picpay\Payment\Gateway\Request\AuthorizationRequest->build(Array)\n#2 M3/vendor/magento/module-payment/Gateway/Command/GatewayCommand.php(103): Magento\Payment\Gateway\Request\BuilderComposite->build(Array)\n#3 /vendor/magento/module-payment/Model/Method/Adapter.php(547): Magento\Payment\Gateway\Command\GatewayCommand->execute(Array)\n#4 /vendor/magento/module-payment/Model/Method/Adapter.php(449): Magento\Payment\Model\Method\Adapter->execute' in /app/code/Picpay/Payment/Helper/Data.php' on line 602"

Ao investigar Data.php nas linhas 601/603 tenho:
if(!$taxvat){
$taxvat = $billingAddress->getVatId();
}

@deniscsz
Copy link
Contributor

@LuizSantos1 Existe uma correção que eu fiz a respeito desse problema em Maio que não foi publicada nesse repositório (Não sei porque exatamente).
Verifique aqui, o último commit altera justamente o Data.php: https://github.com/resultate/magento2

Outra coisa que não está clara nas instruções mas que é importante: existem 2 branchs, um para magento 2.0 até 2.2 chamado magento2_2 e o master que é compátivel com magento 2.3+

Verifique qual é a versão do seu Magento também e utilize o correto.

@LuizSantos1
Copy link

LuizSantos1 commented Jun 30, 2020

@deniscsz tudo bem?
Eu baixei desse link: https://github.com/resultate/magento2
E o problema segue o mesmo.
Eu tentei pelo composer, e não consegui
Então segui a lógica do Magento 1.
Baixei os arquivos, descompactei a pasta "magento2-master"
Aí criei a estrutura de pasta por "app/code/Picpay/Payment"
Fiz upload de todos os arquivos de dentro da pasta "magento2-master" para "app/code/Picpay/Payment"
Via ssh rodei o comando: php bin/magento module:enable -c Picpay_Payment
Depois bin/magento setup:upgrade
bin/magento setup:static-content:deploy -f
bin/magento setup:static-content:deploy pt_BR -f
bin/magento setup:di:compile
bin/magento cache:clean

Configurei tudo, e ainda assim o módulo dá erro.

Acessei o erro no report em: "var/report/api"
E ao editar o arquivo, vejo os seguintes erros (ocultei o path completo por questão de segurança):
"Fatal Error: 'Uncaught Error: Call to undefined method Magento\Payment\Gateway\Data\Order\AddressAdapter::getVatId() in app/code/Picpay/Payment/Helper/Data.php:602\nStack trace:\n#0 app/code/Picpay/Payment/Gateway/Request/AuthorizationRequest.php(74): Picpay\Payment\Helper\Data->getBuyer(Object(Magento\Payment\Gateway\Data\Order\OrderAdapter))\n#1 /vendor/magento/module-payment/Gateway/Request/BuilderComposite.php(50): Picpay\Payment\Gateway\Request\AuthorizationRequest->build(Array)\n#2 /vendor/magento/module-payment/Gateway/Command/GatewayCommand.php(103): Magento\Payment\Gateway\Request\BuilderComposite->build(Array)\n#3 /vendor/magento/module-payment/Model/Method/Adapter.php(547): Magento\Payment\Gateway\Command\GatewayCommand->execute(Array)\n#4 /home/ultraele/public_html/M2/vendor/magento/module-payment/Model/Method/Adapter.php(449): Magento\Payment\Model\Method\Adapter->execute' in M2/app/code/Picpay/Payment/Helper/Data.php' on line 602"

Ao acessar o arquivo "Data.php" na linha indicada, encontro:

if(!$taxvat){
$taxvat = $billingAddress->getVatId();
}

Então acredito que seja alqum problema ao capturar a informação do billing address ou do vat ID (CPF)...

SUPOSIÇÃO
Eu estou supondo que a instalação "manual" improvisada, criando as pastas em "app/code/Picpay/Payment"
não funciona, porque talvez, a lógica desse módulo seja para o composer. Porque estou vendo erros com "vendor",
ou será que isso não tem nada a ver?

INSTALAÇÃO MANUAL?

Teria como disponibilizar um método de instalação manual usando o comando CLI?
É que nem sempre via composer funciona.

Enfim, aguardo alguma atualização à respeito.

Att
Luiz Santos


@deniscsz
Copy link
Contributor

@LuizSantos1 A instalação "manual" é uma prática comum também para Magento 2, não chega a ser um problema, desde que a estrutura da pasta esteja correta. Caso tenha interesse, entra em contato comigo ([email protected]) que tento ajuda-lo a resolver. Encontrando o problema e resolvendo, irei atualizar o repositório ao qual tenho acesso.

@LuizSantos1
Copy link

@deniscsz Enviei e-mail no dia 30/06 e não recebi nenhum resposta, infelizmente...

@LuizSantos1
Copy link

Vão corrigir esse bug no plugin ou abandonaram de vez?

@schmite
Copy link
Contributor

schmite commented Aug 25, 2020

Vão corrigir esse bug no plugin ou abandonaram de vez?

@LuizSantos1
Já foi corrigido nas últimas atualizações. Pode atualizar teu ambiente.

@LuizSantos1
Copy link

@schmite Testei no Magento 2.3.5-p1 e PHP 7.2 e está tudo funcionando. Obrigado pela correção!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants