Обучаю битриксу программистов, интеграторов

pdf файл из base64 закодированной строки добавляем в инфоблок

Задача:
pdf-файлик из base64 закодированной строки  в элемент инфоблока зафигачить, чтобы потом в ЛК выводить

для битрикс24 rest api добавить файл описано тут

Итак, есть вот такой ответ  $res
array(2) {
  ["filename"]=>
  string(22) "invoice_BI53154847.pdf"
  ["data"]=>
  string(34231) "application/pdf;base64,JVBERi0xLjQKMSAwIG9ia...тут_дальше_еще_закодированная строка"
}
это сохраняет в физический файл
$pdf_b64 = base64_decode(substr($res["data"],strlen("application/pdf;base64")));
$rute =  $_SERVER["DOCUMENT_ROOT"]."/upload/invoices_pdf/".$res["filename"];
file_put_contents($rute, $pdf_b64);

а это агент, который проходит по всем заказам и подтягивает в инфоблоки счет-фактуры (инвойсы)
function SaveOrderInvoice($lastOrderId){    
    $res = "";
    if(!empty($lastOrderId)) {
        $arFilter = [
            "PAY_SYSTEM_ID" => 12,
            "PAYED" => "Y",
            "<ID" => $lastOrderId
        ];
        $arSelect = [
            "ID"

        ];
        $rsOrder = CSaleOrder::GetList(["ID" => "desc"], $arFilter, false, array('nPageSize' => 10), $arSelect);

        $el = new CIBlockElement;
        while ($arOrder = $rsOrder->Fetch()) {
            $orderId = $arOrder["ID"];
            $order = Bitrix\Sale\Order::load($orderId);
            $properties = $order->getPropertyCollection();
            $property = $properties->getItemByOrderPropertyCode("ExternalOrderID");
            if (!empty($property)) {
                $checkoutOrderId = $property->getValue();
                if(!empty($checkoutOrderId)){
                    $checkout = new nikaverro\dev\rest\TwoCheckout();
                    $checkout->setUrl("/invoices/".$checkoutOrderId."/");
                    $checkout->send();

                    $res = $checkout->getResult();
                    if(!empty($res["data"]) && CModule::IncludeModule("iblock")){
                        $pdf_b64 = base64_decode(substr($res["data"],strlen("application/pdf;base64")));
                        $rute =  $_SERVER["DOCUMENT_ROOT"]."/upload/invoices_pdf/".$res["filename"];
                        file_put_contents($rute, $pdf_b64);

                        $props = [
                            724 => CFile::MakeFileArray($rute),
                            725 => $orderId,
                            726 => $checkoutOrderId
                        ];
                        $arLoadProductArray = Array(

                            "IBLOCK_ID"      => 159,
                            "PROPERTY_VALUES"=> $props,
                            "NAME"           => "Чек по заказу ".$orderId
                        );
                        $el->Add($arLoadProductArray);
                    }
                }

            }
            $res = "SaveOrderInvoice(".$orderId.");";

        }


    }
    return $res;

}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!