Ejemplo n.º 1
0
 function plgVmOnPaymentResponseReceived(&$html)
 {
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     if (!class_exists('shopFunctionsF')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $paytm_data = JRequest::get('post');
     // the payment itself should send the parameter needed.
     $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0);
     $order_number = JRequest::getString('on', 0);
     $vendorId = 0;
     if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return null;
     }
     if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number))) {
         return null;
     }
     if (!($paymentTable = $this->getDataByOrderId($virtuemart_order_id))) {
         return '';
     }
     $payment_name = $this->renderPluginName($method);
     function sanitizedParam($param)
     {
         $pattern[0] = "%,%";
         $pattern[1] = "%#%";
         $pattern[2] = "%\\(%";
         $pattern[3] = "%\\)%";
         $pattern[4] = "%\\{%";
         $pattern[5] = "%\\}%";
         $pattern[6] = "%<%";
         $pattern[7] = "%>%";
         $pattern[8] = "%`%";
         $pattern[9] = "%!%";
         $pattern[10] = "%\\\$%";
         $pattern[11] = "%\\%%";
         $pattern[12] = "%\\^%";
         $pattern[13] = "%=%";
         $pattern[14] = "%\\+%";
         $pattern[15] = "%\\|%";
         $pattern[16] = "%\\\\%";
         $pattern[17] = "%:%";
         $pattern[18] = "%'%";
         $pattern[19] = "%\"%";
         $pattern[20] = "%;%";
         $pattern[21] = "%~%";
         $pattern[22] = "%\\[%";
         $pattern[23] = "%\\]%";
         $pattern[24] = "%\\*%";
         $pattern[25] = "%&%";
         $sanitizedParam = preg_replace($pattern, "", $param);
         return $sanitizedParam;
     }
     function verifyChecksum($checksum, $all, $secret)
     {
         $hash = hash_hmac('sha256', $all, $secret);
         $cal_checksum = $hash;
         $bool = 0;
         if ($checksum == $cal_checksum) {
             $bool = 1;
         }
         return $bool;
     }
     $order_id = JRequest::getString('ORDERID', 0);
     $res_code = JRequest::getString('RESPCODE', 0);
     $res_desc = JRequest::getString('RESPMSG', 0);
     $checksum_recv = JRequest::getString('CHECKSUMHASH', 0);
     //$input = JFactory::getApplication->input;
     $paramList = JRequest::get('post');
     $amount = JRequest::getString('TXNAMOUNT', 0);
     $all = "'" . $order_id . "''" . $res_code . "''" . $res_desc . " " . "'";
     $bool = 0;
     //$bool = verifyChecksum($checksum_recv, $all, $method->secret_key);
     $bool = verifychecksum_e($paramList, $method->secret_key, $checksum_recv);
     if ($bool == 1) {
         if ($res_code == "01") {
             echo '<br><tr><td width="50%" align="center" valign="middle">Thank you for shopping with us. Your account has been charged and your transaction is successful. We will be shipping your order to you soon.</td></tr><br>';
             $new_status = $method->status_success;
         } else {
             echo '<tr><td width="50%" align="center" valign="middle">Thank you for shopping with us. The response is compromised</td></tr><br>';
             $new_status = $method->status_pending;
         }
     } else {
         echo '<tr><td width="50%" align="center" valign="middle">Security Error. Response compromised.</td> </tr>';
         $new_status = $method->status_canceled;
     }
     function vmModel($model = null)
     {
         if (!class_exists('VmModel')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmmodel.php';
         }
         return vmModel::getModel($model);
     }
     $modelOrder = vmModel('orders');
     $order['order_status'] = $new_status;
     $order['customer_notified'] = 0;
     $order['comments'] = '';
     $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true);
     $this->_storePaytmInternalData($method, $order_id, $res_code, $res_desc, $virtuemart_order_id, $paymentTable->paytm_custom);
     if ($res_code == 100) {
         $html = $this->_getPaymentResponseHtml($paymentTable, $payment_name, $res_code, $res_desc);
     } else {
         $cancel_return = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginUserPaymentCancel&on=' . $order_number . '&pm=' . $virtuemart_paymentmethod_id);
         $html = ' <script type="text/javascript">';
         $html .= 'window.location = "' . $cancel_return . '"';
         $html .= ' </script>';
         JRequest::setVar('html', $html);
     }
     //We delete the old stuff
     // get the correct cart / session
     $cart = VirtueMartCart::getCart();
     $cart->emptyCart();
     return true;
 }
Ejemplo n.º 2
0
 function plgVmOnPaymentResponseReceived(&$html)
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (!class_exists('VirtueMartCart')) {
             require VMPATH_SITE . DS . 'helpers' . DS . 'cart.php';
         }
         if (!class_exists('shopFunctionsF')) {
             require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
         }
         if (!class_exists('VirtueMartModelOrders')) {
             require VMPATH_ADMIN . DS . 'models' . DS . 'orders.php';
         }
         if (!isset($_POST)) {
         }
         $paytm_data = JRequest::get('post');
         // the payment itself should send the parameter needed.
         $virtuemart_paymentmethod_id = $this->_getPaytmPluginCode()->virtuemart_paymentmethod_id;
         $order_number = $_POST['ORDERID'];
         $vendorId = 0;
         if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
             return null;
             // Another method was selected, do nothing
         }
         if (!$this->selectedThisElement($method->payment_element)) {
             return false;
         }
         if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number))) {
             return null;
         }
         if (!($paymentTable = $this->getDataByOrderId($virtuemart_order_id))) {
             return '';
         }
         $payment_name = $this->renderPluginName($method);
         function sanitizedParam($param)
         {
             $pattern[0] = "%,%";
             $pattern[1] = "%#%";
             $pattern[2] = "%\\(%";
             $pattern[3] = "%\\)%";
             $pattern[4] = "%\\{%";
             $pattern[5] = "%\\}%";
             $pattern[6] = "%<%";
             $pattern[7] = "%>%";
             $pattern[8] = "%`%";
             $pattern[9] = "%!%";
             $pattern[10] = "%\\\$%";
             $pattern[11] = "%\\%%";
             $pattern[12] = "%\\^%";
             $pattern[13] = "%=%";
             $pattern[14] = "%\\+%";
             $pattern[15] = "%\\|%";
             $pattern[16] = "%\\\\%";
             $pattern[17] = "%:%";
             $pattern[18] = "%'%";
             $pattern[19] = "%\"%";
             $pattern[20] = "%;%";
             $pattern[21] = "%~%";
             $pattern[22] = "%\\[%";
             $pattern[23] = "%\\]%";
             $pattern[24] = "%\\*%";
             $pattern[25] = "%&%";
             $sanitizedParam = preg_replace($pattern, "", $param);
             return $sanitizedParam;
         }
         $order_id = JRequest::getString('ORDERID', 0);
         $res_code = JRequest::getString('RESPCODE', 0);
         $res_desc = JRequest::getString('RESPMSG', 0);
         $checksum_recv = JRequest::getString('CHECKSUMHASH', 0);
         $paramList = JRequest::get('post');
         $amount = JRequest::getString('TXNAMOUNT', 0);
         $mode = JRequest::getString('PAYMENTMODE', 0);
         $payment_id = JRequest::getString('TXNID', 0);
         $all = "'" . $order_id . "''" . $res_code . "''" . $res_desc . " " . "'";
         if (verifychecksum_e($paramList, $method->secret_key, $checksum_recv)) {
             if ($res_code == "01") {
                 echo '<br><tr><td width="50%" align="center" valign="middle">Thank you for shopping with us. Your account has been charged and your transaction is successful. We will be shipping your order to you soon.</td></tr><br>';
                 $new_status = $method->status_success;
             } else {
                 echo '<br><tr><td width="50%" align="center" valign="middle"><b>Transaction Failed. </b>' . $res_desc . '</td></tr><br>';
                 $cancel_return = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginUserPaymentCancel&on=' . $order_number . '&pm=' . $virtuemart_paymentmethod_id);
                 echo "</br><a href='" . $cancel_return . "'><b>Go Back To Cart</a>";
                 $new_status = $method->status_pending;
             }
         } else {
             echo '<tr><td width="50%" align="center" valign="middle">Security Error. Response compromised.</td></tr>';
             $cancel_return = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginUserPaymentCancel&on=' . $order_number . '&pm=' . $virtuemart_paymentmethod_id);
             echo "</br><a href='" . $cancel_return . "'><b>Go Back To Cart</a>";
             $new_status = $method->status_canceled;
         }
         function vmModel($model = null)
         {
             if (!class_exists('VmModel')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmmodel.php';
             }
             return vmModel::getModel($model);
         }
         $modelOrder = vmModel('orders');
         $order['order_status'] = $new_status;
         $order['customer_notified'] = 0;
         $order['comments'] = '';
         $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true);
         $cart = VirtueMartCart::getCart();
         $this->_storePaytmInternalData($method, $order_id, $res_code, $res_desc, $virtuemart_order_id, $paymentTable->paytm_custom, $amount, $mode, $payment_id);
         if ($res_code == "01") {
             $cart->emptyCart();
             $html = $this->_getPaymentResponseHtml($paymentTable, $payment_name, $res_code, $res_desc);
         }
         return true;
     } else {
         $protocol = 'http://';
         $host = '';
         if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == '1')) {
             $protocol = 'https://';
         }
         if (isset($_SERVER["HTTP_HOST"]) && !empty($_SERVER["HTTP_HOST"])) {
             $host = $_SERVER["HTTP_HOST"];
         }
         header("Location: {$protocol}{$host}");
         return false;
     }
 }