API-3.0-PHP icon indicating copy to clipboard operation
API-3.0-PHP copied to clipboard

Excpetion do pagamento via boleto retornando objeto null

Open jf-carvalho opened this issue 4 years ago • 5 comments

Integrei a API com as 3 opções de pagamento disponíveis. No ambiente sandbox, tudo funcionou perfeitamente. Já no ambiente de produção, os pagamentos via crédito e débito funcionaram ok, mas o pagamento via boleto retorna um erro 500, com a seguinte response:

Call to a member function getMessage() on null

Eis a configuração do pagamento (com os dados de teste para eliminar possíveis problemas de formatação dos dados):

               $customer = $sale->customer('Fulano de Tal')
                    ->setIdentity('00000000001')
                    ->setIdentityType('CPF')
                    ->address()->setZipCode('22750012')
                    ->setCountry('BRA')
                    ->setState('RJ')
                    ->setCity('Rio de Janeiro')
                    ->setDistrict('Centro')
                    ->setStreet('Av Marechal Camara')
                    ->setNumber('123');

                $payment = $sale->payment(15700)
                    ->setType(Payment::PAYMENTTYPE_BOLETO)
                    ->setAddress('Rua de Teste')
                    ->setBoletoNumber('1234')
                    ->setAssignor('Empresa de Teste')
                    ->setDemonstrative('Desmonstrative Teste')
                    ->setExpirationDate(date('d/m/Y', strtotime('+1 month')))
                    ->setIdentification('11884926754')
                    ->setInstructions('Esse é um boleto de exemplo');
            
            try {
                $sale = (new CieloEcommerce($merchant, $environment))->createSale($sale);
                $paymentId = $sale->getPayment()->getPaymentId();
                $boletoURL = $sale->getPayment()->getUrl();

                return strval(base64_encode($boletoURL));

            } catch (CieloRequestException $e) {
                  $error = $e->getCieloError();
                  return $error->getMessage();
            }

Retornando apenas o objeto $error, obviamente eu recebo null. O que pode estar acontecendo?

jf-carvalho avatar Aug 04 '20 17:08 jf-carvalho

Estou com o mesmo problema - exclusivamente no ambiente de produção.

No sandbox consigo gerar o boleto (e a captura do cc), mas no ambiente de produção o cieloError retorna null e o retorno é um erro 500 na tentativa por boleto:

Cielo\API30\Ecommerce\Request\CieloRequestException {#384 ▼ -cieloError: null #message: "Unknown status" #code: 500 #file: "/home/gserrano/work/www/pixadelica/chevra/site/vendor/developercielo/api-3.0-php/src/Cielo/API30/Ecommerce/Request/AbstractRequest.php" #line: 148

Conseguiu alguma solução @jf-carvalho?

gserrano avatar Aug 27 '20 12:08 gserrano

Estou com o mesmo problema - exclusivamente no ambiente de produção.

No sandbox consigo gerar o boleto (e a captura do cc), mas no ambiente de produção o cieloError retorna null e o retorno é um erro 500 na tentativa por boleto:

Cielo\API30\Ecommerce\Request\CieloRequestException {#384 ▼ -cieloError: null #message: "Unknown status" #code: 500 #file: "/home/gserrano/work/www/pixadelica/chevra/site/vendor/developercielo/api-3.0-php/src/Cielo/API30/Ecommerce/Request/AbstractRequest.php" #line: 148

Conseguiu alguma solução @jf-carvalho?

Infelizmente, não encontrei nenhuma solução, @gserrano. Tive que suspender a opção de pagamento por boleto do projeto até conseguir entender.

jf-carvalho avatar Sep 01 '20 14:09 jf-carvalho

Testei no postman deles e o retorno foi diferente - no meu caso consegui um retorno que o pagamento por este método não estava liberado para a conta.

Já chegou a verificar isso aí na conta com a Cielo? Como aqui não cuido nem tenho acesso a parte contratual, não consegui confirmar se é realmente isso, mas estão validando com a Cielo. Dá uma conferida, perdi algumas horas testando essa parte até tentar ir para o postman...

gserrano avatar Sep 01 '20 17:09 gserrano

Também não tenho acesso a essa informação, mas vou buscar saber se essa é a origem do problema.

jf-carvalho avatar Sep 04 '20 14:09 jf-carvalho

@jf-carvalho

Também não tenho acesso a essa informação, mas vou buscar saber se essa é a origem do problema.

``{

"MerchantOrderId":"3099",
"Customer":
{  
    "Name":"Teste Gama",
    "Identity": "36913636016",
    "Address":
    {
      "Street": "Avenida Marechal Câmara",
      "Number": "160",  
      "Complement": "Sala 934",
      "ZipCode" : "22750012",
      "District": "Centro",
      "City": "Rio de Janeiro",
      "State" : "RJ",
      "Country": "BRA"
    }
},
"Payment":
{  
    "Type":"Boleto",
    "Amount":100,
    "Provider":"Bradesco2",
    "Address": "Rua Teste",
    "BoletoNumber": "123",
    "Assignor": "Empresa Teste",
    "Demonstrative": "Desmonstrative Teste",
    "ExpirationDate": "26/11/2020",
    "Identification": "11884926754",
    "Instructions": "Aceitar somente até a data de vencimento, após essa data juros de 1% dia."
}

}``

Sim, a cielo precisa liberar o boleto, tem q ligar lá. Pelo postman consegui entender o erro. No meu provider tá buscando a string 'bradesco'. Isso do código fornecido aqui. ->setProvider(Payment::PROVIDER_BRADESCO)

Mas ao usar a string Bradesco2 que vi em por aí, testei e a Cielo aceitou a requisição como válida e parou de cuspir tela em branco com erro 500. Sim, isso em produção. Quem estiver com um problema assim. Tá aí como resolvi, essa é a requisição que deu certo comigo..

edianogama avatar Nov 25 '20 14:11 edianogama