如何在joomla / virtuemart中更新订单状态

时间:2020-01-16 04:56:30

标签: payment-gateway joomla3.0 virtuemart

当前,我正在使用Joomla v3.9.14和Virtuemart v3.6.10。 我几乎完成了使用客户重定向创建支付网关的工作。我坚持必须从支付网关获取回执和更新状态的方法。我不知道如何为付款网关响应创建url,因为没有任何合适的文档。任何帮助将不胜感激。

这是我无法使用的方法:

function userdata(x)
      local _ENV = math
      return (x)
  end
  print(userdata(sin(2)))

付款响应中的我的网址如下: function plgVmOnPaymentNotification(){ if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { return null; // Another method was selected, do nothing } if (!$this->selectedThisElement($method->payment_element)) { return false; } 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'); vmLanguage::loadJLang('com_virtuemart'); $modelOrder = VmModel::getModel('orders'); // $tarlanResponse = file_get_contents('php://input'); // $tarlanData = json_decode($tarlanResponse, true); $tarlanData = vRequest::getRequest(); $payment_name = $this->renderPluginName($method); $order['customer_notified'] = 1; $order['include_comment'] = 0; $order_number = $tarlanData['reference_id']; $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number); $order = $modelOrder->getOrder($virtuemart_order_id); $customer_total = (number_format((float)$order['details']['BT']->order_total, 2, '.', '')); $payment_name = $this->renderPluginName($method); if(!empty($tarlanResponse)){ switch($tarlanData['status']){ case 0: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_pending)); break; case 1: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_paid)); $order->_updateOrderHist($virtuemart_order_id, $method->status_paid, 1, 'Произведена оплата заказа на сумму '.$order['details']['BT']->order_total.' KZT'); break; case 2: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_pending)); break; case 3: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_pending)); break; case 4: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_canceled)); break; case 5: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_refund)); $order->_updateOrderHist($virtuemart_order_id, $method->status_refund, 1, 'Возврат на сумму' . $order['details']['BT']->order_total. ' KZT'); break; case 6: $order->updateStatusForOneOrder($virtuemart_order_id, array('order_status' => $method->status_failed)); break; default: vmError('Undefined transaction status!<br>To solve this problem write to <a href="mailto:support@tarlanpayments.kz">support@tarlanpayments.kz</a>'); break; } } $html = $this->_getPaymentResponseHtml($tarlanData, $ return true; }

0 个答案:

没有答案