Я пытаюсь простым слушателем обновить мою базу данных информации о пользователях (например, установить тип их учетной записи с FREE на PREMIUM) после получения IPN PayPal. После проверки истории IPN, IPN успешно отправлен моему слушателю, но не может обновить мою базу данных. Я хотел обновить тип учетной записи пользователя после ПРОВЕРЕННОЙ части, используя идентификатор СЕССИИ, который использует мой пользователь. Слушатель. php, который я использую, взят из учебного видео, за которым я следовал.
Вот код:
session_start();
require 'scr/db.inc.php';
header('HTTP:/1.1 200 OK');
$resp = "cmd=_notify-validate";
foreach ($_POST as $parm => $var) {
$var = urlencode (stripslashes($var));
$resp .= "&$parm=$var";
}
$item_name = $_POST['item_name'];
$item_number = $_POST['$item_number'];
$payment_status = $_POST['$payment_status'];
$payment_amount = $_POST['$payment_amount'];
$payment_currency = $_POST['$payment_currency'];
$txn_id = $_POST['$txn_id'];
$receiver_email = $_POST['$receiver_email'];
$payer_email = $_POST['$payer_email'];
$record_id = $_POST['$record_id'];
$httphead = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$httphead .= "Content-Type: application/x-www-form-urlencoded\r\n";
$httphead .= "Content-Length: " .strlen($resp) . "\r\n\r\n";
$errno = '';
$errstr = '';
$fh = fsockopen ('ssl:www.paypal.com',443,$errno,$errstr,30);
if (!$fh) {
} else {
fputs ($fh, $httphead . $resp);
while (!feof($fh)) {
$readresp = fgets ($fh, 1024);
if(strcmp ($readresp, "VERIFIED") == 0 ) {
$handler = new Dbh();
$sql = 'UPDATE `users` SET `type` = "PREMIUM" WHERE `id` = :id ';
$query = $handler->connect()->prepare($sql);
$query->execute(array(':id'=>$_SESSION['log_id']));
} else if (strcmp ($readresp, "INVALID") == 0) {
}
}
fclose($fh);
}
?>
Я только что добавил в него пару строк, чтобы, надеюсь, обновить базу данных. Вот эти строки:
session start();
require 'scr/db.inc.php';
.
.
.
.
$handler = new Dbh(); // used to connect to database
$sql = 'UPDATE `users` SET `type` = "PREMIUM" WHERE `id` = :id ';
$query = $handler->connect()->prepare($sql);
$query->execute(array(':id'=>$_SESSION['log_id']));
.
.
.
.