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