const poscredit_loadedChElem = '.gcpay-widget-payment-methods-list'; let poscredit_isContainerLoad = false; let poscredit_checkInterval = null; let poscredit_attempts = 0; const poscredit_maxAttempts = 20; // Максимальное число проверок (10 секунд при интервале 500 мс) const poscredit_checkDelay = 500; // Интервал проверки (500 мс) function poscredit_load() { var service = document.createElement('script'); service.src = 'https://api.b2pos.ru/shop/v4/connect.js'; service.type = 'text/javascript'; service.charset = 'UTF-8'; document.documentElement.appendChild(service); var serviceCss = document.createElement('link'); serviceCss.href = "https://api.b2pos.ru/shop/citi/connect.css"; serviceCss.rel = "stylesheet"; document.documentElement.appendChild(serviceCss); } function poscredit_checkForElement() { // Предотвращаем дублирование интервалов if (poscredit_checkInterval) return; poscredit_checkInterval = setInterval(() => { const element = document.querySelector(poscredit_loadedChElem); if (element) { console.log('PosCredit Элемент найден!'); poscredit_load(); poscredit_injectPosBtn(); clearInterval(poscredit_checkInterval); poscredit_checkInterval = null; } else { poscredit_attempts++; console.log(`PosCredit Попытка ${poscredit_attempts}/${poscredit_maxAttempts} — элемент не найден`); if (poscredit_attempts >= poscredit_maxAttempts) { console.warn('PosCredit Лимит попыток исчерпан, останавливаем проверку'); clearInterval(poscredit_checkInterval); poscredit_checkInterval = null; } } }, poscredit_checkDelay); } function poscredit_getProductData() { let resultObj = {}; const priceElem = document.querySelector('.gcpay-widget .gcpay-widget-order-price'); if (priceElem) { resultObj['price'] = priceElem.innerText.replace(/[^+\d]/g, ''); } const orderElem = document.querySelector('.gcpay-widget .gcpay-widget-head h1 span'); if (orderElem) { resultObj['id'] = orderElem.innerText.replace(/[^+\d]/g, ''); resultObj['name'] = `Оплата заказа ${orderElem.innerText}`; } resultObj['count'] = 1; return [resultObj]; } function poscredit_callWidget() { const accessID = "311532"; const tradeID = "214624"; const productsList = poscredit_getProductData(); const posParams = { order: productsList[0]['id'], tradeID, products: productsList, creditType: 1, creditTermFrom: '6', creditTermTo: '36' }; poscreditServices('creditProcess', accessID, posParams, function (result) { if (result.success === false) { alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...'); } }); } function poscredit_injectPosBtn() { const btnTempl = ``; const prevElem = document.querySelector(poscredit_loadedChElem); if (prevElem) { prevElem.insertAdjacentHTML('beforeEnd', btnTempl); } } poscredit_checkForElement();