/ / Uso de host constante indefinido: error supuesto de 'host' en la clase paypal (biblioteca codeigniter) - php, codeigniter, paypal, paypal-sandbox, paypal-ipn

Uso de host constante indefinido - error asumido de 'host' en la clase de paypal (biblioteca de codeigniter) - php, codeigniter, paypal, paypal-sandbox, paypal-ipn

Estoy usando la biblioteca codeigniter llamada paypal_class. Todo está bien, pero al validar la función ipn obtengo este error. Use of undefined constant host - assumed "host" cuál debe ser la razón por la cual el correo no se envía al usuario. No se devuelve nada.

Soy nuevo en paypal. Así que espero una solución detallada. Gracias. Por favor, pregunte cualquier otra información que pueda necesitar.


El error está en esta línea:

 $fp = fsockopen($url_parsed[host], "80", $err_num, $err_str, 30);

dónde

$url_parsed = parse_url($this->paypal_url);

Aquí está la función ipn:

    function validate_ipn() {

// parse the paypal URL
$url_parsed = parse_url($this->paypal_url);

// generate the post string from the _POST vars aswell as load the
// _POST vars into an arry so we can play with them from the calling
// script.
$post_string = "";
foreach ($_POST as $field => $value) {
$this->ipn_data["$field"] = $value;
$post_string .= $field . "=" . urlencode(stripslashes($value)) . "&";
}
$post_string.="cmd=_notify-validate"; // append ipn command
// open the connection to paypal
$fp = fsockopen($url_parsed["host"], "80", $err_num, $err_str, 30);
if (!$fp) {

// could not open the connection.  If loggin is on, the error message
// will be in the log.
$this->last_error = "fsockopen error no. $errnum: $errstr";
$this->log_ipn_results(false);
return false;
} else {

// Post the data back to paypal
fputs($fp, "POST $url_parsed[path] HTTP/1.1rn");
fputs($fp, "Host: $url_parsed[host]rn");
fputs($fp, "Content-type: application/x-www-form-urlencodedrn");
fputs($fp, "Content-length: " . strlen($post_string) . "rn");
fputs($fp, "Connection: closernrn");
fputs($fp, $post_string . "rnrn");

// loop through the response from the server and append to variable
while (!feof($fp)) {
$this->ipn_response .= fgets($fp, 1024);
}
fclose($fp); // close connection
}

if (preg_match("/VERIFIED/i", $this->ipn_response)) {

// Valid IPN transaction.
$this->log_ipn_results(true);
return true;
} else {

// Invalid IPN transaction.  Check the log for details.
$this->last_error = "IPN Validation Failed.";
$this->log_ipn_results(false);
return false;
}
}

Respuestas

1 para la respuesta № 1

necesitas cambiar esto

 $fp = fsockopen($url_parsed[host], "80", $err_num, $err_str, 30);

a

 $fp = fsockopen($url_parsed["host"], "80", $err_num, $err_str, 30);

luego depure el valor devuelto aquí hacer:

$url_parsed = parse_url($this->paypal_url);
var_dump($url_parsed);