Такая проблема после перехода на php 8.2, кто знает в чем дело? Прошу помочь
Кстати ошибка при оформлении заказа.
Кстати ошибка при оформлении заказа.
Код |
---|
Fatal error: Declaration of MyPaySystemRestriction::extractParams(Bitrix\Sale\Payment $payment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) in /home/gotovo/fm.gotovo.site/local/php_interface/include/mypayrestriction.php on line 21 [ErrorException] E_COMPILE_ERROR Declaration of MyPaySystemRestriction::extractParams(Bitrix\Sale\Payment $payment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) (0) /home/gotovo/fm.gotovo.site/local/php_interface/include/mypayrestriction.php:21 |
В init.php
Код |
---|
Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'onSalePaySystemRestrictionsClassNamesBuildList', 'myPayFunction' ); function myPayFunction() { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array( '\MyPaySystemRestriction' => '/local/php_interface/include/mypayrestriction.php', ) ); } |
в mypayrestriction.php
Код |
---|
use \Bitrix\Sale\Services\Base; use \Bitrix\Sale\Internals\Entity; class MyPaySystemRestriction extends Base\Restriction { public static function getClassTitle() { return 'ограничение по наличию'; } public static function getClassDescription() { return 'оплата онлайн будет доступна только если товар в наличии'; } protected static function extractParams(Bitrix\Sale\Payment $payment) { $obBasket = \Bitrix\Sale\Basket::getList(array('filter' => array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "ORDER_ID" => "NULL"))); CModule::IncludeModule('iblock'); while($bItem = $obBasket->Fetch()){ $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_QUANTITY"); $mxResult = CCatalogSku::GetProductInfo($bItem["PRODUCT_ID"]); if (is_array($mxResult)) { $arFilter = Array("ID"=>$bItem["PRODUCT_ID"], "IBLOCK_ID"=>5);//Указываем ID инфоблока } else { $arFilter = Array("ID"=>$bItem["PRODUCT_ID"], "IBLOCK_ID"=>4);//Указываем ID инфоблока } $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, Array("nPageSize"=>1), $arSelect); while($ob = $res->GetNextElement()){ if ($ob->GetFields()["CATALOG_QUANTITY"] <= 0) { $arFields = true; break; } } } $nal = true; if ($arFields) { $nal = false; } return $nal; } public static function check($nalich, array $restrictionParams, $PaySystemId = 1) { if (!$nalich) { if ($restrictionParams["MY_PARAM_CHECKBOX"] == 'Y') { return false; } } else { if ($restrictionParams["MY_PARAM_CHECKBOX"] == 'N') { return false; } } return true; } public static function getParamsStructure($entityId = 0) { return array( "MY_PARAM_CHECKBOX" => array( 'TYPE' => 'Y/N', 'VALUE' => 'Y', 'LABEL' => 'Наличие да / нет' ) ); } } |