Ejemplo n.º 1
0
 function notifyUrl()
 {
     $orderId = JRequest::getVar('orderId');
     $payClass = JRequest::getVar('payClass', '');
     $className = 'PayGty' . ucfirst($payClass);
     require_once JPATH_SITE . DS . "components" . DS . "com_enmasse" . DS . "helpers" . DS . "payGty" . DS . $payClass . DS . $className . ".class.php";
     if (!call_user_func_array(array($className, "validateTxn"), array($payClass))) {
         echo JTEXT::_("PAYMENT_VALIDATION_FAILED");
         exit(0);
     } else {
         $payDta = call_user_func_array(array($className, "generatePaymentDetail"), array());
         $payDetail = json_encode($payDta);
         if ($payClass == "pagseguro") {
             header('Content-Type: text/html; charset=ISO-8859-1');
             if (isset($_POST['Referencia'])) {
                 $orderId = $_POST['Referencia'];
                 $order = JModel::getInstance('order', 'enmasseModel')->getById($orderId);
                 if ($order == null) {
                     echo JTEXT::_("PAYMENT_ERROR_MSG") . $orderId;
                     exit(0);
                 } else {
                     if ($order->status == "Unpaid") {
                         switch ($_POST['StatusTransacao']) {
                             case "Completo":
                                 //Full payment
                                 EnmasseHelper::doNotify($orderId);
                                 break;
                             case "Aguardando Pagto":
                                 //Awaiting Customer Payment
                                 EnmasseHelper::setPendingStatusByOrderId($orderId);
                                 break;
                             case "Aprovado":
                                 //Payment approved, awaiting compensation
                                 EnmasseHelper::doNotify($orderId);
                                 break;
                                 //case "Em An...": //Payment approved, under reviewing by Pagseguro
                                 //break;
                             //case "Em An...": //Payment approved, under reviewing by Pagseguro
                             //break;
                             case "Cancelado":
                                 //Cancelled
                                 EnmasseHelper::setRefundedStatusByOrderId($orderId);
                                 break;
                             default:
                                 $msg = "Muito obrigado por seu pedido!";
                                 $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
                                 JFactory::getApplication()->redirect($link, $msg);
                                 break;
                         }
                         JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                     }
                 }
             } else {
                 $msg = "Muito obrigado por seu pedido!";
                 $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
                 JFactory::getApplication()->redirect($link, $msg);
             }
         } elseif ($payClass == "payfast") {
             if (isset($_POST['payment_status'])) {
                 $flag = JRequest::getVar('flag');
                 if ($_POST['payment_status'] == "COMPLETE") {
                     $orderId = $_POST['m_payment_id'];
                     EnmasseHelper::doNotify($orderId);
                     JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                 }
             }
             $msg = '';
             if ($_GET['flag'] == "returnUrl") {
                 $msg = JText::_("Thank you for purchasing!");
             } else {
                 if ($_GET['flag'] == "cancelUrl") {
                     $msg = JText::_("Your payment was cancelled.");
                 }
             }
             $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
             JFactory::getApplication()->redirect($link, $msg);
         } elseif ($payClass == "twocheckout") {
             $payGty = JModel::getInstance('payGty', 'enmasseModel')->getByClass($payClass);
             $attribute_config = json_decode($payGty->attribute_config);
             $accountNumber = $attribute_config->sid;
             $demo = $attribute_config->demo;
             if ($demo == "Y" && $_REQUEST["credit_card_processed"] == "Y") {
                 $orderId = $_REQUEST["cart_order_id"];
                 EnmasseHelper::doNotify($orderId);
                 JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                 $msg = JText::_("Thank you for purchasing!");
             } elseif (demo != "Y" && $_REQUEST["credit_card_processed"] == "Y") {
                 $secretWord = $attribute_config->secret_word;
                 $string_to_hash = $secretWord . $accountNumber . $_REQUEST["order_number"] . $_REQUEST["total"];
                 $check_key = strtoupper(md5($string_to_hash));
                 if ($check_key == $_REQUEST["key"]) {
                     $orderId = $_REQUEST["cart_order_id"];
                     EnmasseHelper::doNotify($orderId);
                     JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                     $msg = JText::_("Thank you for purchasing!");
                 } else {
                     $msg = JText::_("Can't verify your payment! Please contact Administrator!");
                 }
             }
             $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
             JFactory::getApplication()->redirect($link, $msg);
         } elseif ($payClass == "authorizenet") {
             if ($_POST['approved'] == 'true') {
             }
             $orderId = $_POST['invoice_number'];
             EnmasseHelper::doNotify($orderId);
             JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
             $msg = JText::_("Thank you for purchasing! Your transaction ID is " . $_POST['transaction_id'] . ".");
             $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
             JFactory::getApplication()->redirect($link, $msg);
         } elseif ($payClass == "ewayhosted") {
             if ($_REQUEST['trxnstatus'] == 'true') {
             }
             $orderId = $_REQUEST['orderId'];
             EnmasseHelper::doNotify($orderId);
             JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
             $msg = JText::_("Thank you for purchasing!");
             $link = JRoute::_("index.php?option=com_enmasse&view=orderlist", false);
             JFactory::getApplication()->redirect($link, $msg);
         } elseif ($payClass == "paypal") {
             $payDta = call_user_func_array(array($className, "generatePaymentDetail"), array());
             $payDetail = json_encode($payDta);
             JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
             $link = JRoute::_("index.php?option=com_enmasse&controller=payment&task=doNotify&{$postData}&orderId={$orderId}", false);
             JFactory::getApplication()->redirect($link);
         } elseif ($payClass == "moneybookers") {
             if (isset($_POST['transaction_id']) && $_POST['status'] == 2) {
                 $orderId = $_POST['transaction_id'];
                 if (EnmasseHelper::getOrderStatusByOrderId($orderId) == "Unpaid") {
                     EnmasseHelper::doNotify($orderId);
                     JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                 }
             }
         } elseif ($payClass == "ogone") {
             $aData = array();
             foreach ($_REQUEST as $key => $value) {
                 $aData[strtoupper($key)] = $value;
             }
             $orderId = $aData['ORDERID'];
             if ($aData['STATUS'] == '5' || $aData['STATUS'] == '9') {
                 EnmasseHelper::doNotify($orderId);
                 JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                 $sMessage = JText::_('PAYMENT_BEING_PROCESS_MSG');
             } else {
                 $sMessage = JTEXT::_("PAYMENT_VALIDATION_FAILED");
             }
             $link = JRoute::_("/", false);
             JFactory::getApplication()->redirect($link, $sMessage);
         } elseif ($payClass == "worldpay") {
             if (isset($_POST['status'])) {
                 $flag = JRequest::getVar('flag');
                 if ($_POST['status'] == "COMPLETE") {
                     $orderId = $_POST['cartId'];
                     EnmasseHelper::doNotify($orderId);
                     JModel::getInstance('order', 'enmasseModel')->updatePayDetail($orderId, $payDetail);
                 }
             }
             $msg = '';
             if ($_GET['flag'] == "returnUrl") {
                 $msg = JText::_("Thank you for purchasing!");
             } else {
                 if ($_GET['flag'] == "cancelUrl") {
                     $msg = JText::_("Your payment was cancelled.");
                 }
             }
             $link = JRoute::_("index.php?option=com_enmasse&controller=deal", false);
             JFactory::getApplication()->redirect($link, $msg);
         }
     }
 }