Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PayPal IPN không cập nhật cơ sở dữ liệu MySQL

Paypal IPN trả về trạng thái có chữ hoa ký tự đầu tiên.

Vậy là Completed không bằng completed . Hãy thử điều này

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);
}

Tốt hơn là lưu trữ trạng thái trong một biến và sử dụng php strtolower có chức năng làm cho chúng viết thường.

$paypalStatus = strtolower($_POST['payment_status']);

Hơn là kiểm tra như thế này

if($paypalStatus == 'pending')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL - Tôi có nên hủy chuẩn hóa không?

  2. MYSQL Trùng lặp và loại bỏ hàng trùng lặp với ít dữ liệu nhất

  3. Cách xử lý các tệp mới để xử lý trong cron job

  4. Cách xóa các hàng trùng lặp và cập nhật bảng

  5. Cài đặt MySQL-Python - Không thể tạo trứng