Я знаю, что этот вопрос задан довольно много, я видел, наверное, все вопросы, связанные с этой проблемой, но никто, кажется, не исправил мою проблему. В основном, когда я запускаю свой код в песочнице, он работает, но не вживую. Вот оно:IPN недействительный, но не в песочнице
<?php
class Paypal_IPN
{
/** @var string $_url The paypal url to go through cURL
$private $_url;
/**
* @param string $mode 'live' or 'sandbox'
*/
public function __construct($mode = 'live')
{
if ($mode == 'live')
$this->_url = 'https://www.paypal.com/cgi-bin/webscr';
else
$this->_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
}
public function run()
{
$postFields = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
if(function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()){
$varvalue = urlencode(stripslashes($varvalue));
}
else {
$value = urlencode($value);
}
$postFields .= "&$key=$varvalue";
}
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://www.paypal.com/cgi-bin/webscr',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields
));
$result = curl_exec($ch);
curl_close($ch);
$price = $_POST['mc_gross'];
if ($result == 'VERIFIED') {
try
{
$bdd = new PDO('mysql:host=HOST;dbname=DBNAME', 'LOGIN', 'PASS');
} catch(PDOexception $e)
{
echo "erreur";
}
$bdd->exec("UPDATE users SET price='$price' WHERE pseudo='CUSTOMER'");
} else {
// IPN invalid, log for manual investigation
echo "The response from IPN was: <b>" .$result ."</b>";
}
}
}
?>
Так что да каждый раз, когда я иду на страницу подтверждения, что работает этот код:
<?php
require 'ipn.php';
$paypal = new Paypal_IPN();
$paypal->run();
?>
Я получаю эту ошибку: Ответ от СПИ был: Invalid
Я ввел правильный URL-адрес файла IPN в свою учетную запись PayPal. Я действительно не вижу, что я делаю неправильно. Можете ли вы, ребята, помочь мне?
Спасибо!
Не могли бы вы попробовать войти вниз $ _POST и $ postFields сравнить оба данных. PayPal требует, чтобы оба были одинаковыми. Кроме того, убедитесь, что вы вернетесь к правильной конечной точке. – Joseph
ehm Я, вероятно, буду звучать как новичок (который я есть), но как это сделать? :Икс – MEGADEVOPS