function update_status($status, $order_id, $text = 'VMPAYMENT_SEB_PAYMENT_CANCELED') { if ($order_id) { // send the email only if payment has been accepted if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); $order['order_status'] = $status; $order['virtuemart_order_id'] = $order_id; $order['customer_notified'] = 1; $order['comments'] = JTExt::sprintf($text, $order_id); $modelOrder->updateStatusForOneOrder($order_id, $order, true); } }
function plgVmOnUserPaymentCancel() { if (!class_exists('VirtueMartModelOrders')) { require VMPATH_ADMIN . DS . 'models' . DS . 'orders.php'; } $tp_cart = json_decode($_SESSION['__vm']['vmcart']); $vm_order = VirtueMartModelOrders::getOrderIdByOrderNumber($tp_cart->order_number); $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($vm_order); if ($this->_vmpCtable->virtuemart_paymentmethod_id != $order['details']['BT']->virtuemart_paymentmethod_id) { return NULL; } echo '<script>alert("Pago Cancelado: Por favor intente nuevamente")</script>'; $modelOrder = new VirtueMartModelOrders(); $order['order_status'] = 'X'; $order['virtuemart_order_id'] = $vm_order; $order['customer_notified'] = 1; $order['comments'] = JTExt::sprintf("Pago Rechazado", $vm_order); $modelOrder->updateStatusForOneOrder($vm_order, $order, false); return true; }
public function plgVmOnPaymentNotification() { if (JRequest::getVar('pelement') != 'kaznachey') { return null; } if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $order_id = JRequest::getVar('order_number'); $order = VirtueMartModelOrders::getOrder($order_id); $error = false; $method = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id); if ($method) { $request_json = file_get_contents('php://input'); $request = json_decode($request_json, true); $request_sign = md5($request["ErrorCode"] . $request["OrderId"] . $request["MerchantInternalPaymentId"] . $request["MerchantInternalUserId"] . number_format($request["OrderSum"], 2, ".", "") . number_format($request["Sum"], 2, ".", "") . strtoupper($request["Currency"]) . $request["CustomMerchantInfo"] . strtoupper($method->secret_key)); if ($request['SignatureEx'] == $request_sign) { $order['order_status'] = $method->status_success; $order['virtuemart_order_id'] = "{$order_id}"; $order['customer_notified'] = 0; $order['comments'] = JTExt::sprintf('VMPAYMENT_kaznachey_PAYMENT_CONFIRMED', $order_id); if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); ob_start(); $modelOrder->updateStatusForOneOrder($order_id, $order, true); ob_end_clean(); } else { $error = "WRONG_SIGNATURE"; } if ($error) { $order['order_status'] = $method->status_canceled; $order['virtuemart_order_id'] = "{$order_id}"; $order['customer_notified'] = 0; $order['comments'] = JTExt::sprintf("VMPAYMENT_kaznachey_PAYMENT_ERROR: {$error}", $order_id); if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); ob_start(); $modelOrder->updateStatusForOneOrder($order_id, $order, true); ob_end_clean(); } } exit; return null; }
public function plgVmOnPaymentNotification() { if (JRequest::getVar('pelement') != 'kaznachey') { return null; } if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $order_id = JRequest::getVar('order_number'); $order = VirtueMartModelOrders::getOrder($order_id); $error = false; $method = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id); if ($method) { $merchantGuid = $method->merchant_id; $merchnatSecretKey = $method->secret_key; $HTTP_RAW_POST_DATA = @$HTTP_RAW_POST_DATA ? $HTTP_RAW_POST_DATA : file_get_contents('php://input'); $hrpd = json_decode($HTTP_RAW_POST_DATA); if (@$hrpd->MerchantInternalPaymentId) { $merchantGuid = $method->merchant_id; $merchnatSecretKey = $method->secret_key; $amount = number_format($order['details']['BT']->order_total, 2, '.', ''); $signature_u = md5(md5($merchantGuid . $merchnatSecretKey . "{$amount}" . $order_id)); if ($hrpd->ErrorCode == 0) { if ($hrpd->CustomMerchantInfo == $signature_u) { $order['order_status'] = $method->status_success; $order['virtuemart_order_id'] = "{$order_id}"; $order['customer_notified'] = 0; $order['comments'] = JTExt::sprintf('VMPAYMENT_kaznachey_PAYMENT_CONFIRMED', $order_id); if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); ob_start(); $modelOrder->updateStatusForOneOrder($order_id, $order, true); ob_end_clean(); } else { $error = "Wrong_SIGNATURE"; } } else { $error = "Transaction_error"; } } if ($error) { $order['order_status'] = $method->status_canceled; $order['virtuemart_order_id'] = "{$order_id}"; $order['customer_notified'] = 0; $order['comments'] = JTExt::sprintf("VMPAYMENT_kaznachey_PAYMENT_ERROR: {$error}", $order_id); if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); ob_start(); $modelOrder->updateStatusForOneOrder($order_id, $order, true); ob_end_clean(); } } exit; return null; }
public function plgVmOnPaymentNotification() { if (JRequest::getVar('pelement') != 'paykeeper') { return null; } if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $orderid = JRequest::getInt('WMI_PAYMENT_NO', 0); $postprice = floatval(JRequest::getVar('WMI_PAYMENT_AMOUNT')); $payment = $this->getDataByOrderId($orderid); $method = $this->getVmPluginMethod($payment->virtuemart_paymentmethod_id); $order_model = new VirtueMartModelOrders(); $order_info = $order_model->getOrder($orderid); $order_number = $order_info['details']['BT']->order_number; if (!$method->payment_currency) { $this->getPaymentCurrency($method); } // END printing out HTML Form code (Payment Extra Info) $q = 'SELECT `currency_code_3` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id`="' . $method->payment_currency . '" '; $db =& JFactory::getDBO(); $db->setQuery($q); $currency_code_3 = $db->loadResult(); if (!class_exists('CurrencyDisplay')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'; } $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency); $totalInPaymentCurrency = round($paymentCurrency->convertCurrencyTo($method->payment_currency, $order_info['details']['BT']->order_total, false), 2); $sig = JRequest::getVar('WMI_SIGNATURE'); $params = JRequest::get('post'); unset($params["WMI_SIGNATURE"]); uksort($params, "strcasecmp"); $values = implode('', $params); $signature = base64_encode(pack("H*", md5($values . $method->paykeeper_secret))); if ($totalInPaymentCurrency == $postprice && $sig == $signature) { switch (JRequest::getVar('WMI_ORDER_STATE')) { case 'Accepted': $status = $method->status_success; $msg = 'оплачен'; break; case 'Rejected': default: $status = $method->status_canceled; $msg = 'отменён'; break; } $order['order_status'] = $status; $order['virtuemart_order_id'] = $orderid; $order['customer_notified'] = 0; $order['comments'] = JTExt::sprintf('VMPAYMENT_PAYKEEPER_PAYMENT_CONFIRMED', $order_number); if (!class_exists('VirtueMartModelOrders')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php'; } $modelOrder = new VirtueMartModelOrders(); ob_start(); $modelOrder->updateStatusForOneOrder($orderid, $order, true); ob_end_clean(); echo 'WMI_RESULT=OK'; exit; } echo 'WMI_RESULT=RETRY&WMI_DESCRIPTION=' . urlencode('Неверная подпись заказа'); return null; }