Open bycross028 opened 7 years ago
Hola, yo tengo el mismo problema, pero el fix propuesto no me funciona. La única diferencia es que mi versión de PHP es 5.6.31. Ya no sé qué más probar, ¿alguna idea?
Esta es la excepción que me arroja:
object(MercadoPagoException)#2 (7) { ["message":protected]=> string(24) "couldn't connect to host" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(500) ["file":protected]=> string(49) "/home/XXXX/public_html/mercadopago/mp_new.php" ["line":protected]=> int(509) ["trace":"Exception":private]=> array(3) { [0]=> array(6) { ["file"]=> string(49) "/home/XXXX/public_html/mercadopago/mp_new.php" ["line"]=> int(564) ["function"]=> string(4) "exec" ["class"]=> string(12) "MPRestClient" ["type"]=> string(2) "::" ["args"]=> array(1) { [0]=> array(4) { ["uri"]=> string(12) "/oauth/token" ["data"]=> array(3) { ["client_id"]=> string(16) "XXXX" ["client_secret"]=> string(32) "XXXXX" ["grant_type"]=> string(18) "client_credentials" } ["headers"]=> array(1) { ["content-type"]=> string(33) "application/x-www-form-urlencoded" } ["method"]=> string(4) "POST" } } } [1]=> array(6) { ["file"]=> string(49) "/home/XXXXX/public_html/mercadopago/mp_new.php" ["line"]=> int(67) ["function"]=> string(4) "post" ["class"]=> string(12) "MPRestClient" ["type"]=> string(2) "::" ["args"]=> array(1) { [0]=> array(3) { ["uri"]=> string(12) "/oauth/token" ["data"]=> array(3) { ["client_id"]=> string(16) "XXXXX" ["client_secret"]=> string(32) "XXXXX" ["grant_type"]=> string(18) "client_credentials" } ["headers"]=> array(1) { ["content-type"]=> string(33) "application/x-www-form-urlencoded" } } } } [2]=> array(6) { ["file"]=> string(47) "/home/XXXXX/public_html/mercadopago_test.php" ["line"]=> int(8) ["function"]=> string(16) "get_access_token" ["class"]=> string(2) "MP" ["type"]=> string(2) "->" ["args"]=> array(0) { } } } ["previous":"Exception":private]=> NULL }
Hola, perdona el mal entendido, el fix del comentario anterior es solo para la versión de 5.2.5, que no acepta el tercer parámetro en el constructor de la clase Exception, dado un error de sintaxis. La modificación propuesta fue enviar solo el mensaje y el código de error en el constructor como se muestra a continuación .
class MercadoPagoException extends Exception {
public function __construct($message, $code = 500, Exception $previous = null) {
// Default code 500
parent::__construct($message, $code); //! Linea modificada.
}
}
Por el tipo de error "couldn't connect to host" puede que el servidor tenga algún firewall o algún tipo restricción.
Puedes intentar conectarte a google para descartar eso:
how-to-resolve-curl-error-7-couldnt-connect-to-host
$ch = curl_init("http://google.com");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
print($data);
También hacer una conexion a https://api.mercadopago.com y https://mercadopago.com para descartar que no sea algún tipo de bloqueo del servidor
Estoy implemente MercadoPago para realizar pagos en un sistema de facturación en PHP 5.2 y estoy teniendo problemas con el servidor de producción, de modo local funcion perfectamente bajo la version de PHP 5.2.5 con Apache y 5.2.17 ejecutado por consola (Es la misma versión que en producción pero no con apache), en ambos casos funciono de modo local.
En Todas las pruebas en producción, el servidor lanza un error 500 Internal Server Error, por ejemplo cuando llamo a la funcion create_preference(...). El error se produce específicamente en la clase MPRestClient, funcion exec($request) en la linea:
Probé quietando alguna de las opciones cURL en la función build_request($request), para ver si era alguna incompatible en esta versión o algo por el estilo, pero nada funciono.
No he conseguido mas información sobre el posible error, se que el error es por algo del servidor, pero no puedo cambiar la versión con la que actualmente esta en funcionamiento.
Verifique todas las extensiones, pero solo depende de cURL y tal vez de OpenSSL.
Preguntas
Fix
Para que funcione en esta versión del servidor modifique la clase MercadoPagoException en el archivo mercadopago.php
Información del servidor de Producción
Servidor
cURL
OpenSSL
Código de Prueba
Aquí les dejo el código de prueba muy simple que genera el error cuando lo ejecuto en el servidor Test.zip