public static function CheckFields($ACTION, &$arFields) { global $DB; if ((is_set($arFields, "ORDER_ID") || $ACTION=="ADD") && IntVal($arFields["ORDER_ID"])<=0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_ORDER_ID"), "ERROR_NO_ORDER_ID"); return false; } if ((is_set($arFields, "TAX_NAME") || $ACTION=="ADD") && strlen($arFields["TAX_NAME"])<=0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_TAX_NAME"), "ERROR_NO_TAX_NAME"); return false; } if ((is_set($arFields, "IS_PERCENT") || $ACTION=="ADD") && $arFields["IS_PERCENT"]!="Y" && $arFields["IS_PERCENT"]!="N") { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_TAX_VALUE"), "ERROR_NO_IS_PERCENT"); return false; } if ((is_set($arFields, "IS_IN_PRICE") || $ACTION=="ADD") && $arFields["IS_IN_PRICE"]!="Y" && $arFields["IS_IN_PRICE"]!="N") { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_IN_PRICE"), "ERROR_NO_IS_IN_PRICE"); return false; } if (is_set($arFields, "VALUE") || $ACTION=="ADD") { $arFields["VALUE"] = str_replace(",", ".", $arFields["VALUE"]); $arFields["VALUE"] = DoubleVal($arFields["VALUE"]); if ($arFields["VALUE"] <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_SUM"), "ERROR_NO_VALUE"); return false; } } if (is_set($arFields, "VALUE_MONEY") || $ACTION=="ADD") { $arFields["VALUE_MONEY"] = str_replace(",", ".", $arFields["VALUE_MONEY"]); $arFields["VALUE_MONEY"] = DoubleVal($arFields["VALUE_MONEY"]); } if ((is_set($arFields, "VALUE_MONEY") || $ACTION=="ADD") && $arFields["VALUE_MONEY"]<=0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOT_EMPTY_SUM_MONEY"), "ERROR_NO_VALUE_MONEY"); return false; } if (is_set($arFields, "ORDER_ID")) { if (!($arOrder = CSaleOrder::GetByID($arFields["ORDER_ID"]))) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["ORDER_ID"], GetMessage("SKGOT_NO_ORDER")), "ERROR_NO_ORDER"); return false; } } if ((is_set($arFields, "CODE") || $ACTION=="ADD") && strlen($arFields["CODE"])<=0) $arFields["CODE"] = false; return true; }
public static function CheckFields($ACTION, &$arFields, $ID = 0) { if ((is_set($arFields, "ORDER_ID") || $ACTION == "ADD") && IntVal($arFields["ORDER_ID"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOPV_EMPTY_ORDER_ID"), "EMPTY_ORDER_ID"); return false; } if ((is_set($arFields, "ORDER_PROPS_ID") || $ACTION == "ADD") && IntVal($arFields["ORDER_PROPS_ID"]) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOPV_EMPTY_PROP_ID"), "EMPTY_ORDER_PROPS_ID"); return false; } if (is_set($arFields, "ORDER_ID")) { if (!($arOrder = CSaleOrder::GetByID($arFields["ORDER_ID"]))) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["ORDER_ID"], GetMessage("SKGOPV_NO_ORDER_ID")), "ERROR_NO_ORDER"); return false; } } if (is_set($arFields, "ORDER_PROPS_ID")) { if (!($arOrder = CSaleOrderProps::GetByID($arFields["ORDER_PROPS_ID"]))) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arFields["ORDER_PROPS_ID"], GetMessage("SKGOPV_NO_PROP_ID")), "ERROR_NO_PROPERY"); return false; } if (is_set($arFields, "ORDER_ID")) { $arFilter = array("ORDER_ID" => $arFields["ORDER_ID"], "ORDER_PROPS_ID" => $arFields["ORDER_PROPS_ID"]); if (IntVal($ID) > 0) { $arFilter["!ID"] = $ID; } $dbP = CSaleOrderPropsValue::GetList(array(), $arFilter); if ($arP = $dbP->Fetch()) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGOPV_DUPLICATE_PROP_ID", array("#ID#" => $arFields["ORDER_PROPS_ID"], "#ORDER_ID#" => $arFields["ORDER_ID"])), "ERROR_DUPLICATE_PROP_ID"); return false; } } } return True; }
/** * @param \DDelivery\Order\DDeliveryOrder $order * @throws \Bitrix\Main\ArgumentException */ public function onFinishChange($order) { global $APPLICATION; $point = $order->getPoint(); if ($order->type == DDeliverySDK::TYPE_SELF) { $replaceData = array('%1' => $order->cityName, '%2' => $point['address'], '%3' => $point['delivery_company_name'], '%4' => $point['_id'], '%5' => $point['type'] == 1 ? 'Постомат' : 'ПВЗ'); $replaceData = $APPLICATION->ConvertCharsetArray($replaceData, 'UTF-8', SITE_CHARSET); $comment = GetMessage('DDELIVERY_ABOUT_SELF', $replaceData); } else { if ($order->type == DDeliverySDK::TYPE_COURIER) { $replaceData = array('%1' => $order->getFullAddress(), '%2' => $point['delivery_company_name']); $replaceData = $APPLICATION->ConvertCharsetArray($replaceData, 'UTF-8', SITE_CHARSET); $comment = GetMessage('DDELIVERY_ABOUT_COURIER', $replaceData); } else { $comment = 'error'; } } $orderId = $this->formData['bx_order_id']; $params = array('DD_ABOUT' => $comment, 'DD_LOCAL_ID' => $order->localId); $orderDeliveryTableData = OrderDeliveryTable::getList(array('filter' => array('ORDER_ID' => $orderId)))->fetch(); if ($orderDeliveryTableData) { OrderDeliveryTable::update($orderDeliveryTableData['ID'], array('PARAMS' => serialize($params))); } else { OrderDeliveryTable::add(array('ORDER_ID' => $orderId, 'PARAMS' => serialize($params))); } $order = CSaleOrder::GetByID($orderId); $arDeliveryResult = CSaleDeliveryHandler::CalculateFull('ddelivery', 'ddelivery:all', $order, CSaleLang::GetLangCurrency(SITE_ID), SITE_ID); if ($arDeliveryResult['RESULT'] == 'OK') { CSaleOrder::Update($orderId, array('PRICE_DELIVERY' => $arDeliveryResult['VALUE'])); } }
public function __construct($id) { if (is_array($id)) { $this->container = $id; $this->id = $id['ID']; } elseif ($id) { $this->id = $id; $this->container = \CSaleOrder::GetByID($id); } }
public static function OnSaleCancelOrderHandler($ID, $val) { if ( $val == 'Y' && self::$cancel ) { $arOrder = CSaleOrder::GetByID($ID); $resPaySystemAction = CSalePaySystemAction::GetList(array(), array('PAY_SYSTEM_ID'=>$arOrder['PAY_SYSTEM_ID'], 'PERSON_TYPE_ID'=>$arOrder['PERSON_TYPE_ID']), false, false, array()); $arPaySystemAction = $resPaySystemAction->GetNext(); $urlCancel = $_SERVER['DOCUMENT_ROOT'].$arPaySystemAction['ACTION_FILE'].'/cancel.php'; if (preg_match('/\/alfabank$/', $arPaySystemAction['ACTION_FILE']) && file_exists($urlCancel)) { include $urlCancel; } } }
/** * Обработчик события подтверждения оплаты товара */ function OnSalePayOrderHandler($id, $val) { $currentUserId = $GLOBALS['USER']->GetID(); //Идентификатор текущего пользователя, по идее администратор $idRatingGroup = 5; //группа акции $curTo = "UAH"; //тип гривневой цены $arOrder = CSaleOrder::GetByID($id); //информация о заказе $price = CCurrencyRates::ConvertCurrency(floatval($arOrder["SUM_PAID"]), $arOrder["CURRENCY"], $curTo); $price = intval(ceil($price)); //стоимость заказа $userId = intval($arOrder["USER_ID"]); //пользователь, который оплатил заказ $arUserData = CUser::GetByID($userId)->Fetch(); //Информация о пользователе $userGroups = CUser::GetUserGroup($userId); //ИД групп, к которым принадлежит пользователь //Если пользователя нет в акционной группе, и он совершил заказ более чем на 900 грн, то добавить его в группу if (!in_array($idRatingGroup, $userGroups)) { if ($price >= 900 && $price <= 4000 && $val === 'Y') { $userGroups[] = $idRatingGroup; CUser::SetUserGroup($userId, $userGroups); } } $points = $price * 5; $payedUser = new CUser(); //Если оплата подтверждается, то добавить баллы if ($val === 'Y' && in_array($idRatingGroup, $userGroups)) { $points = intval($arUserData['UF_ACTION_POINTS']) + $points; $payedUser->Update($userId, array("UF_ACTION_POINTS" => $points, "UF_DATE_LAST_BUY" => $arOrder["DATE_UPDATE_FORMAT"])); } else { if ($val === 'N') { $price = CCurrencyRates::ConvertCurrency(floatval($arOrder["PRICE"]), $arOrder["CURRENCY"], $curTo); $price = intval(ceil($price)); //вычитаем полную стоимость $points = $price * 5; if ($arUserData['UF_ACTION_POINTS'] >= $points) { $points = intval($arUserData['UF_ACTION_POINTS']) - $points; $payedUser->Update($userId, array("UF_ACTION_POINTS" => $points)); //Если очков стало меньше 4500, то исключаем пользователя из группы участников if (in_array($idRatingGroup, $userGroups) && $points < 4500) { $indexGroup = array_search($idRatingGroup, $userGroups); if (isset($userGroups[$indexGroup])) { unset($userGroups[$indexGroup]); CUser::SetUserGroup($userId, $userGroups); } } } } } unset($payedUser); }
public static function OnBeforeEventAddHandler(&$event, &$lid, &$arFields) { if ($event == "SALE_NEW_ORDER") { $orderId = $arFields['ORDER_ID']; $dbOrderProps = CSaleOrderPropsValue::GetList(array("CODE" => "ASC"), array("ORDER_ID" => $orderId, "CODE" => array("ORDER_PHONE", "ORDER_ADDRESS", "ORDER_ADDRESS_DETAILS", "ORDER_NAME"))); while ($arOrderProps = $dbOrderProps->GetNext()) { $arFields[$arOrderProps['CODE']] = $arOrderProps['~VALUE']; } $arFields["ORDER_DESCRIPTION"] = trim(CSaleOrder::GetByID($orderId)["USER_DESCRIPTION"]); } }
function Update($ID, $arFields, $bDateUpdate = true) { global $DB; $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET " . "\t" . $strUpdate . " "; if ($bDateUpdate) { $strSql .= ",\tDATE_UPDATE = " . $DB->GetNowFunction() . " "; } $strSql .= "WHERE ID = " . $ID . " "; $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($res) { CSaleOrder::AddOrderHistory($arOrderOldFields, $arFields); } unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_" . $ID]); foreach (GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if ($_SERVER["REQUEST_METHOD"] == "POST") { include GetLangFileName(dirname(__FILE__) . "/", "/result_rec.php"); $orderId = IntVal($_POST["orderId"]); $bCorrectPayment = True; $techMessage = ""; if (!($arOrder = CSaleOrder::GetByID($orderId))) { $bCorrectPayment = False; $techMessage = GetMessage("SALE_RBK_REC_ORDER"); } if ($bCorrectPayment) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); $eshopIdB = CSalePaySystemAction::GetParamValue("ESHOP_ID"); $recipientAmountB = number_format(CSalePaySystemAction::GetParamValue("SHOULD_PAY"), 2, '.', ''); $recipientCurrencyB = CSalePaySystemAction::GetParamValue("CURRENCY"); $secretKeyB = CSalePaySystemAction::GetParamValue("SECRET_KEY"); if ($recipientCurrencyB == "RUB") { $recipientCurrencyB = "RUR"; } $eshopId = trim($_POST["eshopId"]); $paymentId = trim($_POST["paymentId"]); $serviceName = trim($_POST["serviceName"]); $eshopAccount = trim($_POST["eshopAccount"]); $recipientAmount = trim($_POST["recipientAmount"]); $recipientCurrency = trim($_POST["recipientCurrency"]); $paymentStatus = trim($_POST["paymentStatus"]); $userName = trim($_POST["userName"]);
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if ($_SERVER["REQUEST_METHOD"] == "POST") { $bCorrectPayment = True; if (!($arOrder = CSaleOrder::GetByID(IntVal($_POST["pci_wmtid"])))) { $bCorrectPayment = False; } $CNST_PAYEE_PURSE = CSalePaySystemAction::GetParamValue("ACC_NUMBER"); $CNST_SECRET_KEY = CSalePaySystemAction::GetParamValue("CNST_SECRET_KEY"); if (strlen($CNST_SECRET_KEY) <= 0) { $bCorrectPayment = False; } if ($_POST["LMI_PREREQUEST"] == "1") { if (round($arOrder["PRICE"], 2) == round($_POST["LMI_PAYMENT_AMOUNT"], 2) && $CNST_PAYEE_PURSE == $_POST["LMI_PAYEE_PURSE"]) { $APPLICATION->RestartBuffer(); echo "YES"; die; } } else { $SERVER_NAME_tmp = ""; if (defined("SITE_SERVER_NAME")) { $SERVER_NAME_tmp = SITE_SERVER_NAME; } if (strlen($SERVER_NAME_tmp) <= 0) { $SERVER_NAME_tmp = COption::GetOptionString("main", "server_name", ""); } /* &purse=".$strPAYEE_PURSE;
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_GET["server_responce"]) && $_GET["server_responce"] == "Y" && !empty($_POST["cartId"])) { $bCorrect = True; if ($bCorrect && !($arOrder = CSaleOrder::GetByID(IntVal($_POST["cartId"])))) { $bCorrect = False; } if ($bCorrect) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); $strCallbackPassword = CSalePaySystemAction::GetParamValue("CALLBACK_PASSWORD"); if (strlen($strCallbackPassword) <= 0 || $_POST["callbackPW"] != $strCallbackPassword) { $bCorrect = False; } } if ($bCorrect && isset($_POST["testMode"]) && IntVal($_POST["testMode"]) > 0) { $bCorrect = False; } if ($bCorrect) { $arFields = array("PS_STATUS" => $_POST["transStatus"] == "Y" ? "Y" : "N", "PS_STATUS_CODE" => $_POST["transStatus"], "PS_STATUS_DESCRIPTION" => $_POST["rawAuthMessage"], "PS_STATUS_MESSAGE" => $_POST["transStatus"] == "Y" ? "The WorldPay ID for this transaction: " . $_POST["transId"] . ", Time of this transaction: " . Date("r", $_POST["transTime"]) : "", "PS_SUM" => $_POST["authAmount"], "PS_CURRENCY" => $_POST["authCurrency"], "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))), "USER_ID" => $arOrder["USER_ID"]); if ($arOrder["CURRENCY"] == $_POST["authCurrency"] && $arOrder["PRICE"] == $_POST["authAmount"]) { CSaleOrder::PayOrder($arOrder["ID"], "Y"); } CSaleOrder::Update($arOrder["ID"], $arFields); } }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $inv_id = IntVal($_REQUEST["inv_id"]); if (IntVal($inv_id) > 0) { $bCorrectPayment = True; $inv_id = IntVal($_REQUEST["inv_id"]); $out_summ = $_REQUEST["OutSum"]; $crc = $_REQUEST["SignatureValue"]; if (!($arOrder = CSaleOrder::GetByID(IntVal($inv_id)))) { $bCorrectPayment = False; } if ($bCorrectPayment) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); } $mrh_pass2 = CSalePaySystemAction::GetParamValue("ShopPassword2"); $strCheck = md5($out_summ . ":" . $inv_id . ":" . $mrh_pass2); if ($bCorrectPayment && strtoupper($CHECKSUM) != strtoupper($strCheck)) { $bCorrectPayment = False; } if ($bCorrectPayment) { $arFields = array("PS_STATUS" => "Y", "PS_STATUS_CODE" => "-", "PS_STATUS_DESCRIPTION" => $strPS_STATUS_DESCRIPTION, "PS_STATUS_MESSAGE" => $strPS_STATUS_MESSAGE, "PS_SUM" => $out_summ, "PS_CURRENCY" => "", "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)))); // You can comment this code if you want PAYED flag not to be set automatically if ($arOrder["PRICE"] == $out_summ) { CSaleOrder::PayOrder($arOrder["ID"], "Y"); } if (CSaleOrder::Update($arOrder["ID"], $arFields)) { echo "OK"; }
function OnSaleBeforeCancelOrderHandler($orderId, $value){ if( (CModule::IncludeModule("main")) && (CModule::IncludeModule("iblock")) && (CModule::IncludeModule("catalog")) && (CModule::IncludeModule("sale")) ){ mail('*****@*****.**', 'До отмены id заказа', $orderId); if(isset($orderId)&&(is_numeric($orderId))){ mail('*****@*****.**', ' в условии до отмены id заказа', $orderId); $ar_order = array(); $ar_order=CSaleOrder::GetByID($orderId); if($ar_order){ if(($ar_order['STATUS_ID']=='B')&&($ar_order['CANCELED']=='N')){ $dbBasketItems = CSaleBasket::GetList( array("NAME" => "ASC", "ID" => "ASC"), array( "LID" => SITE_ID, "ORDER_ID" => $orderId ), false, false, array("PRODUCT_ID") ); while ($arBasketItems = $dbBasketItems->GetNext()) { $PRODUCT['ID']=$arBasketItems['PRODUCT_ID']; } $ar_res_product=CCatalogProduct::GetByID($PRODUCT['ID']); $arFields_quant = array( 'QUANTITY' => $ar_res_product['QUANTITY']+1 ); CCatalogProduct::Update($PRODUCT['ID'], $arFields_quant); } } } } }
$amount = $keyarray['mc_gross']; echo "<p><h3>" . GetMessage("PPL_T1") . "</h3></p>"; echo "<b>" . GetMessage("PPL_T2") . "</b><br>\n"; echo "<li>" . GetMessage("PPL_T3") . ": {$firstname} {$lastname}</li>\n"; echo "<li>" . GetMessage("PPL_T4") . ": {$itemname}</li>\n"; echo "<li>" . GetMessage("PPL_T5") . ": {$amount}</li>\n"; } elseif (strcmp($res, "VERIFIED") == 0) { $strPS_STATUS_MESSAGE = ""; $strPS_STATUS_MESSAGE .= GetMessage("PPL_T3") . ": " . $_POST["first_name"] . " " . $_POST["last_name"] . "; "; $strPS_STATUS_MESSAGE .= "Email: " . $_POST["payer_email"] . "; "; $strPS_STATUS_MESSAGE .= GetMessage("PPL_T4") . ": " . $_POST["item_name"] . "; "; $strPS_STATUS_MESSAGE .= GetMessage("PPL_T5") . ": " . $_POST["mc_gross"] . "; "; $strPS_STATUS_DESCRIPTION = ""; $strPS_STATUS_DESCRIPTION .= "Payment status - " . $_POST["payment_status"] . "; "; $strPS_STATUS_DESCRIPTION .= "Payment sate - " . $_POST["payment_date"] . "; "; $arOrder = CSaleOrder::GetByID($_POST["custom"]); $arFields = array("PS_STATUS" => "Y", "PS_STATUS_CODE" => "-", "PS_STATUS_DESCRIPTION" => $strPS_STATUS_DESCRIPTION, "PS_STATUS_MESSAGE" => $strPS_STATUS_MESSAGE, "PS_SUM" => $_POST["mc_gross"], "PS_CURRENCY" => $_POST["mc_currency"], "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))), "USER_ID" => $arOrder["USER_ID"]); $arFields["PAY_VOUCHER_NUM"] = $tx; $arFields["PAY_VOUCHER_DATE"] = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))); if (IntVal($arOrder["PRICE"]) == IntVal($_POST["mc_gross"]) && $_POST["receiver_email"] == CSalePaySystemAction::GetParamValue("BUSINESS") && $_POST["payment_status"] == "Completed" && strlen($arOrder["PAY_VOUCHER_NUM"]) <= 0 && $arOrder["PAY_VOUCHER_NUM"] != $tx) { CSaleOrder::PayOrder($arOrder["ID"], "Y"); } if (strlen($arOrder["PAY_VOUCHER_NUM"]) <= 0 || $arOrder["PAY_VOUCHER_NUM"] != $tx) { CSaleOrder::Update($arOrder["ID"], $arFields); } } else { echo "<p>" . GetMessage("PPL_I1") . "</p>"; } } else { echo "<p>" . GetMessage("PPL_I2") . "</p>"; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } include GetLangFileName(dirname(__FILE__) . "/", "/ubrir.php"); include dirname(__FILE__) . "/sdk/ubrir_autoload.php"; include dirname(__FILE__) . "/view/style.php"; $shouldPay = strlen(CSalePaySystemAction::GetParamValue("SHOULD_PAY")) > 0 ? CSalePaySystemAction::GetParamValue("SHOULD_PAY") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]; $orderID = strlen(CSalePaySystemAction::GetParamValue("ORDER_ID")) > 0 ? CSalePaySystemAction::GetParamValue("ORDER_ID") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]; $arOrder = CSaleOrder::GetByID(CSalePaySystemAction::GetParamValue("ORDER_ID")); // получаем текущий заказ if (!isset($_GET['status'])) { /* ---------------- если операция еще не совершена -------------- */ $readyToPay = false; // возможность платежа $bankHandler = new Ubrir(array('shopId' => CSalePaySystemAction::GetParamValue("ID"), 'order_id' => CSalePaySystemAction::GetParamValue("ORDER_ID"), 'sert' => CSalePaySystemAction::GetParamValue("SERT"), 'amount' => CSalePaySystemAction::GetParamValue("SHOULD_PAY"))); $response_order = $bankHandler->prepare_to_pay(); // что вернул банк include dirname(__FILE__) . "/include/twpg_db.php"; if ($readyToPay and !empty($response_order)) { $twpg_url = $response_order->URL[0] . '?orderid=' . $response_order->OrderID[0] . '&sessionid=' . $response_order->SessionID[0]; echo '<INPUT TYPE="button" value="Оплатить Visa" onclick="document.location = \'' . $twpg_url . '\'">'; } if (CSalePaySystemAction::GetParamValue("TWO") == 'Y') { // если активны два процессинга, то работаем еще и с Uniteller echo ' <INPUT TYPE="button" onclick="document.forms.uniteller.submit()" value="Оплатить MasterCard">'; include dirname(__FILE__) . "/include/uni_form.php"; } } else { $status = htmlspecialchars(stripslashes($_GET['status'])); switch ($status) {
/** * Method is called to reserve all products in the order basket * * @param int $orderID * @param bool $bUndoReservation * @return mixed array */ function OrderReservation($orderID, $bUndoReservation = false) { global $APPLICATION; if (defined("SALE_DEBUG") && SALE_DEBUG) { if ($bUndoReservation) { CSaleHelper::WriteToLog("OrderReservation: undo started", array("orderId" => $orderID), "OR1"); } else { CSaleHelper::WriteToLog("OrderReservation: started", array("orderId" => $orderID), "OR1"); } } $orderID = (int) $orderID; if ($orderID <= 0) { return false; } $arResult = array(); $arSetData = array(); $arOrder = CSaleOrder::GetByID($orderID); if ($arOrder) { $obStackExp = $APPLICATION->GetException(); if (is_object($obStackExp)) { $APPLICATION->ResetException(); } $dbBasketList = CSaleBasket::GetList(array(), array("ORDER_ID" => $orderID)); while ($arBasket = $dbBasketList->Fetch()) { if ($bUndoReservation && $arBasket["RESERVED"] == "N" && COption::GetOptionString("catalog", "enable_reservation") != "N") { continue; } if (CSaleBasketHelper::isSetParent($arBasket)) { continue; } if (CSaleBasketHelper::isSetItem($arBasket)) { $arSetData[$arBasket["PRODUCT_ID"]] = $arBasket["SET_PARENT_ID"]; } if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Reserving product #" . $arBasket["PRODUCT_ID"], array(), "OR2"); } /** @var $productProvider IBXSaleProductProvider */ if ($productProvider = CSaleBasket::GetProductProvider($arBasket)) { if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Call ::ReserveProduct", array("PRODUCT_ID" => $arBasket["PRODUCT_ID"], "QUANTITY_ADD" => $arBasket["QUANTITY"], "UNDO_RESERVATION" => $bUndoReservation ? "Y" : "N"), "OR3"); } if ($arOrder["DEDUCTED"] == "Y") { $res = array("RESULT" => true, "QUANTITY_RESERVED" => 0); if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Order already deducted. Product won't be reserved.", array(), "OR5"); } } else { $res = $productProvider::ReserveProduct(array("PRODUCT_ID" => $arBasket["PRODUCT_ID"], "QUANTITY_ADD" => $arBasket["QUANTITY"], "UNDO_RESERVATION" => $bUndoReservation ? "Y" : "N")); } if ($res["RESULT"]) { $arResult[$arBasket["PRODUCT_ID"]] = $res["QUANTITY_RESERVED"]; $arUpdateFields = array("RESERVED" => $bUndoReservation ? "N" : "Y"); if (!$bUndoReservation && isset($res["QUANTITY_NOT_RESERVED"])) { $arUpdateFields["RESERVE_QUANTITY"] = $res["QUANTITY_NOT_RESERVED"]; } if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Product #" . $arBasket["PRODUCT_ID"] . " reserved successfully", array("arUpdateFields" => $arUpdateFields), "OR4"); } if (!isset($res["QUANTITY_RESERVED"]) || isset($res["QUANTITY_RESERVED"]) && $res["QUANTITY_RESERVED"] != 0) { CSaleBasket::Update($arBasket["ID"], $arUpdateFields); } } else { if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Product #" . $arBasket["PRODUCT_ID"] . " reservation error", array(), "OR4"); } CSaleBasket::Update($arBasket["ID"], array("RESERVED" => "N")); } if ($ex = $APPLICATION->GetException()) { if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("Call ::ReserveProduct - Exception", array("ID" => $arBasket["PRODUCT_ID"], "MESSAGE" => $ex->GetString(), "CODE" => $ex->GetID()), "OR4"); } $arResult["ERROR"][$arBasket["PRODUCT_ID"]]["ID"] = $arBasket["PRODUCT_ID"]; $arResult["ERROR"][$arBasket["PRODUCT_ID"]]["MESSAGE"] = $ex->GetString(); $arResult["ERROR"][$arBasket["PRODUCT_ID"]]["CODE"] = $ex->GetID(); } } } if (is_object($obStackExp)) { $APPLICATION->ResetException(); $APPLICATION->ThrowException($obStackExp); } } if (defined("SALE_DEBUG") && SALE_DEBUG) { CSaleHelper::WriteToLog("OrderReservation result", array("arResult" => $arResult), "OR6"); } return $arResult; }
protected function sendEmailNewOrder($newOrderId, $buyer) { global $DB; $strOrderList = ""; $baseLangCurrency = CSaleLang::GetLangCurrency($this->siteId); $orderNew = CSaleOrder::GetByID($newOrderId); $orderNew["BASKET_ITEMS"] = array(); $userEmail = $buyer["email"]; $fio = $buyer["last-name"] . (isset($buyer["first-name"]) ? $buyer["first-name"] : ""); $dbBasketTmp = CSaleBasket::GetList(array("SET_PARENT_ID" => "DESC", "TYPE" => "DESC", "NAME" => "ASC"), array("ORDER_ID" => $newOrderId), false, false, array("ID", "PRICE", "QUANTITY", "NAME")); while ($arBasketTmp = $dbBasketTmp->GetNext()) { $orderNew["BASKET_ITEMS"][] = $arBasketTmp; } $orderNew["BASKET_ITEMS"] = getMeasures($orderNew["BASKET_ITEMS"]); foreach ($orderNew["BASKET_ITEMS"] as $val) { if (CSaleBasketHelper::isSetItem($val)) { continue; } $measure = isset($val["MEASURE_TEXT"]) ? $val["MEASURE_TEXT"] : GetMessage("SALE_YMH_SHT"); $strOrderList .= $val["NAME"] . " - " . $val["QUANTITY"] . " " . $measure . ": " . SaleFormatCurrency($val["PRICE"], $baseLangCurrency); $strOrderList .= "\n"; } //send mail $arFields = array("ORDER_ID" => $orderNew["ACCOUNT_NUMBER"], "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $this->siteId))), "ORDER_USER" => $fio, "PRICE" => SaleFormatCurrency($orderNew["PRICE"], $baseLangCurrency), "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER['SERVER_NAME']), "EMAIL" => array("PAYER_NAME" => $fio, "USER_EMAIL" => $userEmail), "ORDER_LIST" => $strOrderList, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER['SERVER_NAME']), "DELIVERY_PRICE" => $orderNew["DELIVERY_PRICE"]); $eventName = "SALE_NEW_ORDER"; $bSend = true; foreach (GetModuleEvents("sale", "OnOrderNewSendEmail", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($newOrderId, &$eventName, &$arFields)) === false) { $bSend = false; } } if ($bSend) { $event = new CEvent(); $event->Send($eventName, $this->siteId, $arFields, "N"); } CSaleMobileOrderPush::send("ORDER_CREATED", array("ORDER" => $orderNew)); }
function getInput() { $mname = dirname("../.."); $task_ubrir = JRequest::getVar('task_ubrir'); $shoporderidforstatus = JRequest::getVar('shoporderidforstatus'); $VALUE2_ID_1 = JRequest::getVar('VALUE2_ID_1'); $VALUE2_SERT_1 = JRequest::getVar('VALUE2_SERT_1'); $VALUE2_UNI_LOGIN_1 = JRequest::getVar('VALUE2_UNI_LOGIN_1'); $VALUE2_UNI_EMP_1 = JRequest::getVar('VALUE2_UNI_EMP_1'); if (!empty($task_ubrir)) { switch ($task_ubrir) { case '1': if (!empty($shoporderidforstatus) and !empty($VALUE2_ID_1) and !empty($VALUE2_SERT_1)) { $order_id = $shoporderidforstatus; $conf = new JConfig(); $db_conn = new mysqli($conf->host, $conf->user, $conf->password, $conf->db); if (mysqli_connect_errno()) { printf("Ошибка доступа к БД: %s\n", mysqli_connect_error()); exit; } $answer = $db_conn->query('SELECT * FROM ' . $conf->dbprefix . 'virtuemart_payment_plg_' . $mname . ' WHERE virtuemart_order_id="' . $order_id . '"')->fetch_assoc(); if (!empty($arOrder['PS_STATUS_MESSAGE'])) { $bankHandler = new Ubrir(array('shopId' => $VALUE2_ID_1, 'order_id' => $order_id, 'sert' => $VALUE2_SERT_1, 'twpg_order_id' => $answer['order_number'], 'twpg_session_id' => $answer['session_id'])); $out = '<div class="ubr_s">Статус заказа - ' . $bankHandler->check_status() . '</div>'; } else { $out = '<div class="ubr_f">Получить статус данного заказа невозможно. Либо его не существует, либо он был оплачен через Uniteller</div>'; } } break; case '2': if (!empty($shoporderidforstatus) and !empty($VALUE2_ID_1) and !empty($VALUE2_SERT_1)) { $order_id = $shoporderidforstatus * 1; $arOrder = CSaleOrder::GetByID($order_id); if (!empty($arOrder['PS_STATUS_MESSAGE'])) { $bankHandler = new Ubrir(array('shopId' => $VALUE2_ID_1, 'order_id' => $order_id, 'sert' => $VALUE2_SERT_1, 'twpg_order_id' => $arOrder['PS_STATUS_DESCRIPTION'], 'twpg_session_id' => $arOrder['PS_STATUS_MESSAGE'])); $out = $bankHandler->detailed_status(); } else { $out = '<div class="ubr_f">Получить детализацию данного заказа невозможно. Либо его не существует, либо он был оплачен через Uniteller</div>'; } } break; case '3': if (!empty($shoporderidforstatus) and !empty($VALUE2_ID_1) and !empty($VALUE2_SERT_1)) { $order_id = $shoporderidforstatus * 1; $arOrder = CSaleOrder::GetByID($order_id); if ($arOrder['PAYED'] == 'Y') { if (!empty($arOrder['PS_STATUS_MESSAGE'])) { $bankHandler = new Ubrir(array('shopId' => $VALUE2_ID_1, 'order_id' => $order_id, 'sert' => $VALUE2_SERT_1, 'twpg_order_id' => $arOrder['PS_STATUS_DESCRIPTION'], 'twpg_session_id' => $arOrder['PS_STATUS_MESSAGE'])); $res = $bankHandler->reverse_order(); if ($res == 'OK') { $out = '<div class="ubr_s">Оплата успешно отменена</div>'; CSaleOrder::Update($order_id, array("PAYED" => "N")); CSaleOrder::StatusOrder($order_id, "N"); } else { $out = $res; } } else { $out = '<div class="ubr_f">Получить реверс данного заказа невозможно. Он был оплачен через Uniteller</div>'; } } else { $out = '<div class="ubr_f">Получить реверс данного заказа невозможно, он не был оплачен, либо его не существует</div>'; } } break; case '4': if (!empty($VALUE2_ID_1) and !empty($VALUE2_SERT_1)) { $bankHandler = new Ubrir(array('shopId' => $VALUE2_ID_1, 'sert' => $VALUE2_SERT_1)); $out = $bankHandler->reconcile(); } break; case '5': if (!empty($VALUE2_ID_1) and !empty($VALUE2_SERT_1)) { $bankHandler = new Ubrir(array('shopId' => $VALUE2_ID_1, 'sert' => $VALUE2_SERT_1)); $out = $bankHandler->extract_journal(); } break; case '6': if (!empty($VALUE2_UNI_LOGIN_1) and !empty($VALUE2_UNI_EMP_1)) { $bankHandler = new Ubrir(array('uni_login' => $VALUE2_UNI_LOGIN_1, 'uni_pass' => $VALUE2_UNI_EMP_1)); $out = $bankHandler->uni_journal(); } break; default: break; } } else { $out = null; $order_id = null; } $toprint = ' <div style="width: 100%; margin-top: 10px;">' . $out . '</div> <div style="margin: 20px 0 20px 0; text-align: center; padding: 20px; width: 415px; border: 1px dashed #999;"> <h3 style="text-align: center; padding: 0 0 20px 0; margin: 0;">Получить детальную информацию:</h3> <div style="margin: 0 auto; text-align: center; padding: 5px; width: 200px; border: 1px dashed #999;">Номер заказа: <br> <input style="margin: 5px;" type="text" name="shoporderidforstatus" id="shoporderidforstatus" value="' . $order_id . '" placeholder="№ заказа" size="8"> <input style="margin: 5px;" type="hidden" name="task_ubrir" id="task_ubrir" value=""> <input class="twpginput" type="button" onclick="jQuery(\'#task_ubrir\').val(1); submit();" id="statusbutton" value="Запросить статус"> <input class="twpginput" type="button" onclick="jQuery(\'#task_ubrir\').val(2); submit();" id="detailstatusbutton" value="Детальная информация"> <input class="twpginput" type="button" onclick="jQuery(\'#task_ubrir\').val(3); submit();" id="reversbutton" value="Вернуть деньги"><br> </div> <input class="twpgbutton" type="button" onclick="jQuery(\'#task_ubrir\').val(4); submit();" id="recresultbutton" value="Сверка итогов"> <input class="twpgbutton" type="button" onclick="jQuery(\'#task_ubrir\').val(5); submit();" id="journalbutton" value="Журнал операций TWPG"> <input class="twpgbutton" type="button" onclick="jQuery(\'#task_ubrir\').val(6); submit();" id="unijournalbutton" value="Журнал операций Uniteller"> </div> '; /* toprint = ' <div style="width: 100%; margin-top: 10px;">'.$out.'</div> <div style="margin: 20px 0 20px 0; text-align: center; padding: 20px; width: 415px; border: 1px dashed #999;"> <h3 style="text-align: center; padding: 0 0 20px 0; margin: 0;">Получить детальную информацию:</h3> <div style="margin: 0 auto; text-align: center; padding: 5px; width: 200px; border: 1px dashed #999;"><form action="" method="post">Номер заказа: <br> <input style="margin: 5px;" type="text" name="shoporderidforstatus" id="shoporderidforstatus" value="'.$order_id.'" placeholder="№ заказа" size="8"> <input style="margin: 5px;" type="hidden" name="task_ubrir" id="task_ubrir" value=""> <input class="twpginput" type="button" onclick="document.getElementById(\'task_ubrir\').value = 1; submit();" id="statusbutton" value="Запросить статус"> <input class="twpginput" type="button" onclick="document.getElementById(\'task_ubrir\').value = 2; submit();" id="detailstatusbutton" value="Детальная информация"> <input class="twpginput" type="button" onclick="document.getElementById(\'task_ubrir\').value = 3; submit();" id="reversbutton" value="Вернуть деньги"><br> </div> <input class="twpgbutton" type="button" onclick="document.getElementById(\'task_ubrir\').value = 4; submit();" id="recresultbutton" value="Сверка итогов"> <input class="twpgbutton" type="button" onclick="document.getElementById(\'task_ubrir\').value = 5; submit();" id="journalbutton" value="Журнал операций TWPG"> <input class="twpgbutton" type="button" onclick="document.getElementById(\'task_ubrir\').value = 6; submit();" id="unijournalbutton" value="Журнал операций Uniteller"></form> </div> '; */ return $toprint; }
$arFields["STAT_GID"] = CStatistic::GetEventParam(); } $affiliateID = CSaleAffiliate::GetAffiliate(); if ($affiliateID > 0) { $dbAffiliat = CSaleAffiliate::GetList(array(), array("SITE_ID" => SITE_ID, "ID" => $affiliateID)); $arAffiliates = $dbAffiliat->Fetch(); if (count($arAffiliates) > 1) { $arFields["AFFILIATE_ID"] = $affiliateID; } } else { $arFields["AFFILIATE_ID"] = false; } $arResult["ORDER_ID"] = CSaleOrder::DoSaveOrder($arOrderDat, $arFields, 0, $arResult["ERROR"]); $arResult["ORDER_ID"] = IntVal($arResult["ORDER_ID"]); if ($arResult["ORDER_ID"] > 0 && empty($arResult["ERROR"])) { $arOrder = CSaleOrder::GetByID($arResult["ORDER_ID"]); CSaleBasket::OrderBasket($arResult["ORDER_ID"], CSaleBasket::GetBasketUserID(), SITE_ID, false); $arResult["ACCOUNT_NUMBER"] = $arResult["ORDER_ID"] <= 0 ? $arResult["ORDER_ID"] : $arOrder["ACCOUNT_NUMBER"]; } $withdrawSum = 0.0; if (empty($arResult["ERROR"])) { if ($arResult["PAY_FROM_ACCOUNT"] == "Y" && $arUserResult["PAY_CURRENT_ACCOUNT"] == "Y" && ($arParams["ONLY_FULL_PAY_FROM_ACCOUNT"] == "Y" && DoubleVal($arResult["USER_ACCOUNT"]["CURRENT_BUDGET"]) >= DoubleVal($orderTotalSum) || $arParams["ONLY_FULL_PAY_FROM_ACCOUNT"] != "Y")) { $withdrawSum = CSaleUserAccount::Withdraw($USER->GetID(), $orderTotalSum, $arResult["BASE_LANG_CURRENCY"], $arResult["ORDER_ID"]); if ($withdrawSum > 0) { $arFields = array("SUM_PAID" => $withdrawSum, "USER_ID" => $USER->GetID()); CSaleOrder::Update($arResult["ORDER_ID"], $arFields); if ($withdrawSum == $orderTotalSum) { CSaleOrder::PayOrder($arResult["ORDER_ID"], "Y", False, False); } } }
include('futubank_core.php'); $sVer = ($GLOBALS['USER']->CanDoOperation('view_other_settings')? " ".SM_VERSION : ""); $cms_info = 'Bitrix ' . $sVer; $plugin_version = 'Futupayments Bitrix plugin v.' . (defined('FUTUBANK_VERSION') ? FUTUBANK_VERSION : 'Unknown'); $ff = new FutubankForm( CSalePaySystemAction::GetParamValue('MERCHANT_ID'), CSalePaySystemAction::GetParamValue('SECRET_KEY'), CSalePaySystemAction::GetParamValue('IS_TEST') == 'Y', $plugin_version, $cms_info ); $order_id = IntVal($GLOBALS['SALE_INPUT_PARAMS']['ORDER']['ID']); $arOrder = CSaleOrder::GetByID($order_id); $currency = CSalePaySystemAction::GetParamValue('CURRENCY'); if ($currency == 'RUR') { $currency = 'RUB'; } $cancel_url = 'http://'.SITE_SERVER_NAME.$APPLICATION->GetCurUri(); $meta = "$arOrder[PAY_SYSTEM_ID]:$arOrder[PERSON_TYPE_ID]"; // dirty hack $form = $ff->compose( CSalePaySystemAction::GetParamValue('AMOUNT'), $currency, $order_id, CSalePaySystemAction::GetParamValue('CLIENT_EMAIL'), CSalePaySystemAction::GetParamValue('CLIENT_NAME'),
function nodeHandler(CDataXML $value) { $value = $value->GetArray(); $value = $value[GetMessage("CC_BSC1_DOCUMENT")]; if ($value["#"][GetMessage("CC_BSC1_OPERATION")][0]["#"] == GetMessage("CC_BSC1_ORDER")) { $orderId = IntVal($value["#"][GetMessage("CC_BSC1_NUMBER")][0]["#"]); $arOrder = array(); $arItem = array(); $arOrder["AMOUNT"] = $value["#"][GetMessage("CC_BSC1_SUMM")][0]["#"]; $arOrder["AMOUNT"] = str_replace($SumFormat, ".", $arOrder["AMOUNT"]); $arOrder["COMMENT"] = $value["#"][GetMessage("CC_BSC1_COMMENT")][0]["#"]; foreach ($value["#"][GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")] as $val) { $arOrder["TRAITS"][$val["#"][GetMessage("CC_BSC1_NAME")][0]["#"]] = $val["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; } $taxValue = 0; $taxValueTmp = 0; $taxName = ""; if (is_array($value["#"][GetMessage("CC_BSC1_ITEMS")][0]["#"][GetMessage("CC_BSC1_ITEM")])) { foreach ($value["#"][GetMessage("CC_BSC1_ITEMS")][0]["#"][GetMessage("CC_BSC1_ITEM")] as $val) { $val = $val["#"]; $productID = $val[GetMessage("CC_BSC1_ID")][0]["#"]; $bGood = false; $discountPrice = ""; $priceAll = str_replace($SumFormat, ".", $val[GetMessage("CC_BSC1_SUMM")][0]["#"]); $priceone = str_replace($SumFormat, ".", $val[GetMessage("CC_BSC1_PRICE_PER_UNIT")][0]["#"]); $quantity = str_replace($QuantityFormat, ".", $val[GetMessage("CC_BSC1_QUANTITY")][0]["#"]); $price = $priceAll / $quantity; if ($priceone != $price) { $discountPrice = $priceone - $price; } //DISCOUNTS! $arItem[$productID] = array("NAME" => $val[GetMessage("CC_BSC1_NAME")][0]["#"], "PRICE" => $price, "QUANTITY" => $quantity, "DISCOUNT_PRICE" => $discountPrice); if (is_array($val[GetMessage("CC_BSC1_PROPS_ITEMS")][0]["#"][GetMessage("CC_BSC1_PROP_ITEM")])) { foreach ($val[GetMessage("CC_BSC1_PROPS_ITEMS")][0]["#"][GetMessage("CC_BSC1_PROP_ITEM")] as $val1) { $arItem[$productID]["ATTRIBUTES"][$val1["#"][GetMessage("CC_BSC1_NAME")][0]["#"]] = $val1["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; } } if (is_array($val[GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")])) { foreach ($val[GetMessage("CC_BSC1_REK_VALUES")][0]["#"][GetMessage("CC_BSC1_REK_VALUE")] as $val1) { if ($val1["#"][GetMessage("CC_BSC1_NAME")][0]["#"] == GetMessage("CC_BSC1_ITEM_TYPE")) { $arItem[$productID]["TYPE"] = $val1["#"][GetMessage("CC_BSC1_VALUE")][0]["#"]; } } } if (strlen($value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_NAME")][0]["#"]) > 0) { $taxValueTmp = $val[GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_TAX_VALUE")][0]["#"]; $arItem[$productID]["VAT_RATE"] = $taxValueTmp / 100; if (IntVal($taxValueTmp) > IntVal($taxValue)) { $taxName = $val[GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_NAME")][0]["#"]; $taxValue = $taxValueTmp; } } } } if (IntVal($taxValue) > 0) { $price = str_replace($SumFormat, ".", $value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_SUMM")][0]["#"]); $arOrder["TAX"] = array("NAME" => $taxName, "VALUE" => $taxValue, "IS_IN_PRICE" => $value["#"][GetMessage("CC_BSC1_TAXES")][0]["#"][GetMessage("CC_BSC1_TAX")][0]["#"][GetMessage("CC_BSC1_IN_PRICE")][0]["#"] == "true" ? "Y" : "N", "VALUE_MONEY" => $price); } $arOrder["items"] = $arItem; $v = $arOrder; if ($orderInfo = CSaleOrder::GetByID($orderId)) { if ($orderInfo["PAYED"] != "Y" && $orderInfo["ALLOW_DELIVERY"] != "Y" && $orderInfo["STATUS_ID"] != "F") { $dbOrderTax = CSaleOrderTax::GetList(array(), array("ORDER_ID" => $orderId), false, false, array("ID", "TAX_NAME", "VALUE", "VALUE_MONEY", "CODE", "IS_IN_PRICE")); $bTaxFound = false; if ($arOrderTax = $dbOrderTax->Fetch()) { $bTaxFound = true; if (IntVal($arOrderTax["VALUE_MONEY"]) != IntVal($v["TAX"]["VALUE_MONEY"]) || IntVal($arOrderTax["VALUE"]) != IntVal($v["TAX"]["VALUE"]) || $arOrderTax["IS_IN_PRICE"] != $v["TAX"]["IS_IN_PRICE"]) { if (IntVal($v["TAX"]["VALUE"]) > 0) { $arFields = array("TAX_NAME" => $v["TAX"]["NAME"], "ORDER_ID" => $orderId, "VALUE" => $v["TAX"]["VALUE"], "IS_PERCENT" => "Y", "IS_IN_PRICE" => $v["TAX"]["IS_IN_PRICE"], "VALUE_MONEY" => $v["TAX"]["VALUE_MONEY"], "CODE" => "VAT1C", "APPLY_ORDER" => "100"); CSaleOrderTax::Update($arOrderTax["ID"], $arFields); CSaleOrder::Update($orderId, array("TAX_VALUE" => $v["TAX"]["VALUE_MONEY"])); } else { CSaleOrderTax::Delete($arOrderTax["ID"]); CSaleOrder::Update($orderId, array("TAX_VALUE" => 0)); } } } if (!$bTaxFound) { if (IntVal($v["TAX"]["VALUE"]) > 0) { $arFields = array("TAX_NAME" => $v["TAX"]["NAME"], "ORDER_ID" => $orderId, "VALUE" => $v["TAX"]["VALUE"], "IS_PERCENT" => "Y", "IS_IN_PRICE" => $v["TAX"]["IS_IN_PRICE"], "VALUE_MONEY" => $v["TAX"]["VALUE_MONEY"]); CSaleOrderTax::Add($arFields); CSaleOrder::Update($orderId, array("TAX_VALUE" => $v["TAX"]["VALUE_MONEY"])); } } $dbBasket = CSaleBasket::GetList(array("NAME" => "ASC"), array("ORDER_ID" => $orderId)); $basketSum = 0; while ($arBasket = $dbBasket->Fetch()) { $arFields = array(); if (!empty($v["items"][$arBasket["PRODUCT_XML_ID"]])) { if ($arBasket["QUANTITY"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"]) { $arFields["QUANTITY"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"]; } if ($arBasket["PRICE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"]) { $arFields["PRICE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"]; } if ($arBasket["VAT_RATE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"]) { $arFields["VAT_RATE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"]; } if ($arBasket["DISCOUNT_PRICE"] != $v["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"]) { $arFields["DISCOUNT_PRICE"] = $v["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"]; } if (count($arFields) > 0) { CSaleBasket::Update($arBasket["ID"], $arFields); } $v["items"][$arBasket["PRODUCT_XML_ID"]]["CHECKED"] = "Y"; } else { CSaleBasket::Delete($arBasket["ID"]); } } foreach ($v["items"] as $itemID => $arItem) { if ($arItem["CHECKED"] != "Y") { if ($arItem["TYPE"] == GetMessage("CC_BSC1_ITEM")) { CModule::IncludeModule("iblock"); $dbIBlockElement = CIBlockElement::GetList(array(), array("XML_ID" => $itemID, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y"), false, false, array("ID", "IBLOCK_ID", "XML_ID", "NAME", "DETAIL_PAGE_URL")); if ($arIBlockElement = $dbIBlockElement->GetNext()) { $dbIBlock = CIBlock::GetList(array(), array("ID" => $arIBlockElement["IBLOCK_ID"])); if ($arIBlock = $dbIBlock->Fetch()) { $arProps[] = array("NAME" => "Catalog XML_ID", "CODE" => "CATALOG.XML_ID", "VALUE" => $arIBlock["XML_ID"]); } $arProps[] = array("NAME" => "Product XML_ID", "CODE" => "PRODUCT.XML_ID", "VALUE" => $arIBlockElement["XML_ID"]); $arProduct = CCatalogProduct::GetByID($arIBlockElement["ID"]); $arFields = array("ORDER_ID" => $orderId, "PRODUCT_ID" => $arIBlockElement["ID"], "PRICE" => $arItem["PRICE"], "CURRENCY" => $orderInfo["CURRENCY"], "WEIGHT" => $arProduct["WEIGHT"], "QUANTITY" => $arItem["QUANTITY"], "LID" => $orderInfo["LID"], "DELAY" => "N", "CAN_BUY" => "Y", "NAME" => $arIBlockElement["~NAME"], "CALLBACK_FUNC" => "CatalogBasketCallback", "MODULE" => "catalog", "NOTES" => $arProduct["CATALOG_GROUP_NAME"], "ORDER_CALLBACK_FUNC" => "CatalogBasketOrderCallback", "CANCEL_CALLBACK_FUNC" => "CatalogBasketCancelCallback", "PAY_CALLBACK_FUNC" => "CatalogPayOrderCallback", "DETAIL_PAGE_URL" => $arIBlockElement["DETAIL_PAGE_URL"], "CATALOG_XML_ID" => $arIBlock["XML_ID"], "PRODUCT_XML_ID" => $arIBlockElement["XML_ID"], "IGNORE_CALLBACK_FUNC" => "Y", "VAT_RATE" => $arItem["VAT_RATE"]); CSaleBasket::Add($arFields); } else { $this->strError .= "\n" . GetMessage("CC_BSC1_PRODUCT_NOT_FOUND") . $orderId . " - [" . $itemID . "] " . $arItem["NAME"]; } } elseif ($arItem["TYPE"] == GetMessage("CC_BSC1_SERVICE")) { if (IntVal($arItem["PRICE"]) != IntVal($orderInfo["PRICE_DELIVERY"])) { CSaleOrder::Update($orderId, array("PRICE_DELIVERY" => $arItem["PRICE"])); } } } } $arOrderFields = array(); if ($v["AMOUNT"] != $orderInfo["PRICE"]) { $arOrderFields = array("PRICE" => $v["AMOUNT"]); } if (DoubleVal($orderInfo["DISCOUNT_VALUE"]) > 0) { $arOrderFields["DISCOUNT_VALUE"] = 0; } $arOrderFields["UPDATED_1C"] = "Y"; if (!empty($arOrderFields)) { CSaleOrder::Update($orderId, $arOrderFields); } } else { $this->strError .= "\n" . GetMessage("CC_BSC1_FINAL_NOT_EDIT", array("#ID#" => $orderId)); } $arAditFields = array(); if ($v["TRAITS"][GetMessage("CC_BSC1_CANCELED")] == "true") { if ($orderInfo["CANCELED"] == "N") { CSaleOrder::CancelOrder($orderId, "Y", $v["COMMENT"]); } $arAditFields["UPDATED_1C"] = "Y"; } else { if ($orderInfo["CANCELED"] == "Y") { CSaleOrder::CancelOrder($orderId, "N", $v["COMMENT"]); } $arAditFields["UPDATED_1C"] = "Y"; if (strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")]) > 1) { if ($orderInfo["PAYED"] == "N") { CSaleOrder::PayOrder($orderId, "Y"); } $arAditFields["PAY_VOUCHER_DATE"] = CDatabase::FormatDate(str_replace("T", " ", $v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG)); if (strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")]) > 0) { $arAditFields["PAY_VOUCHER_NUM"] = $v["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")]; } $arAditFields["UPDATED_1C"] = "Y"; } if (strlen($v["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")]) > 1) { if ($orderInfo["ALLOW_DELIVERY"] == "N") { CSaleOrder::DeliverOrder($orderId, "Y"); } $arAditFields["DATE_ALLOW_DELIVERY"] = CDatabase::FormatDate(str_replace("T", " ", $v["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG)); if (strlen($arParams["FINAL_STATUS_ON_DELIVERY"]) > 0 && $orderInfo["STATUS_ID"] != "F" && $orderInfo["STATUS_ID"] != $arParams["FINAL_STATUS_ON_DELIVERY"]) { CSaleOrder::StatusOrder($orderId, $arParams["FINAL_STATUS_ON_DELIVERY"]); } $arAditFields["UPDATED_1C"] = "Y"; } } if (count($arAditFields) > 0) { CSaleOrder::Update($orderId, $arAditFields); } } else { $this->strError .= "\n" . GetMessage("CC_BSC1_ORDER_NOT_FOUND", array("#ID#" => $orderId)); } } }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $ORDER_ID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]); if (!is_array($arOrder)) { $arOrder = CSaleOrder::GetByID($ORDER_ID); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Factura</title> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo LANG_CHARSET; ?> "> <style> table { border-collapse: collapse; } table.it td { border: 1pt solid #000000; padding: 0pt 3pt; } table.inv td, table.sign td { padding: 0pt; } table.sign td { vertical-align: top; } table.header td { padding: 0pt; vertical-align: top; } </style> </head> <?php if ($_REQUEST['BLANK'] == 'Y') { $blank = true; }
//send new order mail if ($OrderNewSendEmail) { $strOrderList = ""; foreach ($arOrder["BASKET_ITEMS"] as $val) { if (CSaleBasketHelper::isSetItem($val)) continue; $measure = (isset($val["MEASURE_TEXT"])) ? $val["MEASURE_TEXT"] : GetMessage("SOA_SHT"); $strOrderList .= $val["NAME"]." - ".$val["QUANTITY"]." ".$measure.": ".SaleFormatCurrency($val["PRICE"], $BASE_LANG_CURRENCY); $strOrderList .= "\n"; } $arOrderNew = CSaleOrder::GetByID($ID); //send mail $arFields = array( "ORDER_ID" => $arOrderNew["ACCOUNT_NUMBER"], "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $LID))), "ORDER_USER" => $arUserEmail["PAYER_NAME"], "PRICE" => SaleFormatCurrency($arOrder["PRICE"], $BASE_LANG_CURRENCY), "BCC" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME), "EMAIL" => $arUserEmail["USER_EMAIL"], "ORDER_LIST" => $strOrderList, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME), "DELIVERY_PRICE" => $arOrder["DELIVERY_PRICE"], ); $eventName = "SALE_NEW_ORDER";
function UnLock($ID) { global $DB; $ID = IntVal($ID); if ($ID <= 0) { return False; } $arOrder = CSaleOrder::GetByID($ID); if (!$arOrder) { return False; } $userRights = CMain::GetUserRight("sale", $GLOBALS["USER"]->GetUserGroupArray(), "Y", "Y"); if ($userRights >= "W" || $arOrder["LOCKED_BY"] == $GLOBALS["USER"]->GetID()) { $arFields = array("DATE_LOCK" => false, "LOCKED_BY" => false); if (!CSaleOrder::Update($ID, $arFields, false)) { return False; } else { return True; } } return False; }
function PayUserAccountDeliveryOrderCallback($productID, $userID, $bPaid, $orderID, $quantity = 1) { global $DB; $productID = IntVal($productID); $userID = IntVal($userID); $bPaid = $bPaid ? True : False; $orderID = IntVal($orderID); if ($userID <= 0) { return False; } if ($orderID <= 0) { return False; } if (!($arOrder = CSaleOrder::GetByID($orderID))) { return False; } $baseLangCurrency = CSaleLang::GetLangCurrency($arOrder["LID"]); $arAmount = unserialize(COption::GetOptionString("sale", "pay_amount", 'a:4:{i:1;a:2:{s:6:"AMOUNT";s:2:"10";s:8:"CURRENCY";s:3:"EUR";}i:2;a:2:{s:6:"AMOUNT";s:2:"20";s:8:"CURRENCY";s:3:"EUR";}i:3;a:2:{s:6:"AMOUNT";s:2:"30";s:8:"CURRENCY";s:3:"EUR";}i:4;a:2:{s:6:"AMOUNT";s:2:"40";s:8:"CURRENCY";s:3:"EUR";}}')); if (!array_key_exists($productID, $arAmount)) { return False; } $currentPrice = $arAmount[$productID]["AMOUNT"] * $quantity; $currentCurrency = $arAmount[$productID]["CURRENCY"]; if ($arAmount[$productID]["CURRENCY"] != $baseLangCurrency) { $currentPrice = CCurrencyRates::ConvertCurrency($arAmount[$productID]["AMOUNT"], $arAmount[$productID]["CURRENCY"], $baseLangCurrency) * $quantity; $currentCurrency = $baseLangCurrency; } if (!CSaleUserAccount::UpdateAccount($userID, $bPaid ? $currentPrice : -$currentPrice, $currentCurrency, "MANUAL", $orderID, "Payment to user account")) { return False; } return True; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } //скрипт к которому будет обращаться платежная система для передачи информации о платеже //файл должен располагаться в публичной части сайта и Платежной системе необходимо сообщить //адрес этого файла. Файл принимает параметры, переданные методом GET и только в режиме PAYMENT define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; CModule::IncludeModule("sale"); if ($mode == "PAYMENT") { if (IntVal($issuer_id) > 0) { $bCorrectPayment = True; if (!($arOrder = CSaleOrder::GetByID(IntVal($issuer_id)))) { $bCorrectPayment = False; } if ($bCorrectPayment) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); } $PASS = CSalePaySystemAction::GetParamValue("PASS"); $strCheck = md5($PASS . "PAYMENT" . $invoice . $issuer_id . $payment_id . $payer . $currency . $value . $date . $confirmed); if ($bCorrectPayment && $CHECKSUM != $strCheck) { $bCorrectPayment = False; } if ($bCorrectPayment) { $strPS_STATUS_DESCRIPTION = ""; $strPS_STATUS_DESCRIPTION .= "номер счета - " . $invoice . "; "; $strPS_STATUS_DESCRIPTION .= "номер платежа - " . $payment_id . "; "; $strPS_STATUS_DESCRIPTION .= "дата платежа - " . $date . "";
function Update($ID, $arFields, $bDateUpdate = true) { global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER; $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET " . "\t" . $strUpdate . " "; if ($bDateUpdate) { $strSql .= ",\tDATE_UPDATE = " . $DB->GetNowFunction() . " "; } $strSql .= "WHERE ID = " . $ID . " "; $res = $DB->Query($strSql, true, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (!$res) { return false; } $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($res) { CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields); } unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_" . $ID]); foreach (GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } if (isset($arFields["TRACKING_NUMBER"])) { foreach (GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"])); } if (strlen($arFields["TRACKING_NUMBER"]) > 0 && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"]) { $accountNumber = isset($arFields["ACCOUNT_NUMBER"]) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"]; $userId = isset($arFields["USER_ID"]) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"]; $payerName = ""; $payerEMail = ''; $dbUser = CUser::GetByID($userId); if ($arUser = $dbUser->Fetch()) { if (strlen($payerName) <= 0) { $payerName = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen($payerEMail) <= 0) { $payerEMail = $arUser["EMAIL"]; } } $arEmailFields = array("ORDER_ID" => $accountNumber, "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))), "ORDER_USER" => $payerName, "ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"], "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME), "EMAIL" => $payerEMail, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME)); $event = new CEvent(); $event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N"); } } if (defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y") { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } return $ID; }
//"notification_secret", //"label", ); foreach ($ps_arr as $key) { $ps_p_sign .= trim($_REQUEST[$key]) . "&"; } $ps_p_sign .= $ps_key . "&" . $data['label']; $ps_hash = sha1($ps_p_sign); if (strtolower($data['sha1_hash']) == strtolower($ps_hash)) { if (strpos($data['label'], "ORDER#") !== false) { // order info $ps_order = explode("#", $data['label']); $ps_order = $ps_order[1]; $arOrder = CSaleOrder::GetByID($ps_order); if (abs(intval($arOrder["PRICE"]) - intval($data['withdraw_amount'])) <= 1) { CSaleOrder::PayOrder($arOrder["ID"], "Y"); CSaleOrder::StatusOrder($arOrder["ID"], 'P'); $arFields = array( "PS_STATUS" => "Y", "PAYED" => "Y", "PS_STATUS_CODE" => "Y", "PS_STATUS_DESCRIPTION" => print_r($_REQUEST, true), "PS_STATUS_MESSAGE" => "Оплачено", "PS_SUM" => $data['withdraw_amount'], "PS_CURRENCY" => 'RUB', "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))), "PAY_VOUCHER_NUM" => $data['operation_id'],
$lmi_payer_wm = $_REQUEST['LMI_PAYER_WM']; $lmi_payment_no = $_REQUEST['LMI_PAYMENT_NO']; $lmi_mode = $_REQUEST['LMI_MODE']; $id_pay = $_REQUEST['ID_PAY']; $client_mail = $_REQUEST['CLIENT_MAIL']; $custom = $_REQUEST['custom']; $lmi_sys_trans_no = $_REQUEST['LMI_SYS_TRANS_NO']; $lmi_sys_invs_no = $_REQUEST['LMI_SYS_INVS_NO']; $lmi_sys_trans_date = $_REQUEST['LMI_SYS_TRANS_DATE']; $lmi_hash = $_REQUEST['LMI_HASH']; $lmi_secret_key = $_REQUEST['LMI_SECRET_KEY']; if (CModule::IncludeModule("sale")) { $bCorrectPayment = True; $err = 0; $err_text = ''; if ($arOrder = CSaleOrder::GetByID(IntVal($lmi_payment_no))) { $bCorrectPayment = False; $err = 1; $err_text = 'ERR: НЕТ ТАКОГО ЗАКАЗА'; } if ($bCorrectPayment) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); } $IdM = CSalePaySystemAction::GetParamValue("ZP_SHOP_ID"); $sk = CSalePaySystemAction::GetParamValue("ZP_MERCHANT_KEY"); $CruR = CSalePaySystemAction::GetParamValue("ZP_CODE_RUR"); // Проверяем, не произошла ли подмена суммы. $order_amount = CCurrencyRates::ConvertCurrency($arOrder["PRICE"], $arOrder["CURRENCY"], $CruR); if ($order_amount != $lmi_payment_amount) { $err = 2; $err_text = 'ERR: НЕВЕРНАЯ СУММА : ' . $lmi_payment_amount;
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if ($_SERVER["REQUEST_METHOD"] == "POST") { $bCorrectPayment = True; if (!($arOrder = CSaleOrder::GetByID(IntVal($_POST["LMI_PAYMENT_NO"])))) { $bCorrectPayment = False; } if ($bCorrectPayment) { CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]); } $CNST_SECRET_KEY = CSalePaySystemAction::GetParamValue("CNST_SECRET_KEY"); if (strlen($CNST_SECRET_KEY) <= 0) { $bCorrectPayment = False; } $CNST_PAYEE_PURSE = CSalePaySystemAction::GetParamValue("SHOP_ACCT"); $currency = CSalePaySystemAction::GetParamValue("CURRENCY"); if (strlen($currency) <= 0 || $currency == "RUR") { $currency = "RUB"; } if ($_POST["LMI_PREREQUEST"] == "1" || $_POST["LMI_PREREQUEST"] == "2") { if ($arOrder["PRICE"] == DoubleVal($_POST["LMI_PAYMENT_AMOUNT"]) && $currency == DoubleVal($_POST["LMI_CURRENCY"]) && $CNST_PAYEE_PURSE == $_POST["LMI_MERCHANT_ID"]) { $APPLICATION->RestartBuffer(); echo "YES"; die; } else { $APPLICATION->RestartBuffer(); echo "Параметры платежа несовпадают."; die;