Получение ссылки на оплату при создании заказа через API Bitrix


Пример получения ссылки на оплату напрямую через API Битрикса (PHP), по ID заказа, обработчик на примере эквайринга от Тинькофф, проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687)

<?php 

\Bitrix\Main\Loader::includeModule("sale");

$order = \Bitrix\Sale\Order::load(1); // ID заказа

$paymentLink = false;
$paymentCollection = $order->getPaymentCollection();

foreach($paymentCollection as $payment) {

    $paySystemService = \Bitrix\Sale\PaySystem\Manager::getObjectById($payment->getPaymentSystemId());

    if (!empty($paySystemService)) {
        $arPaySysAction = $paySystemService->getFieldsValues();
        if ($paySystemService->getField('NEW_WINDOW') === 'N' || $paySystemService->getField('ID') == \Bitrix\Sale\PaySystem\Manager::getInnerPaySystemId()) {
            $initResult = $paySystemService->initiatePay($payment, null, \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING);
            if ($initResult->isSuccess()) {
                $arPaySysAction['BUFFERED_OUTPUT'] = $initResult->getTemplate();
                preg_match('/<FORM[^>]+ACTION="([^"]+)"[^>]*>/i', $arPaySysAction['BUFFERED_OUTPUT'], $matches); // регулярным выражением получаем ссылку из сгенерированной формы
                $paymentLink = $matches[1];
				print($arPaySysAction['BUFFERED_OUTPUT']);
				print($paymentLink);
            } else
				print_r($initResult->getErrorMessages());
            }
    }
}