Esempio n. 1
0
	protected function get_futubank_form() {
		return new FutubankForm(
			CSalePaySystemAction::GetParamValue('MERCHANT_ID'),
			CSalePaySystemAction::GetParamValue('SECRET_KEY'),
			CSalePaySystemAction::GetParamValue('IS_TEST') == 'Y'
		);
	}
Esempio n. 2
0
 function init()
 {
     $this->username = CSalePaySystemAction::GetParamValue("USER");
     $this->pwd = CSalePaySystemAction::GetParamValue("PWD");
     $this->signature = CSalePaySystemAction::GetParamValue("SIGNATURE");
     $this->currency = CSalePaySystemAction::GetParamValue("CURRENCY");
     $this->testMode = CSalePaySystemAction::GetParamValue("TEST") == "Y";
     if ($this->testMode) {
         $this->domain = "sandbox.";
     }
     if (strlen($_REQUEST["token"]) > 0) {
         $this->token = $_REQUEST["token"];
     }
     if (strlen($_REQUEST["PayerID"]) > 0) {
         $this->payerId = $_REQUEST["PayerID"];
     }
     $this->version = "98.0";
     $dbSite = CSite::GetByID(SITE_ID);
     $arSite = $dbSite->Fetch();
     $this->serverName = $arSite["SERVER_NAME"];
     if (strLen($this->serverName) <= 0) {
         if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) {
             $this->serverName = SITE_SERVER_NAME;
         } else {
             $this->serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com");
         }
     }
     $this->serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . $this->serverName;
     if (strlen($this->username) <= 0 || strlen($this->username) <= 0 || strlen($this->username) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException("CSalePaySystempaypal: init error", "CSalePaySystempaypal_init_error");
         return false;
     }
     return true;
 }
Esempio n. 3
0
 protected function deletePaysysHandler()
 {
     $a_ps_act = explode("|", \Bitrix\Main\Config\Option::get($this->MODULE_ID, "pay_handler_ids"));
     if (!empty($a_ps_act)) {
         foreach ($a_ps_act as $id) {
             CSalePaySystemAction::Delete($id);
         }
     }
     return true;
 }
Esempio n. 4
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;
     }
   }
 }
Esempio n. 5
0
 /**
  * getByPaySystemId
  * returns saved tarif's values
  * @return array
  */
 protected static function getValuesByPSAId($psaId)
 {
     $arResult = array();
     if (isset(self::$arItems[$psaId])) {
         $arResult = self::$arItems[$psaId];
     } else {
         $psa = CSalePaySystemAction::GetByID($psaId);
         if (is_array($psa) && isset($psa['TARIF']) && is_array($psa['TARIF'])) {
             $arResult = self::$arItems[$psaId] = unserialize($psa['TARIF']);
         }
     }
     return $arResult;
 }
Esempio n. 6
0
 public static function ensureQuotePaySystemsCreated()
 {
     if (!Loader::includeModule('sale')) {
         return;
     }
     $siteID = '';
     $languageID = '';
     $dbSites = \CSite::GetList($by = 'sort', $order = 'desc', array('DEFAULT' => 'Y', 'ACTIVE' => 'Y'));
     $defaultSite = is_object($dbSites) ? $dbSites->Fetch() : null;
     if (is_array($defaultSite)) {
         $siteID = $defaultSite['LID'];
         $languageID = $defaultSite['LANGUAGE_ID'];
     }
     if ($siteID === '') {
         $siteID = 's1';
     }
     if ($languageID === '') {
         $languageID = 'ru';
     }
     $paySysName = "quote_{$languageID}";
     $paySystems = array();
     $customPaySystemPath = \COption::GetOptionString('sale', 'path2user_ps_files', '');
     if ($customPaySystemPath === '') {
         $customPaySystemPath = BX_ROOT . '/php_interface/include/sale_payment/';
     }
     $personTypeIDs = \CCrmPaySystem::getPersonTypeIDs();
     if (isset($personTypeIDs['COMPANY'])) {
         $paySystems[] = array('NAME' => Loc::getMessage('CRM_PS_QUOTE_COMPANY', null, $languageID), 'SORT' => 200, 'DESCRIPTION' => '', 'CODE_TEMP' => $paySysName, 'ACTION' => array(array('PERSON_TYPE_ID' => $personTypeIDs['COMPANY'], 'NAME' => Loc::getMessage('CRM_PS_QUOTE_COMPANY', null, $languageID), 'ACTION_FILE' => "{$customPaySystemPath}{$paySysName}", 'RESULT_FILE' => '', 'NEW_WINDOW' => 'Y', 'PARAMS' => serialize(array('DATE_INSERT' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_BILL_DATE'), 'DATE_PAY_BEFORE' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_PAY_BEFORE'), 'BUYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'COMPANY'), 'BUYER_INN' => array('TYPE' => 'PROPERTY', 'VALUE' => 'INN'), 'BUYER_ADDRESS' => array('TYPE' => 'PROPERTY', 'VALUE' => 'COMPANY_ADR'), 'BUYER_PHONE' => array('TYPE' => 'PROPERTY', 'VALUE' => 'PHONE'), 'BUYER_FAX' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FAX'), 'BUYER_PAYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'CONTACT_PERSON'), 'COMMENT1' => array('TYPE' => 'ORDER', 'VALUE' => 'USER_DESCRIPTION'))), 'HAVE_PAYMENT' => 'Y', 'HAVE_ACTION' => 'N', 'HAVE_RESULT' => 'N', 'HAVE_PREPAY' => 'N', 'HAVE_RESULT_RECEIVE' => 'N')));
     }
     if (isset($personTypeIDs['CONTACT'])) {
         $paySystems[] = array('NAME' => Loc::getMessage('CRM_PS_QUOTE_CONTACT', null, $languageID), 'SORT' => 300, 'DESCRIPTION' => '', 'CODE_TEMP' => $paySysName, 'ACTION' => array(array('PERSON_TYPE_ID' => $personTypeIDs['CONTACT'], 'NAME' => Loc::getMessage('CRM_PS_QUOTE_CONTACT', null, $languageID), 'ACTION_FILE' => "{$customPaySystemPath}{$paySysName}", 'RESULT_FILE' => '', 'NEW_WINDOW' => 'Y', 'PARAMS' => serialize(array('DATE_INSERT' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_BILL_DATE'), 'DATE_PAY_BEFORE' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_PAY_BEFORE'), 'BUYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FIO'), 'BUYER_INN' => array('TYPE' => 'PROPERTY', 'VALUE' => 'INN'), 'BUYER_ADDRESS' => array('TYPE' => 'PROPERTY', 'VALUE' => 'ADDRESS'), 'BUYER_PHONE' => array('TYPE' => 'PROPERTY', 'VALUE' => 'PHONE'), 'BUYER_FAX' => array('TYPE' => '', 'VALUE' => ''), 'BUYER_PAYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FIO'), 'COMMENT1' => array('TYPE' => 'ORDER', 'VALUE' => 'USER_DESCRIPTION'))), 'HAVE_PAYMENT' => 'Y', 'HAVE_ACTION' => 'N', 'HAVE_RESULT' => 'N', 'HAVE_PREPAY' => 'N', 'HAVE_RESULT_RECEIVE' => 'N')));
     }
     $currencyID = \CCrmCurrency::GetBaseCurrencyID();
     foreach ($paySystems as $paySystem) {
         $dbSalePaySystem = \CSalePaySystem::GetList(array(), array('LID' => $siteID, 'NAME' => $paySystem['NAME']), false, false, array('ID'));
         if (!$dbSalePaySystem->Fetch()) {
             $paySystemID = \CSalePaySystem::Add(array('NAME' => $paySystem['NAME'], 'DESCRIPTION' => $paySystem['DESCRIPTION'], 'SORT' => $paySystem['SORT'], 'LID' => $siteID, 'CURRENCY' => $currencyID, 'ACTIVE' => 'Y'));
             if ($paySystemID > 0) {
                 foreach ($paySystem['ACTION'] as &$action) {
                     $action['PAY_SYSTEM_ID'] = $paySystemID;
                     \CSalePaySystemAction::Add($action);
                 }
                 unset($action);
             }
         }
     }
     unset($paySystem);
 }
Esempio n. 7
0
 public static function getValues($psId = false, $persId = false)
 {
     $arResult = array();
     //get saved
     if (intval($psId) > 0) {
         $dbPSAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $psId, "PERSON_TYPE_ID" => $persId));
         if ($arPSAction = $dbPSAction->Fetch()) {
             $arResult = self::extractFromField($arPSAction["TARIF"]);
         }
     }
     //or get default
     if (empty($arResult)) {
         $arResult = CSaleHelper::getOptionOrImportValues('ps_payment_forward_calc_tarifs', array('CSalePaySystemTarifPFC', 'getAllCMTarifsFromCsv'));
     }
     return $arResult;
 }
            ?>
';
						var param_<?php 
            echo $val;
            ?>
_value_<?php 
            echo $arPersonType["ID"];
            ?>
 = '<?php 
            echo CUtil::JSEscape($valueTmp);
            ?>
';
						<?php 
        }
    } else {
        $arCorrespondence = CSalePaySystemAction::UnSerializeParams($arPaySystemAction["PARAMS"]);
        foreach ($arCorrespondence as $key => $value) {
            ?>
						var param_<?php 
            echo $key;
            ?>
_type_<?php 
            echo $arPersonType["ID"];
            ?>
 = '<?php 
            echo CUtil::JSEscape($value["TYPE"]);
            ?>
';
						var param_<?php 
            echo $key;
            ?>
Esempio n. 9
0
			</tr>
		</table>
	</td>
</tr>
</table>
<br />
<h1>Внимание! В стоимость заказа не включена комиссия банка.</h1>

<!-- Условия поставки -->
<h1><b>Метод оплаты:</b></h1>
<ol>
	<li>Распечатайте квитанцию. Если у вас нет принтера, перепишите верхнюю часть квитанции и заполните по этому образцу стандартный бланк квитанции в вашем банке.</li>
	<li>Вырежьте по контуру квитанцию.</li>
	<li>Оплатите квитанцию в любом отделении банка, принимающего платежи от частных лиц.</li>
	<li>Сохраните квитанцию до подтверждения исполнения заказа.</li>
</ol>

<h1><b>Условия поставки:</b> </h1>
<ul>
	<li>Отгрузка оплаченного товара производится после подтверждения факта платежа.</li>
	<li>Идентификация платежа производится по квитанции, поступившей в наш банк.</li>
</ul>


<p><b>Примечание:</b>
<?php 
echo CSalePaySystemAction::GetParamValue("COMPANY_NAME");
?>
	не может гарантировать конкретные сроки проведения вашего платежа. За дополнительной информацией о сроках доставки квитанции в банк получателя, обращайтесь в свой банк.</p>
</body>
</html>
Esempio n. 10
0
?>
">
<INPUT TYPE="HIDDEN" NAME="YMPayment" VALUE="<?php 
echo IntVal(CSalePaySystemAction::GetParamValue("PAYMENT_YMPayment")) == 1 ? 1 : 0;
?>
">
<INPUT TYPE="HIDDEN" NAME="QIWIPayment" VALUE="<?php 
echo IntVal(CSalePaySystemAction::GetParamValue("PAYMENT_QIWIPayment")) == 1 ? 1 : 0;
?>
">
<INPUT TYPE="HIDDEN" NAME="WMPayment" VALUE="<?php 
echo IntVal(CSalePaySystemAction::GetParamValue("PAYMENT_WebMoneyPayment")) == 1 ? 1 : 0;
?>
">
<INPUT TYPE="HIDDEN" NAME="AssistIDPayment" VALUE="<?php 
echo IntVal(CSalePaySystemAction::GetParamValue("PAYMENT_AssistIDCCPayment")) == 1 ? 1 : 0;
?>
">

<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="<?php 
echo GetMessage("SASP_ACTION");
?>
">
</form>

<p align="justify"><b><?php 
echo GetMessage("SASP_NOTES_TITLE");
?>
</b></p>
<p align="justify"><?php 
echo GetMessage("SASP_NOTES");
Esempio n. 11
0
				</tr>
				<?php 
        }
        ?>
				<tr><td>&nbsp;</td></tr>
				<tr>
					<td><nobr><?php 
        echo CSalePaySystemAction::GetParamValue("SELLER_ACC_POS", false);
        ?>
</nobr></td>
					<td style="border-bottom: 1pt solid #000000; text-align: center; ">
						<?php 
        if (!$blank && CSalePaySystemAction::GetParamValue("SELLER_ACC_SIGN", false)) {
            ?>
						<span style="position: relative; ">&nbsp;<?php 
            echo CFile::ShowImage(CSalePaySystemAction::GetParamValue("SELLER_ACC_SIGN", false), 200, 50, 'style="position: absolute; margin-left: -75pt; bottom: 0pt; "');
            ?>
</span>
						<?php 
        }
        ?>
					</td>
				</tr>
				<?php 
    }
    ?>
				<?php 
}
?>
			</table>
Esempio n. 12
0
 public function getBasketItems()
 {
     global $APPLICATION;
     if (self::$catalogIncluded === null) {
         self::$catalogIncluded = Loader::includeModule('catalog');
     }
     self::$iblockIncluded = self::$catalogIncluded;
     CSaleBasket::UpdateBasketPrices(CSaleBasket::GetBasketUserID(), SITE_ID);
     $bShowReady = false;
     $bShowDelay = false;
     $bShowSubscribe = false;
     $bShowNotAvail = false;
     $allSum = 0;
     $allWeight = 0;
     $allCurrency = CSaleLang::GetLangCurrency(SITE_ID);
     $allVATSum = 0;
     $arParents = array();
     $arResult["ITEMS"]["AnDelCanBuy"] = array();
     $arResult["ITEMS"]["DelDelCanBuy"] = array();
     $arResult["ITEMS"]["nAnCanBuy"] = array();
     $arResult["ITEMS"]["ProdSubscribe"] = array();
     $DISCOUNT_PRICE_ALL = 0;
     // BASKET PRODUCTS (including measures, ratio, iblock properties data)
     $arImgFields = array("PREVIEW_PICTURE", "DETAIL_PICTURE");
     $arBasketItems = array();
     $basketKey = 0;
     $basketIds = array();
     $arSku2Parent = array();
     $arSetParentWeight = array();
     $arElementId = array();
     $dbItems = CSaleBasket::GetList(array("ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID", "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "TYPE", "SET_PARENT_ID"));
     while ($arItem = $dbItems->GetNext()) {
         $arItem['PROPS'] = array();
         $arBasketItems[$basketKey] = $arItem;
         $basketIds[$arItem['ID']] =& $arBasketItems[$basketKey];
         $basketKey++;
         if (CSaleBasketHelper::isSetItem($arItem)) {
             continue;
         }
         $arElementId[] = $arItem["PRODUCT_ID"];
     }
     if (!empty($arElementId) && self::$catalogIncluded) {
         $productList = CCatalogSKU::getProductList($arElementId);
         if (!empty($productList)) {
             foreach ($productList as $offerId => $offerInfo) {
                 $offerInfo['PRODUCT_ID'] = $offerInfo['ID'];
                 $arElementId[] = $offerInfo['ID'];
                 $arSku2Parent[$offerId] = $offerInfo['ID'];
                 $arParents[$offerId] = $offerInfo;
             }
             unset($offerInfo, $offerId);
         }
         unset($productList);
         // get measures, ratio, sku props data and available quantity
         $arBasketItems = getMeasures($arBasketItems);
         $arBasketItems = getRatio($arBasketItems);
         $arBasketItems = $this->getAvailableQuantity($arBasketItems);
         $propsIterator = CSaleBasket::GetPropsList(array('BASKET_ID' => 'ASC', 'SORT' => 'ASC', 'ID' => 'ASC'), array('BASKET_ID' => array_keys($basketIds)));
         while ($property = $propsIterator->GetNext()) {
             $property['CODE'] = (string) $property['CODE'];
             if ($property['CODE'] == 'CATALOG.XML_ID' || $property['CODE'] == 'PRODUCT.XML_ID') {
                 continue;
             }
             if (!isset($basketIds[$property['BASKET_ID']])) {
                 continue;
             }
             $basketIds[$property['BASKET_ID']]['PROPS'][] = $property;
         }
         unset($property, $propsIterator, $basketIds);
     }
     // get product properties data
     $arProductData = getProductProps($arElementId, array_merge(array("ID"), $arImgFields, $this->arCustomSelectFields));
     foreach ($arBasketItems as &$arItem) {
         $quantityIsFloat = false;
         if (number_format(doubleval($arItem['QUANTITY']), 2, '.', '') != intval($arItem['QUANTITY'])) {
             $quantityIsFloat = true;
         }
         $arItem["QUANTITY"] = $quantityIsFloat === false && $this->quantityFloat != "Y" ? intval($arItem['QUANTITY']) : number_format(doubleval($arItem['QUANTITY']), 2, '.', '');
         $arItem["PRICE_VAT_VALUE"] = $arItem["PRICE"] / ($arItem["VAT_RATE"] + 1) * $arItem["VAT_RATE"];
         $arItem["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arItem["PRICE"], $arItem["CURRENCY"], true);
         $arItem["WEIGHT"] = doubleval($arItem["WEIGHT"]);
         $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit;
         if (CSaleBasketHelper::isSetItem($arItem)) {
             $arSetParentWeight[$arItem["SET_PARENT_ID"]] += $arItem["WEIGHT"] * $arItem["QUANTITY"];
         }
         if (isset($arProductData[$arItem['PRODUCT_ID']]) && is_array($arProductData[$arItem['PRODUCT_ID']])) {
             foreach ($arProductData[$arItem["PRODUCT_ID"]] as $key => $value) {
                 if (strpos($key, "PROPERTY_") !== false || in_array($key, $arImgFields)) {
                     $arItem[$key] = $value;
                 }
             }
         }
         if (array_key_exists($arItem["PRODUCT_ID"], $arSku2Parent)) {
             $arFieldsToFill = array_merge($this->arCustomSelectFields, $arImgFields);
             // fields to be filled with parents' values if empty
             foreach ($arFieldsToFill as $field) {
                 $fieldVal = in_array($field, $arImgFields) ? $field : $field . "_VALUE";
                 $parentId = $arSku2Parent[$arItem["PRODUCT_ID"]];
                 if ((!isset($arItem[$fieldVal]) || isset($arItem[$fieldVal]) && strlen($arItem[$fieldVal]) == 0) && (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) {
                     $arItem[$fieldVal] = $arProductData[$parentId][$fieldVal];
                 }
             }
         }
         foreach ($arItem as $key => $value) {
             if (strpos($key, "PROPERTY_", 0) === 0 && strrpos($key, "_VALUE") == strlen($key) - 6) {
                 $code = str_replace(array("PROPERTY_", "_VALUE"), "", $key);
                 $propData = $this->arIblockProps[$code];
                 $arItem[$key] = CSaleHelper::getIblockPropInfo($value, $propData);
             }
         }
         $arItem["PREVIEW_PICTURE_SRC"] = "";
         if (isset($arItem["PREVIEW_PICTURE"]) && intval($arItem["PREVIEW_PICTURE"]) > 0) {
             $arImage = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
             if ($arImage) {
                 $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                 $arItem["PREVIEW_PICTURE_SRC"] = $arFileTmp["src"];
             }
         }
         $arItem["DETAIL_PICTURE_SRC"] = "";
         if (isset($arItem["DETAIL_PICTURE"]) && intval($arItem["DETAIL_PICTURE"]) > 0) {
             $arImage = CFile::GetFileArray($arItem["DETAIL_PICTURE"]);
             if ($arImage) {
                 $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                 $arItem["DETAIL_PICTURE_SRC"] = $arFileTmp["src"];
             }
         }
     }
     unset($arItem);
     // get sku props data
     if (!empty($arBasketItems) && self::$catalogIncluded && isset($this->offersProps) && !empty($this->offersProps)) {
         $arBasketItems = $this->getSkuPropsData($arBasketItems, $arParents, $this->offersProps);
     }
     // count weight for set parent products
     foreach ($arBasketItems as &$arItem) {
         if (CSaleBasketHelper::isSetParent($arItem)) {
             $arItem["WEIGHT"] = $arSetParentWeight[$arItem["ID"]] / $arItem["QUANTITY"];
             $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit;
         }
     }
     if (isset($arItem)) {
         unset($arItem);
     }
     // fill item arrays for old templates
     foreach ($arBasketItems as &$arItem) {
         if (CSaleBasketHelper::isSetItem($arItem)) {
             continue;
         }
         $arItem['DISCOUNT_PRICE'] = (double) $arItem['DISCOUNT_PRICE'];
         $arItem['PRICE'] = (double) $arItem['PRICE'];
         $arItem['DISCOUNT_PRICE_PERCENT'] = 0;
         $arItem['DISCOUNT_PRICE_PERCENT_FORMATED'] = '';
         $arItem['FULL_PRICE'] = $arItem['PRICE'];
         if ($arItem['DISCOUNT_PRICE'] > 0) {
             if ($arItem['DISCOUNT_PRICE'] + $arItem['PRICE'] > 0) {
                 $arItem['DISCOUNT_PRICE_PERCENT'] = $arItem['DISCOUNT_PRICE'] * 100 / ($arItem['DISCOUNT_PRICE'] + $arItem['PRICE']);
                 $arItem['DISCOUNT_PRICE_PERCENT_FORMATED'] = roundEx($arItem['DISCOUNT_PRICE_PERCENT'], SALE_VALUE_PRECISION) . '%';
                 $arItem['FULL_PRICE'] = $arItem["PRICE"] + $arItem["DISCOUNT_PRICE"];
             }
         }
         $arItem['FULL_PRICE_FORMATED'] = CCurrencyLang::CurrencyFormat($arItem['FULL_PRICE'], $arItem['CURRENCY'], true);
         if ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "N") {
             $allSum += $arItem["PRICE"] * $arItem["QUANTITY"];
             $allWeight += $arItem["WEIGHT"] * $arItem["QUANTITY"];
             $allVATSum += roundEx($arItem["PRICE_VAT_VALUE"] * $arItem["QUANTITY"], SALE_VALUE_PRECISION);
             $bShowReady = true;
             if ($arItem["DISCOUNT_PRICE"] > 0) {
                 $DISCOUNT_PRICE_ALL += $arItem["DISCOUNT_PRICE"] * $arItem["QUANTITY"];
             }
             $arResult["ITEMS"]["AnDelCanBuy"][] = $arItem;
         } elseif ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "Y") {
             $bShowDelay = true;
             $arResult["ITEMS"]["DelDelCanBuy"][] = $arItem;
         } elseif ($arItem["CAN_BUY"] == "N" && $arItem["SUBSCRIBE"] == "Y") {
             $bShowSubscribe = true;
             $arResult["ITEMS"]["ProdSubscribe"][] = $arItem;
         } else {
             $bShowNotAvail = true;
             $arItem["NOT_AVAILABLE"] = true;
             $arResult["ITEMS"]["nAnCanBuy"][] = $arItem;
         }
     }
     unset($arItem);
     $arResult["ShowReady"] = $bShowReady ? "Y" : "N";
     $arResult["ShowDelay"] = $bShowDelay ? "Y" : "N";
     $arResult["ShowNotAvail"] = $bShowNotAvail ? "Y" : "N";
     $arResult["ShowSubscribe"] = $bShowSubscribe ? "Y" : "N";
     $arOrder = array('SITE_ID' => SITE_ID, 'USER_ID' => $GLOBALS["USER"]->GetID(), 'ORDER_PRICE' => $allSum, 'ORDER_WEIGHT' => $allWeight, 'BASKET_ITEMS' => $arResult["ITEMS"]["AnDelCanBuy"]);
     $arOptions = array('COUNT_DISCOUNT_4_ALL_QUANTITY' => $this->countDiscount4AllQuantity);
     $arErrors = array();
     CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors);
     if (isset($arOrder['ORDER_PRICE'])) {
         $roundOrderFields = CSaleOrder::getRoundFields();
         foreach ($arOrder as $fieldName => $fieldValue) {
             if (in_array($fieldName, $roundOrderFields)) {
                 $arOrder[$fieldName] = roundEx($arOrder[$fieldName], SALE_VALUE_PRECISION);
             }
         }
     }
     if (!empty($arOrder['BASKET_ITEMS']) && is_array($arOrder['BASKET_ITEMS'])) {
         $arOrder['ORDER_PRICE'] = 0;
         $roundBasketFields = CSaleBasket::getRoundFields();
         foreach ($arOrder['BASKET_ITEMS'] as &$basketItem) {
             foreach ($basketItem as $fieldName => $fieldValue) {
                 if (in_array($fieldName, $roundBasketFields)) {
                     if (isset($basketItem[$fieldName])) {
                         $basketItem[$fieldName] = roundEx($basketItem[$fieldName], SALE_VALUE_PRECISION);
                     }
                 }
             }
             $arOrder['ORDER_PRICE'] += $basketItem['PRICE'] * $basketItem['QUANTITY'];
         }
         $arOrder['ORDER_PRICE'] = roundEx($arOrder['ORDER_PRICE'], SALE_VALUE_PRECISION);
     }
     $allSum = 0;
     $allWeight = 0;
     $allVATSum = 0;
     $DISCOUNT_PRICE_ALL = 0;
     $priceWithoutDiscount = 0;
     foreach ($arOrder["BASKET_ITEMS"] as &$arOneItem) {
         $allWeight += $arOneItem["WEIGHT"] * $arOneItem["QUANTITY"];
         $allSum += $arOneItem["PRICE"] * $arOneItem["QUANTITY"];
         if (array_key_exists('VAT_VALUE', $arOneItem)) {
             $arOneItem["PRICE_VAT_VALUE"] = $arOneItem["VAT_VALUE"];
         }
         $allVATSum += roundEx($arOneItem["PRICE_VAT_VALUE"] * $arOneItem["QUANTITY"], SALE_VALUE_PRECISION);
         $arOneItem["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arOneItem["PRICE"], $arOneItem["CURRENCY"], true);
         $arOneItem["FULL_PRICE"] = $arOneItem["PRICE"] + $arOneItem["DISCOUNT_PRICE"];
         $arOneItem["FULL_PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arOneItem["FULL_PRICE"], $arOneItem["CURRENCY"], true);
         $arOneItem["SUM"] = CCurrencyLang::CurrencyFormat($arOneItem["PRICE"] * $arOneItem["QUANTITY"], $arOneItem["CURRENCY"], true);
         if (0 < doubleval($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"])) {
             $arOneItem["DISCOUNT_PRICE_PERCENT"] = $arOneItem["DISCOUNT_PRICE"] * 100 / ($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"]);
         } else {
             $arOneItem["DISCOUNT_PRICE_PERCENT"] = 0;
         }
         $arOneItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arOneItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION) . "%";
         $DISCOUNT_PRICE_ALL += $arOneItem["DISCOUNT_PRICE"] * $arOneItem["QUANTITY"];
     }
     unset($arOneItem);
     $arResult["ITEMS"]["AnDelCanBuy"] = $arOrder["BASKET_ITEMS"];
     // fill grid data (for new templates with custom columns)
     foreach ($arResult["ITEMS"] as $type => $arItems) {
         foreach ($arItems as $k => $arItem) {
             $arResult["GRID"]["ROWS"][$arItem["ID"]] = $arItem;
         }
     }
     $arResult["allSum"] = roundEx($allSum, SALE_VALUE_PRECISION);
     $arResult["allWeight"] = $allWeight;
     $arResult["allWeight_FORMATED"] = roundEx(doubleval($allWeight / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit;
     $arResult["allSum_FORMATED"] = CCurrencyLang::CurrencyFormat($allSum, $allCurrency, true);
     $arResult["DISCOUNT_PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arResult["DISCOUNT_PRICE"], $allCurrency, true);
     $arResult["PRICE_WITHOUT_DISCOUNT"] = CCurrencyLang::CurrencyFormat($allSum + $DISCOUNT_PRICE_ALL, $allCurrency, true);
     if ($this->priceVatShowValue == 'Y') {
         $arResult["allVATSum"] = roundEx($allVATSum, SALE_VALUE_PRECISION);
         $arResult["allVATSum_FORMATED"] = CCurrencyLang::CurrencyFormat($allVATSum, $allCurrency, true);
         $arResult["allSum_wVAT_FORMATED"] = CCurrencyLang::CurrencyFormat(doubleval($arResult["allSum"] - $allVATSum), $allCurrency, true);
     }
     $arResult['COUPON_LIST'] = array();
     $arResult['COUPON'] = '';
     if ($this->hideCoupon != "Y") {
         $arCoupons = DiscountCouponsManager::get(true, array(), true, true);
         if (!empty($arCoupons)) {
             foreach ($arCoupons as &$oneCoupon) {
                 if ($arResult['COUPON'] == '') {
                     $arResult['COUPON'] = $oneCoupon['COUPON'];
                 }
                 if ($oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_NOT_FOUND || $oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_FREEZE) {
                     $oneCoupon['JS_STATUS'] = 'BAD';
                 } elseif ($oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_NOT_APPLYED || $oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_ENTERED) {
                     $oneCoupon['JS_STATUS'] = 'ENTERED';
                 } else {
                     $oneCoupon['JS_STATUS'] = 'APPLYED';
                 }
                 $oneCoupon['JS_CHECK_CODE'] = '';
                 if (isset($oneCoupon['CHECK_CODE_TEXT'])) {
                     $oneCoupon['JS_CHECK_CODE'] = is_array($oneCoupon['CHECK_CODE_TEXT']) ? implode('<br>', $oneCoupon['CHECK_CODE_TEXT']) : $oneCoupon['CHECK_CODE_TEXT'];
                 }
                 $arResult['COUPON_LIST'][] = $oneCoupon;
             }
             unset($oneCoupon);
             $arResult['COUPON_LIST'] = array_values($arCoupons);
         }
         unset($arCoupons);
     }
     if (empty($arBasketItems)) {
         $arResult["ERROR_MESSAGE"] = Loc::getMessage("SALE_EMPTY_BASKET");
     }
     $arResult["DISCOUNT_PRICE_ALL"] = $DISCOUNT_PRICE_ALL;
     $arResult["DISCOUNT_PRICE_ALL_FORMATED"] = CCurrencyLang::CurrencyFormat($DISCOUNT_PRICE_ALL, $allCurrency, true);
     if ($this->usePrepayment == "Y") {
         if (doubleval($arResult["allSum"]) > 0) {
             $personType = array();
             $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("LID" => SITE_ID, "ACTIVE" => "Y"));
             while ($arPersonType = $dbPersonType->Fetch()) {
                 $personType[] = $arPersonType["ID"];
             }
             if (!empty($personType)) {
                 $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PS_ACTIVE" => "Y", "HAVE_PREPAY" => "Y", "PERSON_TYPE_ID" => $personType), false, false, array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "ENCODING", "LOGOTIP"));
                 if ($arPaySysAction = $dbPaySysAction->Fetch()) {
                     CSalePaySystemAction::InitParamarrays(false, false, $arPaySysAction["PARAMS"]);
                     $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
                     $pathToAction = str_replace("\\", "/", $pathToAction);
                     while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
                         $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
                     }
                     if (file_exists($pathToAction)) {
                         if (is_dir($pathToAction) && file_exists($pathToAction . "/pre_payment.php")) {
                             $pathToAction .= "/pre_payment.php";
                         }
                         try {
                             include_once $pathToAction;
                         } catch (\Bitrix\Main\SystemException $e) {
                             if ($e->getCode() == CSalePaySystemAction::GET_PARAM_VALUE) {
                                 $message = Loc::getMessage("SOA_TEMPL_ORDER_PS_ERROR");
                             } else {
                                 $message = $e->getMessage();
                             }
                             $arResult["ERROR_MESSAGE"] = $message;
                         }
                         $psPreAction = new CSalePaySystemPrePayment();
                         if ($psPreAction->init()) {
                             $orderData = array("PATH_TO_ORDER" => $this->pathToOrder, "AMOUNT" => $arResult["allSum"], "BASKET_ITEMS" => $arResult["ITEMS"]["AnDelCanBuy"]);
                             if (!$psPreAction->BasketButtonAction($orderData)) {
                                 if ($e = $APPLICATION->GetException()) {
                                     $arResult["WARNING_MESSAGE"][] = $e->GetString();
                                 }
                             }
                             $arResult["PREPAY_BUTTON"] = $psPreAction->BasketButtonShow();
                         }
                     }
                 }
             }
         }
     }
     return $arResult;
 }
Esempio n. 13
0
 $strPostQueryString .= "&x_currency_code=" . urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"]);
 $strPostQueryString .= "&x_method=CC";
 $strPostQueryString .= "&x_type=AUTH_CAPTURE";
 $strPostQueryString .= "&x_recurring_billing=NO";
 $strPostQueryString .= "&x_card_num=" . urlencode($INPUT_CARD_NUM);
 $strPostQueryString .= "&x_exp_date=" . urlencode($INPUT_CARD_EXP_MONTH . $INPUT_CARD_EXP_YEAR);
 // MMYYYY
 $strPostQueryString .= "&x_card_code=" . urlencode($INPUT_CARD_CODE);
 // Level 2 Data
 $strPostQueryString .= "&x_tax=" . urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["TAX_VALUE"]);
 $strPostQueryString .= "&x_freight=" . urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE_DELIVERY"]);
 $strResult = QueryGetData("secure.authorize.net", 443, "/gateway/transact.dll", $strPostQueryString, $errno, $errstr, "POST", "ssl://");
 $mass = explode("|,|", "|," . $strResult);
 $strHashValue = CSalePaySystemAction::GetParamValue("HASH_VALUE");
 if (strlen($strHashValue) > 0) {
     if (md5($strHashValue . CSalePaySystemAction::GetParamValue("PS_LOGIN") . $mass[7] . sprintf("%.2f", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"])) != strtolower($mass[38])) {
         $mass = array();
         $mass[1] = 3;
         $mass[4] = "MD5 transaction signature is incorrect!";
         $mass[3] = 0;
         $mass[2] = 0;
     }
 }
 $strPS_STATUS = IntVal($mass[1]) == 1 ? "Y" : "N";
 $strPS_STATUS_CODE = $mass[3];
 if ($strPS_STATUS == "Y") {
     $strPS_STATUS_DESCRIPTION = "Approval Code: " . $mass[5] . (!empty($mass[7]) ? "; Transaction ID: " . $mass[7] : "");
 } else {
     $strPS_STATUS_DESCRIPTION = (IntVal($mass[1]) == 2 ? "Declined" : "Error") . ": " . $mass[4] . " (Reason Code " . $mass[3] . " / Sub " . $mass[2] . ")";
     $strErrorMessage .= (IntVal($mass[1]) == 2 ? "Transaction was declined" : "Error while processing transaction") . ": " . $mass[4] . " (" . $mass[3] . "/" . $mass[2] . ")";
 }
Esempio n. 14
0
    $mrh_pass2 = CSalePaySystemAction::GetParamValue("ShopPassword2");
    if (strlen($mrh_pass2) <= 0) {
        $bCorrectPayment = False;
    }
    $strCheck = md5($out_summ . ":" . $inv_id . ":" . $mrh_pass2 . ':shp_payment_id=' . $paymentId);
    if ($bCorrectPayment && ToUpper($crc) != ToUpper($strCheck)) {
        $bCorrectPayment = False;
    }
    if ($bCorrectPayment) {
        $strPS_STATUS_DESCRIPTION = GetMessage('SALE_RES_NUMBER') . ": " . $inv_id;
        $strPS_STATUS_DESCRIPTION .= "; " . GetMessage('SALE_RES_DATEPAY') . ": " . date("d.m.Y H:i:s");
        if (isset($_REQUEST["IncCurrLabel"]) && strlen($_REQUEST["IncCurrLabel"]) > 0) {
            $strPS_STATUS_DESCRIPTION .= "; " . GetMessage('SASP_RES_PAY_TYPE') . ": " . $_REQUEST["IncCurrLabel"];
        }
        $strPS_STATUS_MESSAGE = GetMessage('SASP_RES_PAYED');
        $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" => $arOrder["CURRENCY"], "PS_RESPONSE_DATE" => new \Bitrix\Main\Type\DateTime());
        if (roundEx(CSalePaySystemAction::GetParamValue("SHOULD_PAY"), 2) == roundEx($out_summ, 2) && $changePayStatus == "Y") {
            $result = $payment->setField('PAID', 'Y');
            $APPLICATION->RestartBuffer();
            if ($result->isSuccess()) {
                $result = $payment->setFields($arFields);
                if ($result->isSuccess()) {
                    $result = $order->save();
                    if ($result->isSuccess()) {
                        echo "OK" . $arOrder["ID"];
                    }
                }
            }
        }
    }
}
$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;
    }
    //проверяем ID магазина
    if ($lmi_payee_purse != $IdM) {
        $err = 3;
        $err_text = 'ERR: НЕВЕРЕН ID МАГАЗИНА : ' . $lmi_payee_purse;
    }
    if ($lmi_prerequest == 1) {
        if ($err != 0) {
            echo $err_text;
        } else {
Esempio n. 16
0
        $bVarsFromForm = true;
    }
}
$dbUserCards = CSaleUserCards::GetList(array("DATE_UPDATE" => "DESC"), array("ID" => $ID, "USER_ID" => IntVal($GLOBALS["USER"]->GetID())), false, false, array("ID", "USER_ID", "ACTIVE", "SORT", "PAY_SYSTEM_ACTION_ID", "CURRENCY", "CARD_TYPE", "CARD_NUM", "CARD_CODE", "CARD_EXP_MONTH", "CARD_EXP_YEAR", "DESCRIPTION", "SUM_MIN", "SUM_MAX", "SUM_CURRENCY", "TIMESTAMP_X", "LAST_STATUS", "LAST_STATUS_CODE", "LAST_STATUS_DESCRIPTION", "LAST_STATUS_MESSAGE", "LAST_SUM", "LAST_CURRENCY", "LAST_DATE"));
if ($arUserCards = $dbUserCards->GetNext()) {
    $arResult = $arUserCards;
    $arResult["CARD_NUM"] = CSaleUserCards::CryptData($arResult["CARD_NUM"], "D");
} else {
    $arResult["ID"] = 0;
    $arResult["ACTIVE"] = "Y";
    $arResult["SORT"] = 100;
}
if ($bVarsFromForm) {
    foreach ($_POST as $k => $v) {
        $arResult[$k] = htmlspecialcharsex($v);
        $arResult['~' . $k] = $v;
    }
}
$arResult["ERROR_MESSAGE"] = $errorMessage;
$dbPaySysActions = CSalePaySystemAction::GetList(array("PERSON_TYPE_ID" => "ASC", "NAME" => "ASC", "PT_NAME" => "ASC", "PS_NAME" => "ASC"), array("PS_LID" => SITE_ID, "HAVE_ACTION" => "Y"), false, false, array("*"));
$arResult["PAY_SYSTEM"] = array();
while ($arPaySysActions = $dbPaySysActions->GetNext()) {
    $arResult["PAY_SYSTEM"][] = $arPaySysActions;
}
$dbCurrency = CCurrency::GetList($by = "sort", $order = "asc");
$arResult["CURRENCY_INFO"] = array();
while ($arCurrency = $dbCurrency->GetNext()) {
    $arResult["CURRENCY_INFO"][] = $arCurrency;
}
$arResult["CARD_TYPE_INFO"] = array("VISA" => "Visa", "MASTERCARD" => "MasterCard", "AMEX" => "Amex", "DINERS" => "Diners", "DISCOVER" => "Discover", "JCB" => "JCB", "ENROUTE" => "Enroute");
$this->IncludeComponentTemplate();
Esempio n. 17
0
 /**
  * Function gets pay system info from database, no cache is used here
  * @return void
  */
 protected function obtainDataPaySystem()
 {
     if (empty($this->dbResult["ID"])) {
         return;
     }
     if (intval($this->dbResult["PAY_SYSTEM_ID"])) {
         $this->dbResult["PAY_SYSTEM"] = CSalePaySystem::GetByID($this->dbResult["PAY_SYSTEM_ID"], $this->dbResult["PERSON_TYPE_ID"]);
     }
     if ($this->dbResult["PAYED"] != "Y" && $this->dbResult["CANCELED"] != "Y") {
         if (intval($this->dbResult["PAY_SYSTEM_ID"])) {
             $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $this->dbResult["PAY_SYSTEM_ID"], "PERSON_TYPE_ID" => $this->dbResult["PERSON_TYPE_ID"]), false, false, array("NAME", "ACTION_FILE", "NEW_WINDOW", "PARAMS", "ENCODING"));
             if ($arPaySysAction = $dbPaySysAction->Fetch()) {
                 if (strlen($arPaySysAction["ACTION_FILE"])) {
                     $this->dbResult["CAN_REPAY"] = "Y";
                     if ($arPaySysAction["NEW_WINDOW"] == "Y") {
                         $this->dbResult["PAY_SYSTEM"]["PSA_ACTION_FILE"] = htmlspecialcharsbx($this->arParams["PATH_TO_PAYMENT"]) . '?ORDER_ID=' . urlencode(urlencode($this->dbResult["ACCOUNT_NUMBER"]));
                     } else {
                         CSalePaySystemAction::InitParamArrays($this->dbResult, $this->requestData["ID"], $arPaySysAction["PARAMS"]);
                         $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
                         $pathToAction = str_replace("\\", "/", $pathToAction);
                         while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
                             $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
                         }
                         if (file_exists($pathToAction)) {
                             if (is_dir($pathToAction) && file_exists($pathToAction . "/payment.php")) {
                                 $pathToAction .= "/payment.php";
                             }
                             $this->dbResult["PAY_SYSTEM"]["PSA_ACTION_FILE"] = $pathToAction;
                         }
                         if (strlen($arPaySysAction["ENCODING"])) {
                             define("BX_SALE_ENCODING", $arPaySysAction["ENCODING"]);
                             AddEventHandler("main", "OnEndBufferContent", array($this, "changeBodyEncoding"));
                         }
                     }
                 }
             }
         }
     }
 }
Esempio n. 18
0
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
include(GetLangFileName(dirname(__FILE__)."/", "/payment.php"));

function either($a, $b)  {  if ($a != NULL) return $a; return $b;}

$TMG_PK_SERVER_ADDR = CSalePaySystemAction::GetParamValue("TMG_PK_SERVER_ADDR");

$user_id = (int)$GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"];
$sum = (float)either(
    CSalePaySystemAction::GetParamValue("SHOULD_PAY"), 
    $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]);
$orderid = (int)either(
    CSalePaySystemAction::GetParamValue("ORDER_ID"), 
    $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
$email = either($GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"]["EMAIL"], $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_EMAIL"]);
$phone = htmlspecialchars($GLOBALS['SALE_INPUT_PARAMS']['PROPERTY']['PHONE']);

// --- BEGIN --- костыль для arteva
$arOrder = getOrder($orderid);
$user_id = $arOrder["ACCOUNT_NUMBER"]; // вместо пользователя передаём номер заказа (не ID)
// --- END ---

$opts = array ("sum"=>$sum, "user_id"=>$user_id);
$payment_parameters = array("clientid"=>$user_id, "orderid"=>$orderid, "sum"=>$sum, "phone"=>$phone, "email"=>$email);
$query = http_build_query($payment_parameters);
$err_num = $err_text = NULL;

$form = QueryGetData($TMG_PK_SERVER_ADDR, 80, "/external/", $query, $err_num, $err_text);

if ($form  == "")
  $form = "<h3>Произошла ошибка при инциализации платежа</h3><p>$err_num: ".htmlspecialchars($err_text)."</p>";
Esempio n. 19
0
?>
<br>
<input type=hidden name=BillDescription value="Order &nbsp;<?php 
echo $ORDER_ID;
?>
&nbsp">
<input type=hidden name=BillSum value="<?php 
echo CSalePaySystemAction::GetParamValue("SHOULD_PAY");
?>
">
Сумма к оплате по счету: <?php 
echo SaleFormatCurrency(CSalePaySystemAction::GetParamValue("SHOULD_PAY"), CSalePaySystemAction::GetParamValue("CURRENCY"));
?>
<br>
<input type=hidden name=BillShopId value="<?php 
echo CSalePaySystemAction::GetParamValue("SHOP_ID");
?>
">
<input type=hidden name=BillDate value="<?php 
echo CSalePaySystemAction::GetParamValue("DATE_INSERT");
?>
">
<input type=hidden name=BillCurrency value="<?php 
echo CSalePaySystemAction::GetParamValue("CURRENCY") == "RUR" ? "руб." : "";
?>
">
<br>
<input type=submit name=sub value="Оплатить">
</font>
</form>
Esempio n. 20
0
    } else {
        qiwiWalletXmlResponse(QIWI_WALLET_ERROR_CODE_AUTH);
    }
}
list($orderId, $paymentId) = explode(':', $_POST['bill_id']);
/** @var \Bitrix\Sale\Order $order */
$order = Order::load($orderId);
if ($order) {
    $arOrder = $order->getFieldValues();
    $payment = $order->getPaymentCollection()->getItemById($paymentId);
    $paidInfo = array("PS_STATUS" => $_POST['status'] == "paid" ? "Y" : "N", "PS_STATUS_CODE" => substr($_POST['status'], 0, 5), "PS_STATUS_MESSAGE" => Loc::getMessage("SALE_QWH_STATUS_MESSAGE_" . strtoupper($_POST['status'])), "PS_RESPONSE_DATE" => \Bitrix\Main\Type\DateTime::createFromTimestamp(time()), "PS_SUM" => (double) $_POST['amount'], "PS_CURRENCY" => $_POST['ccy'], "PS_STATUS_DESCRIPTION" => "");
    if ((int) $_POST['error']) {
        $paidInfo['PS_STATUS_DESCRIPTION'] = "Error: " . Loc::getMessage("SALE_QWH_ERROR_CODE_" . $_POST['error']);
        $payment->setFields($paidInfo);
        qiwiWalletXmlResponse(QIWI_WALLET_ERROR_CODE_OTHER);
    }
    foreach ($_POST as $key => $value) {
        $paidInfo['PS_STATUS_DESCRIPTION'] .= "{$key}:{$value}, ";
    }
    $payment->setFields($paidInfo);
    $changeStatusPay = CSalePaySystemAction::GetParamValue("CHANGE_STATUS_PAY") == "Y";
    if ($_POST['status'] == "paid" && $changeStatusPay) {
        $resPayment = $payment->setField('PAID', 'Y');
        if ($resPayment->isSuccess()) {
            qiwiWalletXmlResponse(QIWI_WALLET_ERROR_CODE_NONE);
        }
    }
    $order->save();
} else {
    qiwiWalletXmlResponse(QIWI_WALLET_ERROR_CODE_NOT_FOUND);
}
Esempio n. 21
0
<?php

$bankHandler = new Ubrir(array('shopId' => CSalePaySystemAction::GetParamValue("ID"), 'order_id' => CSalePaySystemAction::GetParamValue("ORDER_ID"), 'sert' => CSalePaySystemAction::GetParamValue("SERT"), 'twpg_order_id' => $arOrder['PS_STATUS_DESCRIPTION'], 'twpg_session_id' => $arOrder['PS_STATUS_MESSAGE']));
if ($bankHandler->check_status("APPROVED")) {
    CSaleOrder::Update(CSalePaySystemAction::GetParamValue("ORDER_ID"), array("PAYED" => "Y"));
    CSaleOrder::StatusOrder(CSalePaySystemAction::GetParamValue("ORDER_ID"), "P");
    echo '<div class="ubr_s">Оплата успешно совершена</div>';
} else {
    echo '<div class="ubr_f">Неверный статус заказа</div>';
}
?>

Esempio n. 22
0
}
$this->setFramemode(false);
if (!CModule::IncludeModule("sale")) {
    ShowError(GetMessage("SALE_MODULE_NOT_INSTALL"));
    return;
}
if (!array_key_exists('PAY_SYSTEM_ID_NEW', $arParams)) {
    $newPsId = CSalePaySystem::getNewIdsFromOld($arParams["PAY_SYSTEM_ID"], $arParams["PERSON_TYPE_ID"]);
    $newPsId = current($newPsId);
} else {
    $newPsId = $arParams["PAY_SYSTEM_ID_NEW"];
}
$dbPaySysAction = CSalePaySystemAction::GetList(array(), array('ID' => $newPsId), false, false, array("ACTION_FILE", "PARAMS", "ENCODING"));
if ($arPaySysAction = $dbPaySysAction->Fetch()) {
    if (strlen($arPaySysAction["ACTION_FILE"]) > 0) {
        $GLOBALS["SALE_CORRESPONDENCE"] = CSalePaySystemAction::UnSerializeParams($arPaySysAction["PARAMS"]);
        $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
        if (!isset($GLOBALS["SALE_INPUT_PARAMS"])) {
            $GLOBALS["SALE_INPUT_PARAMS"] = array();
        }
        $pathToAction = str_replace("\\", "/", $pathToAction);
        while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
            $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
        }
        if (file_exists($pathToAction)) {
            if (is_dir($pathToAction)) {
                if (file_exists($pathToAction . "/result_rec.php")) {
                    include $pathToAction . "/result_rec.php";
                }
            }
        }
Esempio n. 23
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);
    }
}
Esempio n. 24
0
			}
			elseif (strlen($arPaySys["PSA_RESULT_FILE"]) > 0)
			{
				if (file_exists($_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"])
					&& is_file($_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"]))
					$psResultFile = $_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"];
			}

			if (strlen($psResultFile) <= 0)
				$errorMessageTmp .= GetMessage("SOD_NO_PS_SCRIPT").". ";
		}

		if (strlen($errorMessageTmp) <= 0)
		{
			$ORDER_ID = $ID;
			CSalePaySystemAction::InitParamArrays($arOrder, $ID, $arPaySys["PSA_PARAMS"]);
			if (!include($psResultFile))
				$errorMessageTmp .= GetMessage("ERROR_CONNECT_PAY_SYS").". ";
		}

		if (strlen($errorMessageTmp) <= 0)
		{
			$ORDER_ID = IntVal($ORDER_ID);
			$arOrder = CSaleOrder::GetByID($ORDER_ID);
			if (!$arOrder)
				$errorMessageTmp .= str_replace("#ID#", $ORDER_ID, GetMessage("SOD_NO_ORDER")).". ";
		}
		if (strlen($errorMessageTmp) <= 0)
		{
			if ($arOrder["PS_STATUS"] == "Y" && $arOrder["PAYED"] == "N")
			{
Esempio n. 25
0
        				"PS_SUM" => $AMT,
        				"PS_CURRENCY" => "USD",
        				"PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID))),
        				"USER_CARD_TYPE" => false,
        				"USER_CARD_NUM" => $cardnum,
        				"USER_CARD_EXP_MONTH" => $cardexp1,
        				"USER_CARD_EXP_YEAR" => "20".$cardexp2,
        				"USER_CARD_CODE" => $cvv2
        			);
        		$strPaySysError = "";
        */
    }
} else {
    $noc_def = CSalePaySystemAction::GetParamValue("NOC");
    $address1_def = CSalePaySystemAction::GetParamValue("ADDRESS");
    $zipcode_def = CSalePaySystemAction::GetParamValue("ZIP");
    ?>
	<table border="0" width="100%" cellpadding="2" cellspacing="2">
		<tr>
			<td align="right" class="tablebody" width="40%">
				<font class="tablebodytext">Credit Card Number</font>
			</td>
			<td class="tablebody" width="60%">
				<input class="inputtext" type="text" name="cardnum" value="<?php 
    echo htmlspecialcharsbx($_REQUEST["cardnum"]);
    ?>
" size="35">
			</td>
		</tr>
		<tr>
			<td align="right" class="tablebody" width="40%">
Esempio n. 26
0
 /**
  * Function gets pay system info from database, no cache is used here
  * @return void
  */
 protected function obtainDataPaySystem()
 {
     if (empty($this->dbResult["ID"])) {
         return;
     }
     foreach ($this->dbResult['PAYMENT'] as &$payment) {
         if (intval($payment["PAY_SYSTEM_ID"])) {
             $payment["PAY_SYSTEM"] = \Bitrix\Sale\PaySystem\Manager::getById($payment["PAY_SYSTEM_ID"]);
             $payment["PAY_SYSTEM"]['NAME'] = htmlspecialcharsbx($payment["PAY_SYSTEM"]['NAME']);
         }
         if ($payment["PAID"] != "Y" && $this->dbResult["CANCELED"] != "Y") {
             $payment['BUFFERED_OUTPUT'] = '';
             $payment['ERROR'] = '';
             $service = new \Bitrix\Sale\PaySystem\Service($payment["PAY_SYSTEM"]);
             if ($service) {
                 $payment["CAN_REPAY"] = "Y";
                 if ($service->getField("NEW_WINDOW") == "Y") {
                     $payment["PAY_SYSTEM"]["PSA_ACTION_FILE"] = htmlspecialcharsbx($this->arParams["PATH_TO_PAYMENT"]) . '?ORDER_ID=' . urlencode(urlencode($this->dbResult["ACCOUNT_NUMBER"])) . '&PAYMENT_ID=' . $payment['ID'];
                 } else {
                     CSalePaySystemAction::InitParamArrays($this->dbResult, $this->requestData["ID"], '', array(), $payment);
                     // for compatibility
                     $actionFile = $service->getField('ACTION_FILE');
                     $map = CSalePaySystemAction::getOldToNewHandlersMap();
                     $oldHandler = array_search($actionFile, $map);
                     if ($oldHandler !== false && !$service->isCustom()) {
                         $actionFile = $oldHandler;
                     }
                     $pathToAction = Main\Application::getDocumentRoot() . $actionFile;
                     $pathToAction = str_replace("\\", "/", $pathToAction);
                     while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
                         $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
                     }
                     if (file_exists($pathToAction)) {
                         if (is_dir($pathToAction) && file_exists($pathToAction . "/payment.php")) {
                             $pathToAction .= "/payment.php";
                         }
                         $payment["PAY_SYSTEM"]["PSA_ACTION_FILE"] = $pathToAction;
                     }
                     $encoding = $service->getField("ENCODING");
                     if (strlen($encoding) > 0) {
                         define("BX_SALE_ENCODING", $encoding);
                         AddEventHandler("main", "OnEndBufferContent", array($this, "changeBodyEncoding"));
                     }
                     /** @var \Bitrix\Sale\Order $order */
                     $order = \Bitrix\Sale\Order::load($this->dbResult["ID"]);
                     if ($order) {
                         /** @var \Bitrix\Sale\PaymentCollection $paymentCollection */
                         $paymentCollection = $order->getPaymentCollection();
                         if ($paymentCollection) {
                             /** @var \Bitrix\Sale\Payment $paymentItem */
                             $paymentItem = $paymentCollection->getItemById($payment['ID']);
                             if ($paymentItem) {
                                 $initResult = $service->initiatePay($paymentItem, null, \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING);
                                 if ($initResult->isSuccess()) {
                                     $payment['BUFFERED_OUTPUT'] = $initResult->getTemplate();
                                 } else {
                                     $payment['ERROR'] = implode('\\n', $initResult->getErrorMessages());
                                 }
                             }
                         }
                     }
                 }
                 $payment["PAY_SYSTEM"]["PSA_NEW_WINDOW"] = $payment["PAY_SYSTEM"]["NEW_WINDOW"];
             }
         }
     }
     unset($payment);
     // for compatibility
     $this->dbResult['PAY_SYSTEM'] = $this->dbResult['PAYMENT'][0]['PAY_SYSTEM'];
     $this->dbResult['CAN_REPAY'] = $this->dbResult['PAYMENT'][0]['CAN_REPAY'];
 }
Esempio n. 27
0
    ?>
			<font class="text" color="#009900"><b>
			Thank you for purchasing!<br>
			You have been billed <?php 
    echo SaleFormatCurrency($AMT, "USD");
    ?>
</b>
			</font>
			<?php 
} else {
    if (strlen($strErrorTmp) > 0) {
        echo "<font color=\"#FF0000\"><b>" . $strErrorTmp . "</b></font><br>";
    }
    $noc_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("NOC"));
    $address1_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("ADDRESS"));
    $zipcode_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("ZIP"));
    ?>
			<script type="text/javascript">
			function checkFields(frm)
			{
				if (frm.elements['cardnum'].value == '')
				{
					alert('Card number missing');
					return false;
				}
				if (frm.elements['cvv2'].value == '')
				{
					alert('CVV2 missing');
					return false;
				}
Esempio n. 28
0
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";
        }
    }
}
Esempio n. 29
0
?>
">
	<input type="hidden" name="user_email" value="<?php 
echo CSalePaySystemAction::GetParamValue("EMAIL");
?>
">
	<input type="hidden" name="successUrl" value="<?php 
echo CSalePaySystemAction::GetParamValue("SUCCESS_URL");
?>
">
	<input type="hidden" name="failUrl" value="<?php 
echo CSalePaySystemAction::GetParamValue("FAIL_URL");
?>
">
	<input type="hidden" name="userField_1" value="<?php 
echo CSalePaySystemAction::GetParamValue("USER_FIELD_1");
?>
">
	<input type="hidden" name="userField_2" value="<?php 
echo CSalePaySystemAction::GetParamValue("USER_FIELD_2");
?>
">
	<input type="hidden" name="userField_3" value="<?php 
echo CSalePaySystemAction::GetParamValue("USER_FIELD_3");
?>
">
	<input type="submit" value="<?php 
echo CSalePaySystemAction::GetParamValue("PAY_BUTTON");
?>
">
</form>
Esempio n. 30
0
    }
    $errorMessage .= $productLimit;
    $arResult["ERROR_MESSAGE"] = $errorMessage;
} else {
    $arResult["ORDER_BASKET"]["CONFIRM_ORDER"] = "Y";
    $arResult["ORDER_BASKET"]["ORDER_ID"] = intval($ORDER_ID);
    $arResult["ORDER_ID"] = intval($ORDER_ID);
    $dbOrder = CSaleOrder::GetList(array("DATE_UPDATE" => "DESC"), array("LID" => SITE_ID, "USER_ID" => $currentUserId, "ID" => $arResult["ORDER_BASKET"]["ORDER_ID"]));
    if ($arOrder = $dbOrder->GetNext()) {
        if (intval($arOrder["PAY_SYSTEM_ID"]) > 0) {
            $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $arOrder["PAY_SYSTEM_ID"], "PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"]), false, false, array("NAME", "ACTION_FILE", "NEW_WINDOW", "PARAMS", "ENCODING"));
            if ($arPaySysAction = $dbPaySysAction->Fetch()) {
                $arPaySysAction["NAME"] = htmlspecialcharsEx($arPaySysAction["NAME"]);
                if (strlen($arPaySysAction["ACTION_FILE"]) > 0) {
                    if ($arPaySysAction["NEW_WINDOW"] != "Y") {
                        CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"], $arPaySysAction["PARAMS"]);
                        $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
                        $pathToAction = str_replace("\\", "/", $pathToAction);
                        while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
                            $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
                        }
                        if (file_exists($pathToAction)) {
                            if (is_dir($pathToAction) && file_exists($pathToAction . "/payment.php")) {
                                $pathToAction .= "/payment.php";
                            }
                            $arPaySysAction["PATH_TO_ACTION"] = $pathToAction;
                        }
                        if (strlen($arPaySysAction["ENCODING"]) > 0) {
                            define("BX_SALE_ENCODING", $arPaySysAction["ENCODING"]);
                            AddEventHandler("main", "OnEndBufferContent", "ChangeEncoding");
                            function ChangeEncoding($content)