Ejemplo n.º 1
0
	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;
	}
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 /**
  * @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']));
     }
 }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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;
     }
   }
 }
Ejemplo n.º 6
0
 /**
  *	Обработчик события подтверждения оплаты товара
  */
 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);
 }
Ejemplo n.º 7
0
 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"]);
     }
 }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
<?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"]);
Ejemplo n.º 10
0
<?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;
Ejemplo n.º 11
0
<?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);
    }
}
Ejemplo n.º 12
0
<?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";
        }
Ejemplo n.º 13
0
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);
            }
            }
        }
    }
}
Ejemplo n.º 14
0
         $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>";
 }
Ejemplo n.º 15
0
<?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) {
Ejemplo n.º 16
0
 /**
  * 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;
 }
Ejemplo n.º 17
0
 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));
 }
Ejemplo n.º 18
0
    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;
    }
Ejemplo n.º 19
0
     $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);
             }
         }
     }
Ejemplo n.º 20
0
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'),
Ejemplo n.º 21
0
 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));
         }
     }
 }
Ejemplo n.º 22
0
<?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;
}
Ejemplo n.º 23
0
				//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";
Ejemplo n.º 24
0
 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;
 }
Ejemplo n.º 25
0
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;
}
Ejemplo n.º 26
0
<?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 . "";
Ejemplo n.º 27
0
 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'],
Ejemplo n.º 29
0
$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;
Ejemplo n.º 30
0
<?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;