Closed franco-testagrossa closed 5 years ago
@franco-testagrossa gracias por el reporte, lo reviso.
@franco-testagrossa según pudimos revisar, desde la version 7.1 de PHP se cambia el comportamiento cuando se realiza una asignación mediante un indice a una variable que es inicialmente un String ( Esperando la inferencia de tipos ) lo cual genera una inconsistencia en la evaluación del método is_array
y es tratado como un String generando el error Illegal string offset ‘code’
al tratar como un String
a un Array
.
$a = '';
$a[10] = 'foo';
is_array($a) // false
Vamos a evaluar alternativas para controlar este escenario
http://php.net/manual/en/migration71.incompatible.php#120845
Estoy teniendo un error al momento en que la SDK (version = “0.5.3”) llama al endpoint:
GET /v1/payments/$payment_id?access_token=$access_token
Linea donde salta la excepción: https://github.com/mercadopago/sdk-php/blob/master/lib/mercadopago.php#L526
ErrorException
: Uncaught exception ‘ErrorException’ with message ’Illegal string offset ‘code’'Haciendo la llamada que realizaba la SDK manualmente, la respuesta que recibí fue:
Por lo que entiendo: Internamente falla al momento de procesar un $response[‘status’] >= 400 cuando el $response.cause es un array e intenta recuperar el atributo code del response. (puede q esto requira validaciones de
isset
para ver si existe el campo en el array)