, пожалуйста, извините мое невежество заранее, но я довольно новичок в php, и этот меня прослушивал какое-то время. Я пытаюсь написать сценарий IPN для интернет-магазина, который продает отдельные предметы. как только платеж будет завершен, скрипт обновит базу данных и изменит доступность с «доступного» на «недоступный». IPN, похоже, отлично работает, кроме обновления базы данных. Я нахожусь на своем конце, потому что не вижу, что не так с сценарием. вот что у меня есть:PayPal IPN, не обновляющий базу данных MySQL
curl_close($ch);
if (strcmp ($res, "VERIFIED") == 0) {
$token = $_POST['invoice'];
$item= $_POST['invoice'];
$conn=new PDO("mysql:host=SERVER;dbname=MYDATABASE","NAME","PASS");
if ($_POST['payment_status'] == 'completed')
{
$sql="UPDATE `tbl_products` SET `id_status` = 3 WHERE `id_product`=:idproduct";
$stmt=$conn->prepare($sql);
$stmt->bindParam(':idproduct',$item);
$stmt->execute();
}
if ($_POST['payment_status'] == 'pending')
{
$sql="UPDATE `tbl_products` SET `id_status` = 2 WHERE `id_product`=:idproduct";
$stmt=$conn->prepare($sql);
$stmt->bindValue(':idproduct',$item);
$stmt->execute();
}
foreach ($_POST as $key => $value)
{
$emailtext .= $key . " = " .$value ."\n\n";
}
mail("MYEMAIL", "Live-VALID IPN", $emailtext . "\n\n" . $req);
}
else if (strcmp ($res, "INVALID") == 0)
{
// log for manual investigation
foreach ($_POST as $key => $value)
{
$emailtext .= $key . " = " .$value ."\n\n";
}
mail("MYEMAIL", "Live-INVALID IPN", $emailtext . "\n\n" . $req);
}
Вы связывающим значение 'invoice' к параметру под названием' idproduct'. Продукты и счета-фактуры - это разные вещи, так что, возможно, посмотрите на это? –
привет Клаус. Большое спасибо за ваш ответ. «счет-фактура» - это просто переменная в форме, которую я использую, чтобы передать номер элемента (который является id_product в базе данных). я только что изменил это на «item_number» и попробовал еще раз, но все равно не повезло. i idid перед тем как «item_number», но изменил его на «счет-фактуру», чтобы узнать, поможет ли это. – paul