当前,我正在使用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;
}