} else { if ($donation_data['donation_id'] > 0 && !in_array($donation_data['donation_id'], (array) $_SESSION['did'])) { CommonFunc::redirect(DonationConfig::get('site_url')); } } $messageData = array(); if ($donation_data['status_id'] == clsAbstractStatusCodes::COMPLETED) { $messageData = array('heading' => 'Thank you!', 'message' => 'Payment has been processed successfully.'); } else { if ($donation_data['status_id'] == clsAbstractStatusCodes::PENDING_REVIEW) { $messageData = array('heading' => 'Thank you!', 'message' => 'Payment needs to be reviewed.'); } else { $messageData = array('heading' => 'Thank you for your request.', 'message' => 'Your request has been submitted successfully. Payment Status: <strong>' . ucfirst($donation_data['status_id']) . '</strong>'); } } $msgs = modMessages::Instance()->render(); if ($msgs != '') { $messageData['message'] = $msgs; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Donation Status</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" media="screen" href="assets/style.css" /> <script type="text/javascript" src="assets/scripts/jquery.min.js"></script> <script type="text/javascript" src="assets/scripts/common/jquery.scrollTo-min.js"></script> </head> <body>
protected function _success() { if ($this->_test_mode) { $this->getPayPal()->enableTestMode(); } $txn_data = (array) $this->getPayPal()->validate_pdt($_GET['tx'], $this->PaymentSettings('pdt_auth_code')); $_POST = array_merge($_GET, $txn_data); $invoice = explode("_", $_POST['invoice']); $donation_id = (int) $invoice[0]; $_POST['donation_id'] = $donation_id; $link = 'donation.php?d=' . $donation_id; if ($txn_data['status'] == 'FAIL') { modMessages::Instance()->error("Transaction couldn't be verified. Invalid donation request"); commonFunc::redirect($this->getLink($link)); } $this->getPayPal()->validate_pdt($tx_token, $auth_token); $this->getPayPal()->set_ipn_data($txn_data); $donation_data = $this->DonationData($donation_id); if ($donation_data['donation_id'] == 0) { modMessages::Instance()->error("Invalid donation request"); commonFunc::redirect($this->getLink($link)); } $donation_id_collection = array(); if (isset($_SESSION['did']) && is_array($_SESSION['did'])) { $donation_id_collection = $_SESSION['did']; } $donation_id_collection[] = $_POST['donation_id']; $_SESSION['did'] = $donation_id_collection; if ($donation_data['status_id'] == clsAbstractStatusCodes::COMPLETED) { modMessages::Instance()->info("Donation already processed."); CommonFunc::redirect($this->getLink($link)); exit; } $this->getModel()->logDonationTransactionData($txn_data, $donation_data['donation_id']); $payment_status = strtolower($txn_data['payment_status']); if ($payment_status == '') { $payment_status = clsAbstractStatusCodes::PENDING_REVIEW; } $link = 'donation.php?d=' . $donation_id; if ($payment_status == clsAbstractStatusCodes::COMPLETED) { $business = urldecode($txn_data['business']); if ($business != $this->PaymentSettings('merchant_email')) { $payment_status = clsAbstractStatusCodes::PENDING_REVIEW; modMessages::Instance()->error("Merchant couldn't be verified"); } else { if ($txn_data['mc_gross'] != $donation_data['amount']) { $payment_status = clsAbstractStatusCodes::PENDING_REVIEW; modMessages::Instance()->error("Donation couldn't be verified. Amount mis-matched!"); } else { $payment_status = clsAbstractStatusCodes::COMPLETED; modMessages::Instance()->success("Payment successfully processed. Thank you!"); $donation_data['status_id'] = $payment_status; if (Settings::Get('enable_email')) { $this->_payment_completed_mail($donation_data); } } } } else { modMessages::Instance()->error("Payment Status: " . $payment_status . " - Payment couldn't be processed"); } $this->getModel()->UpdateStatus($payment_status, $donation_id); CommonFunc::redirect($this->getLink($link)); }