21.11.2022
15:35
21.11.2022 15:35:29
дано ответ $res
array(2) {
["filename"]=>
string(22) "invoice_BI53154847.pdf"
["data"]=>
string(34231) "application/pdf;base64,JVBERi0xLjQKMSAwIG9ia...тут_дальше_еще_закодированная строка"
} |
Задача: pdf-файлик из base64 закодированной строки в элемент инфоблока зафигачить, чтобы потом в ЛК выводить |
это сохраняет в физический файл
$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;
} |
21.11.202215:3521.11.2022 15:35:29