Стоит задача подключить дополнительные пункты отгрузки товара. У нас есть центральный магазин (склад 1) и еще несколько магазинов (склад 2, склад 3, склад 4). Везде разные ИП. Необходимо чтобы при выборе определенного склада подставлялся эквайринг данного ИП. Например: отгрузка со "склада 2", прием средств на эквайринг "ИП 2"
Реализовать это все решил через ограничение платежных систем.
Надо создать ограничение: использовать эквайринг ИП 2 если выбран склад отгрузки 2, и т.п.
но при переделки под себя вылазят ошибки и не получается переделать нужна помощь
взял за основу ограничение для служб доставки проверяет наличие товара на определенном складе при оформлении корзины
вод код:
перехват событий в init.php пропустим, там все хорошо непосредственно
Код
use Bitrix\Sale\Payment;
use \Bitrix\Sale\Shipment;
\Bitrix\Main\Loader::includeModule('highloadblock');
/**
* Class checkDeliveryStore
* Проверка на наличие остатов на складе
*/
class checkDeliveryStorePay extends Restrictions\Base
{
public static $easeSort = 100;
public static function getClassTitle()
{
return 'по наличию на складе';
}
public static function getClassDescription()
{
return 'Будет произведена проверка оформляемой корзины на наличие товаров на выбранном складе.';
}
Ругается на аргументы функции extractParams()/ Ниже не полный тект ошибки
[TypeError] Argument 1 passed to checkDeliveryStorePay::extractParams() must be an instance of Bitrix\Sale\Shipment, instance of Bitrix\Sale\Payment given...
Информация по кастомным ограничениям очень скудная. Попробуем разобрать класс ограничения на составляющие:
public static function getClassTitle() - задает Название (Титл) ограничения public static function getClassDescription() - задает текстовое описание ограничения public static function getParamsStructure() - формирует данные, которые будут показаны в окошке настройке ограничения public static function check() - выполняет непосредственно проверку на выполнение ограничения protected static function extractParams() - выдергивает параметры из корзины, которые потом будут проверятся в функции Chek()
А вы не пробовали перевести ошибку хотя бы переводчиком? У вас аргумент функции extractParams обьявлен Bitrix\Sale\Shipment, а скрипт ему присылает Bitrix\Sale\Payment.
Должно работать так protected static function extractParams(\Bitrix\Sale\Payment $payment)
В вашем примере реализовано ограничение для службы доставки, там другие параметры передаются в функцию