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

Error "Invalid argument supplied for foreach()"

Open netopvh opened this issue 3 years ago • 3 comments

Estou tentando realiza a tokenização de um cartão e esta apresentando um erro.

Invalid argument supplied for foreach()

neste trecho

`case 400: $exception = null; $response = json_decode($responseBody);

            foreach ($response as $error) {
                $cieloError = new CieloError($error->Message, $error->Code);
                $exception  = new CieloRequestException('Request Error', $statusCode, $exception);
                $exception->setCieloError($cieloError);
            }

            throw $exception;`

netopvh avatar Apr 11 '21 18:04 netopvh

Precisa checar antes se $response vem um json ou string. Estou usando uma validação luhn antes como parece que a cielo não checa isso.

thallesdaniell avatar May 04 '21 20:05 thallesdaniell

Precisa checar antes se $response vem um json ou string. Estou usando uma validação luhn antes como parece que a cielo não checa isso.

Amigo pode dar mais detalhes de como você fez? Resolveu o problema? Estou com o mesmo problema aqui

brunoramonalmeida avatar Sep 06 '21 13:09 brunoramonalmeida

Boa tarde. O meu deu esse mesmo erro quando eu estava fazendo testes e esqueci de passar o marchantId.

O problema ocorre no arquivo vendor\developercielo\api-3.0-php\src\Cielo\API30\Ecommerce\Request\AbstractRequest.php porque quando ele faz o json_decode ele ainda retorna uma string com o array, envez do próprio array(acredito que na api interna da cielo fazem o json_encode duas vezes).

Para solucionar isso eu coloquei uma verificação para ver se o valor é uma string ou um array, e caso seja uma string eu aplico novamente o json_decode.

image

matthewsbrandan avatar Oct 20 '21 20:10 matthewsbrandan