case 'denied': case 'voided': case 'express-checkout-cleared': ipn_debug_email('IPN NOTICE :: Storing order/update details for order #' . $ordersID . ' txn_id: ' . $_POST['txn_id'] . ' PP IPN ID: ' . $paypalipnID); if ($txn_type == 'parent') { $sql_data_array = ipn_create_order_array($ordersID, $txn_type); zen_db_perform(TABLE_PAYPAL, $sql_data_array); $paypalipnID = $db->Insert_ID(); } else { $sql_data_array = ipn_create_order_update_array($txn_type); zen_db_perform(TABLE_PAYPAL, $sql_data_array, 'update', "txn_id='" . ($txn_type == 'cleared-authorization' ? $_POST['parent_txn_id'] : $_POST['txn_id']) . "'"); $sql = "select paypal_ipn_id from " . TABLE_PAYPAL . " where txn_id='" . $_POST['txn_id'] . "'"; $result = $db->Execute($sql); $paypalipnID = $result->fields['paypal_ipn_id']; } $sql_data_array = ipn_create_order_history_array($paypalipnID); zen_db_perform(TABLE_PAYPAL_PAYMENT_STATUS_HISTORY, $sql_data_array); ipn_debug_email('IPN NOTICE :: Added PP status-history record for order #' . $ordersID . ' txn_id: ' . $_POST['txn_id'] . ' (updated/child) PP IPN ID: ' . $paypalipnID); switch ($txn_type) { case 'voided': case $_POST['payment_status'] == 'Refunded' || $_POST['payment_status'] == 'Reversed' || $_POST['payment_status'] == 'Voided': //payment_status=Refunded or payment_status=Voided $new_status = MODULE_PAYMENT_PAYPALWPP_REFUNDED_STATUS_ID; if (defined('MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID') && (int) MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID > 0 && !$isECtransaction) { $new_status = MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID; } break; case 'echeck-denied': case 'denied-echeck': case 'failed-echeck': //payment_status=Denied or failed
case 'parent': case 'echeck-denied': case 'echeck-cleared': if ($txn_type == 'parent') { $ipn_id = $db->Execute("select zen_order_id, paypal_ipn_id\r\n from " . TABLE_PAYPAL . "\r\n where txn_id = '" . $_POST['parent_txn_id'] . "'"); } else { $ipn_id = $db->Execute("select zen_order_id, paypal_ipn_id\r\n from " . TABLE_PAYPAL . "\r\n where txn_id = '" . $_POST['txn_id'] . "'"); } if ($txn_type == 'parent') { $paypal_order = ipn_create_order_array($ipn_id->fields['zen_order_id'], $txn_type); zen_db_perform(TABLE_PAYPAL, $paypal_order); } else { $paypal_order = ipn_create_order_update_array($txn_type); zen_db_perform(TABLE_PAYPAL, $paypal_order, 'update', "txn_id='" . $_POST['txn_id'] . "'"); } $paypal_order_history = ipn_create_order_history_array($ipn_id->fields['paypal_ipn_id']); //payment_status=Refunded if ($_POST['payment_status'] == 'Refunded' || $_POST['payment_status'] == 'Denied') { $new_status = MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID; } elseif ($txn_type == 'echeck-cleared') { $new_status = MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID; } ipn_debug_email('IPN NOTICE:set new status ' . $new_status . ' for reason_code = ' . $_POST['pending_reason'] . " order id = " . $ipn_id->fields['zen_order_id']); if ($_POST['payment_status'] == 'Refunded' || $_POST['payment_status'] == 'Denied' || $txn_type == 'echeck-cleared') { $db->Execute("update " . TABLE_ORDERS . "\r\n set orders_status = '" . $new_status . "'\r\n where orders_id = '" . $ipn_id->fields['zen_order_id'] . "'"); $sql_data_array = array('orders_id' => $ipn_id->fields['zen_order_id'], 'orders_status_id' => $new_status, 'date_added' => 'now()', 'comments' => 'PayPal status: ' . $_POST['payment_status'] . ' ' . ' @ ' . $_POST['payment_date'] . ' Parent Trans ID:' . $_POST['parent_txn_id'] . ' Trans ID:' . $_POST['txn_id'] . ' Amount: ' . $_POST['mc_gross'], 'customer_notified' => false); zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); } break; default: ipn_debug_email('IPN WARNING:Could not establish txn type ' . $txn_type . ' postdata=' . $postdata);