Как получить список доступных методов оплаты Bitrix/Sale?

Подскажите пожалуйста, как получить список доступных методов оплаты, зная ID типа плательщика и ID службы доставки ? Копаю в сторону PaySystem\Manager::getListWithRestrictions(), но заставить данный метод работать так и не смог, точнее он возвращает все методы оплаты в не зависимости от ID службы доставки.
CSalePaySystem::GetList() - не принимает||не знаю, создать условия по ID службы доставки.
Есть ли другие варианты как получить список платёжных систем с учётом "ограничений платежных систем" ?
  • Вопрос задан
  • 3611 просмотров
Пригласить эксперта
Ответы на вопрос 1
agsDevelopment
@agsDevelopment Автор вопроса
// Создаем заказ и привязываем корзину
$order = Order::create(SITE_ID, $USER_ID);
$order->setPersonTypeId($SOME_PERSON_TYPE_ID);
$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Bitrix\Main\Context::getCurrent()->getSite());
$price = $basket->getPrice();
$fullPrice = $basket->getBasePrice();
$order->setBasket($basket);

// Добавляем Доставку(Отгрузку?) 
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
    Bitrix\Sale\Delivery\Services\Manager::getObjectById($SOME_DELIVERY_TYPE_ID)
);
// Отгрузку наполняем товарами из корзины
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach ($basket as $basketItem) {
	$item = $shipmentItemCollection->createItem($basketItem);
	$item->setQuantity($basketItem->getQuantity());
}

// PAYMENT
$arPaySystemServiceAll = [];
$paymentCollection = $order->getPaymentCollection();
$extPayment = $paymentCollection->createItem();
$extPayment->setField("SUM", $order->getPrice());
$arPaySystemServiceAll = Sale\PaySystem\Manager::getListWithRestrictions($extPayment);	
reset($arPaySystemServiceAll);
$arPaySystem = current($arPaySystemServiceAll);
if(!empty($arPaySystem)) {
  $extPayment->setFields(array(
    "PAY_SYSTEM_ID" => $arPaySystem["ID"],
    "PAY_SYSTEM_NAME" => $arPaySystem["NAME"]
  ));
} else
  $extPayment->delete();

$arPaySystemServiceAll;


При изменение $SOME_DELIVERY_TYPE_ID массив $arPaySystemServiceAll изменяется в зависимости от типа доставки, НО НЕ ПРАВИЛЬНО! Не так как обусловлено в "Ограничения платежной системы". Код выполняется запросом AJAX. Что же тут не так ?!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы