Пример получения ссылки на оплату напрямую через 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());
}
}
}