Это неправильно, т.к. некоторые обработчика генерируют кнопку Оплатить. Например стандартный яндекс.деньги: http://joxi.ru/1A5pDdZuKb4Q62 Подобное нужно выводить в дизайне сайта, а не непоймикак.
Тех. поддержка битрикса говорит что не знает почему так сделано и отказывается что-либо исправлять или дать решение.
Нужно либо исправить это чтобы компонент или параметр имел Не сбрасывать буфер или как-то иначе обработчики внедрять в этом компоненте - чтобы сразу была переадресация.
P.S. понятно что можно сделать свой компонент, но ведь из коробки это тоже адекватно должно работать
Согласен, например "киви" требует заполненное поле телефон. Но это можно обойти заранее его заполнив. Приходится каждую платежную систему проверять и подстраиваться под неё. Но за то не трогаем компоненты. А так да, очень хотелось бы увидеть похожий функционал в коробке.
Добавляем скрипт
И получаем автоматическую отправку на систему оплаты.
но не все обработчики делают кнопку - тут не угадаешь
Тут уже кастомизируем компонент. ob_*() нам в помощь.
Если что то пошло не так, пользователь это увидит. Если нет - сразу редирект на систему оплаты.
размещать код отображения платежки через d7
use \Bitrix\Sale;
$orderObj = Sale\Order::load($_REQUEST['ORDER_ID']);
$paymentCollection = $orderObj->getPaymentCollection();
$payment = $paymentCollection[0];
$service = Sale\PaySystem\Manager::getObjectById($payment->getPaymentSystemId());
$context = \Bitrix\Main\Application::getInstance()->getContext();
$service->initiatePay($payment, $context->getRequest());