static function DoProcessOrder(&$arOrder, $paySystemId, &$arErrors) { if (intval($paySystemId) > 0) { $arPaySystem = array(); $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC", "PSA_NAME" => "ASC"), array("ACTIVE" => "Y", "PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "PSA_HAVE_PAYMENT" => "Y")); while ($arPaySystem = $dbPaySystem->Fetch()) { if ($arPaySystem["ID"] == $paySystemId) { $arOrder["PAY_SYSTEM_ID"] = $paySystemId; $arOrder["PAY_SYSTEM_PRICE"] = CSalePaySystemsHelper::getPSPrice($arPaySystem, $arOrder["ORDER_PRICE"], $arOrder["PRICE_DELIVERY"], $arOrder["DELIVERY_LOCATION"]); break; } } if (empty($arPaySystem)) { $arErrors[] = array("CODE" => "CALCULATE", "TEXT" => GetMessage('SKGPS_PS_NOT_FOUND')); } } }
$dbPaySystem = CSalePaySystem::GetList( array("SORT" => "ASC", "PSA_NAME" => "ASC"), array( "ACTIVE" => "Y", "PERSON_TYPE_ID" => $str_PERSON_TYPE_ID, "PSA_HAVE_PAYMENT" => "Y" ) ); while ($arPaySystem = $dbPaySystem->Fetch()) { if ($arPaySystem["ID"] == $str_PAY_SYSTEM_ID) { $paySystemPrice = CSalePaySystemsHelper::getPSPrice( $arPaySystem, $tmpOrderPrice, $arDeliveryOrder["DELIVERY_DEFAULT_PRICE"], $locationID ); } } } $pricePay = SaleFormatCurrency(roundEx($paySystemPrice, SALE_VALUE_PRECISION), $str_CURRENCY); } $hidden = (filter_var($pricePay, FILTER_SANITIZE_NUMBER_INT) != "" && filter_var($pricePay, FILTER_SANITIZE_NUMBER_INT) != "0") ? "" : "style=\"display:none\""; ?> <tr id="PAY_SYSTEM_PRICE_BLOCK" <?php echo $hidden; ?> >
if ($arResult["PAY_SYSTEM"]["NEW_WINDOW"] == "Y") { ?> <script language="JavaScript"> window.open('<?php echo $arParams["PATH_TO_PAYMENT"]; ?> ?ORDER_ID=<?php echo urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])); ?> '); </script> <?php echo GetMessage("SOA_TEMPL_PAY_LINK", array("#LINK#" => $arParams["PATH_TO_PAYMENT"] . "?ORDER_ID=" . urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])))); ?> <?php if (CSalePdf::isPdfAvailable() && CSalePaySystemsHelper::isPSActionAffordPdf($arResult['PAY_SYSTEM']['ACTION_FILE'])) { ?> <br /> <?php echo GetMessage("SOA_TEMPL_PAY_PDF", array("#LINK#" => $arParams["PATH_TO_PAYMENT"] . "?ORDER_ID=" . urlencode(urlencode($arResult["ORDER"]["ACCOUNT_NUMBER"])) . "&pdf=1&DOWNLOAD=Y")); ?> <?php } } else { if (strlen($arResult["PAY_SYSTEM"]["PATH_TO_ACTION"]) > 0) { include $arResult["PAY_SYSTEM"]["PATH_TO_ACTION"]; } } ?> </td> </tr>
} $bFirst = True; $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC", "PSA_NAME" => "ASC"), $arFilter); while ($arPaySystem = $dbPaySystem->Fetch()) { //if (count($arD2P[$delivery]) <= 0 || in_array($arPaySystem["ID"], $arD2P[$delivery])) //{ if (strlen($arUserResult["DELIVERY_ID"]) <= 0 || $arParams["DELIVERY_TO_PAYSYSTEM"] == "p2d" || CSaleDelivery2PaySystem::isPaySystemApplicable($arPaySystem["ID"], $arUserResult["DELIVERY_ID"])) { if (!CSalePaySystemsHelper::checkPSCompability($arPaySystem["PSA_ACTION_FILE"], $arOrder, $arResult["ORDER_PRICE"], $arResult["DELIVERY_PRICE"], $arUserResult["DELIVERY_LOCATION"])) { continue; } if ($arPaySystem["PSA_LOGOTIP"] > 0) { $arPaySystem["PSA_LOGOTIP"] = CFile::GetFileArray($arPaySystem["PSA_LOGOTIP"]); } $arPaySystem["PSA_NAME"] = htmlspecialcharsEx($arPaySystem["PSA_NAME"]); $arResult["PAY_SYSTEM"][$arPaySystem["ID"]] = $arPaySystem; $arResult["PAY_SYSTEM"][$arPaySystem["ID"]]["PRICE"] = CSalePaySystemsHelper::getPSPrice($arPaySystem, $arResult["ORDER_PRICE"], $arResult["DELIVERY_PRICE"], $arUserResult["DELIVERY_LOCATION"]); if (IntVal($arUserResult["PAY_SYSTEM_ID"]) == IntVal($arPaySystem["ID"]) || IntVal($arUserResult["PAY_SYSTEM_ID"]) <= 0 && $bFirst) { //$arPaySystem["CHECKED"] = "Y"; $arResult["PAY_SYSTEM"][$arPaySystem["ID"]]["CHECKED"] = "Y"; $arUserResult["PAY_SYSTEM_ID"] = $arPaySystem["ID"]; } $bFirst = false; } } if (IntVal($arUserResult["PAY_SYSTEM_ID"]) > 0 && empty($arResult["PAY_SYSTEM"][$arUserResult["PAY_SYSTEM_ID"]])) { $bF = true; foreach ($arResult["PAY_SYSTEM"] as $k => $v) { if ($bF) { $arResult["PAY_SYSTEM"][$k]["CHECKED"] = "Y"; $arUserResult["PAY_SYSTEM_ID"] = $arResult["PAY_SYSTEM"][$k]["ID"]; $bF = false;
$row->AddField("DESCRIPTION", $f_DESCRIPTION); $pTypes = ''; $aFiles = ''; $dbPSAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $f_ID), false, false, array("PERSON_TYPE_ID", "ACTION_FILE")); while ($arPSAction = $dbPSAction->Fetch()) { if (isset($arPersonTypeList[$arPSAction["PERSON_TYPE_ID"]])) { $pTypes .= "<div>" . $arPersonTypeList[$arPSAction["PERSON_TYPE_ID"]] . "</div>"; } $psActFilename = $_SERVER["DOCUMENT_ROOT"] . $arPSAction["ACTION_FILE"]; $psActTitle = ""; $psActName = ""; if (is_dir($psActFilename)) { $psActTitle = CSalePaySystemsHelper::getPSActionTitle($psActFilename . "/.description.php"); $psActName = substr(strrchr($psActFilename, '/'), 1); } elseif (is_file($psActFilename)) { $psActTitle = CSalePaySystemsHelper::getPSActionTitle_old($psActFilename); $psActName = $arPSAction["ACTION_FILE"]; } if (strlen($psActTitle) <= 0) { $psActTitle = $psActName; } else { $psActTitle .= " (" . $psActName . ")"; } $aFiles .= "<div>" . $psActTitle . "</div>"; } $row->AddField("PERSON_TYPES", $pTypes); $row->AddField("ACTION_FILES", $aFiles); $arActions = array(array("ICON" => "edit", "TEXT" => GetMessage("SALE_EDIT"), "TITLE" => GetMessage("SALE_EDIT_DESCR"), "ACTION" => $lAdmin->ActionRedirect("sale_pay_system_edit.php?ID=" . $f_ID . "&lang=" . LANG), "DEFAULT" => true)); if ($saleModulePermissions >= "W") { $arActions[] = array("SEPARATOR" => true); $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("SALE_DELETE"), "TITLE" => GetMessage("SALE_DELETE_DESCR"), "ACTION" => "if(confirm('" . GetMessage('SALE_CONFIRM_DEL_MESSAGE') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete"));
$res .= '<td>' . GetMessage("SPSG_TYPE") . '</td>\\n'; $res .= '<td><select name="TYPE_' . $key . '_' . $divInd . '" id="TYPE_' . $key . '_' . $divInd . '" OnChange="PropertyTypeChange(\'' . $key . '\', ' . $divInd . ')">\\n'; $res .= '<option value="">' . GetMessage("SPSG_OTHER") . '</option>\\n'; $res .= '<option value="USER">' . GetMessage("SPSG_FROM_USER") . '</option>\\n'; $res .= '<option value="ORDER">' . GetMessage("SPSG_FROM_ORDER") . '</option>\\n'; $res .= '<option value="PROPERTY">' . GetMessage("SPSG_FROM_PROPS") . '</option>\\n'; $res .= '</select></td></tr>\\n'; $res .= '<tr><td>' . GetMessage("SPSG_VALUE") . '</td>\\n'; $res .= '<td><select name="VALUE1_' . $key . '_' . $divInd . '" id="VALUE1_' . $key . '_' . $divInd . '" style="display: none;">\\n'; $res .= '</select>\\n'; $res .= '<input type="text" name="VALUE2_' . $key . '_' . $divInd . '" id="VALUE2_' . $key . '_' . $divInd . '" size="40">\\n'; $res .= '</td></tr></table>\\n'; $res .= '</td></tr>\\n'; } } $arTarif = CSalePaySystemsHelper::getPaySystemTarif(($bUserPSFile ? $path2UserPSFiles : $path2SystemPSFiles) . $fileName, $_REQUEST["psid"], $divInd); if (is_array($arTarif) && !empty($arTarif)) { $res .= '<tr class="heading"><td align="center" colspan="2">' . GetMessage('SPSG_TARIFS') . '</td></tr>'; $arMultiControlQuery = array(); foreach ($arTarif as $fieldId => $arField) { if (!empty($arMultiControlQuery) && (!isset($arField['MCS_ID']) || !array_key_exists($arField['MCS_ID'], $arMultiControlQuery))) { $res .= CSaleHelper::getAdminMultilineControl($arMultiControlQuery); $arMultiControlQuery = array(); } $controlHtml = CSaleHelper::getAdminHtml($fieldId, $arField, 'TARIF_' . $divInd, 'pay_sys_form'); if ($arField["TYPE"] == 'MULTI_CONTROL_STRING') { $arMultiControlQuery[$arField['MCS_ID']]['CONFIG'] = $arField; continue; } elseif (isset($arField['MCS_ID'])) { $arMultiControlQuery[$arField['MCS_ID']]['ITEMS'][] = $controlHtml; continue;
if (\Bitrix\Main\IO\File::isFileExists($documentRoot . $actionFile . "/payment.php")) { $fields["HAVE_PAYMENT"] = "Y"; } if (\Bitrix\Main\IO\File::isFileExists($documentRoot . $actionFile . "/result_rec.php")) { $fields["HAVE_RESULT_RECEIVE"] = "Y"; } } if ($request->get('TARIF') !== null) { if ($path !== null) { if (\Bitrix\Main\IO\File::isFileExists($documentRoot . $path . '/handler.php')) { require_once $documentRoot . $path . '/handler.php'; $className = PaySystem\Manager::getClassNameFromPath($actionFile); $fields["TARIF"] = $className::prepareToField($request->get('TARIF')); } } else { $fields["TARIF"] = CSalePaySystemsHelper::prepareTarifForSaving($actionFile, $request->get('TARIF')); } } $isConsumerChange = $request->get('ACTION_FILE') != $request->get('PRIOR_ACTION_FILE'); $file = $request->getFile('LOGOTIP'); if ($file !== null && $file["error"] == 0) { $imageFileError = CFile::CheckImageFile($file); if ($imageFileError === null) { $fields['LOGOTIP'] = $file; $fields['LOGOTIP']['del'] = trim($request->get("LOGOTIP_del")); $fields['LOGOTIP']['MODULE_ID'] = "sale"; CFile::SaveForDB($fields, 'LOGOTIP', 'sale/paysystem/logotip'); } else { $errorMessage .= $imageFileError . '.<br>'; } } elseif ($request->get("LOGOTIP_del") !== null && $request->get("LOGOTIP_del") == 'Y') {
public function getPaysystems($deliveryId = null) { if (empty($deliveryId)) { $deliveryId = $this->deliveryId; } if (empty($deliveryId)) { throw new \Exception('Для получения способов оплаты нужно указать службу доставки'); } $paySystems = array(); $paySystemFilter = array('ACTIVE' => 'Y', 'PERSON_TYPE_ID' => 1, 'PSA_HAVE_PAYMENT' => 'Y'); $res = \CSalePaySystem::GetList(array("SORT" => "ASC", "PSA_NAME" => "ASC"), $paySystemFilter); while ($paySystem = $res->Fetch()) { if (!\CSaleDelivery2PaySystem::isPaySystemApplicable($paySystem['ID'], $deliveryId)) { continue; } $check = \CSalePaySystemsHelper::checkPSCompability($paySystem['PSA_ACTION_FILE'], $this->getItemsRaw(), $this->getTotal(), $this->deliveryPrice, $this->location); if (!$check) { continue; } $paySystem['PRICE'] = \CSalePaySystemsHelper::getPSPrice($paySystem, $this->getTotal(), $this->deliveryPrice, $this->location); $paySystems[] = $paySystem; } return $paySystems; }
} elseif ($actionID <= 0) { $logo = ""; if (file_exists($_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.png")) { $logo = $_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.png"; } elseif (file_exists($_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.jpg")) { $logo = $_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.jpg"; } elseif (file_exists($_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.gif")) { $logo = $_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]} . "/logo.gif"; } $arPicture = CFile::MakeFileArray($logo); } $arPicture["old_file"] = $arPSAction["LOGOTIP"]; $arPicture["del"] = trim($_POST["LOGOTIP_" . $arPersonType["ID"] . "_del"]); $arFields = array("PAY_SYSTEM_ID" => $ID, "PERSON_TYPE_ID" => $arPersonType["ID"], "NAME" => ${"NAME_" . $arPersonType["ID"]}, "ACTION_FILE" => ${"ACTION_FILE_" . $arPersonType["ID"]}, "NEW_WINDOW" => ${"NEW_WINDOW_" . $arPersonType["ID"]} == "Y" ? "Y" : "N", "PARAMS" => CSalePaySystemAction::SerializeParams($arParams), "HAVE_PREPAY" => "N", "HAVE_RESULT" => "N", "HAVE_ACTION" => "N", "HAVE_PAYMENT" => "N", "HAVE_RESULT_RECEIVE" => "N", "ENCODING" => trim(${"ENCODING_" . $arPersonType["ID"]}), "LOGOTIP" => $arPicture); if (!empty($arTarif) && is_array($arTarif)) { $arFields["TARIF"] = CSalePaySystemsHelper::prepareTarifForSaving($arFields["ACTION_FILE"], $arTarif); } $pathToAction = $_SERVER["DOCUMENT_ROOT"] . ${"ACTION_FILE_" . $arPersonType["ID"]}; $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 . "/pre_payment.php")) { $arFields["HAVE_PREPAY"] = "Y"; } if (file_exists($pathToAction . "/result.php")) { $arFields["HAVE_RESULT"] = "Y"; } if (file_exists($pathToAction . "/action.php")) {