Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В result приходит значение false (https://javascript.ru/forum/misc/74639-v-result-prikhodit-znachenie-false.html)

_marisha 26.07.2018 08:05

В result приходит значение false
 
Вложений: 1
Доброго времени суток!
Необходимо произвести интеграцию сайта с банком для покупки в кредит.
Есть мануал https://api.b2otp.ru/shop/manual/:
1) Перед заполнением заявки на кредит вы можете добавить на ваш сайт предварительный расчет параметров с помощью кредитного калькулятора
var productsList = new Array();
productsList[0] = { id: productArticle[0], name: productName[0], category: productCategory[0], price: productPrice[0], count: productCount[0] };
productsList[1] = { id: productArticle[1], name: productName[1], category: productCategory[1], price: productPrice[1], count: productCount[1] };
...
productsList[i] = { id: productArticle[i], name: productName[i], category: productCategory[i], price: productPrice[i], count: productCount[i] };

Т.к. кнопка "В кредит" добавляется в карточку товара, то необходимо получить информацию об одном товаре. Получаем:
var accessID = "9212";
var ProductList = new Array();
ProductList[0] = {
id:'<?=$arResult['ID']?>',
name:'<?=$arResult['PROPERTIES']['NAZVANIE_DLYA_SAYTA']['VALUE']?>',
category:'<?=$arResult['PROPERTIES']['PROIZVODITEL']['VALUE']?>',
price:'<?=$arResult['PRICES']['Розничная']['DISCOUNT_VALUE']?>'
};

2) После формирования массива данных с товарами можно вызывать функцию инициализации формы расчета параметров по кредиту
poscreditServices('paymentCalculation', accessID, { products: productsList }, function(result){
     if(result.success === false){
          alert('Произошла ошибка запуска калькулятора. Попробуйте позднее...'); //Как возможный пример
     }
});

Делаем:
function want_credit() {
poscreditServices('paymentCalculation', accessID, { products: ProductList }, function(result){
 if(result.success === false){
alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...');
}
});
}

Функцию вызываем при клике на кнопку "В кредит":
<div class="form-group">
<button type="submit" onclick="want_credit();return false;" name="submitIdentity" style="background: #0a51ae;">
<span><?=GetMessage("LIKEE_ESTORE_KUPITQ_V_CREDIT")?></span>
</button>
</div>

Но при нажатии на кнопку "В кредит" отображается предупреждение alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...').
В консоли браузера в result приходит false (скрин 2).
Подскажите, пожалуйста, с чем может быть связана данная проблема? Спасибо.

_marisha 26.07.2018 10:24

Вложений: 2
Rise, ошибок связанных с новым кодом нет.
Есть только ошибка "message undefined: COMPARE_LIST" (скрин 5). Но ошибка была и до этого кода.
На всякий случай вкладка "Network" (скрин 4)

_marisha 26.07.2018 11:02

Вложений: 2
Если выполнить
poscreditServices('paymentCalculation', accessID, {products: ProductList});
, тогда алерт не выскакивает, но форма всё равно не подгружается (скрин 7)
Так выглядит результат в консоли(скрин 6)

_marisha 26.07.2018 11:24

Rise, Вы имеете ввиду выполнить
poscreditServices('paymentCalculation', accessID, { products: ProductList }, function(result){
                                                if(result.success === false){
                                                    alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...');
                                                }
                                            });
?
Если да, то в таком случае алерт выводится.

_marisha 26.07.2018 11:59

Rise, доступ верный, ТП подтвердила данные.
Не знаю насколько это важно, но по мануалу цена должна быть FLOAT - можно убрать кавычки и при проверке через
var_dump($arResult['PRICES']['Розничная']['DISCOUNT_VALUE'])
тип float. После этого ошибка сохраняется.
Если через var_dump сделать:
$arResult['ID'] - тип int
$arResult['PROPERTIES']['NAZVANIE_DLYA_SAYTA']['VALUE'] - string
$arResult['PROPERTIES']['PROIZVODITEL']['VALUE'] - string
$arResult['PRICES']['Розничная']['DISCOUNT_VALUE'] - float

_marisha 27.07.2018 08:38

Rise, ТП доступы подтвердила.
Они прислали пример своего кода, но в нем используется другой метод (который чуть ниже в мануале).
Отвечаю им, что сделано по аналогии, но ошибка. Молчат...
Код, который прислали:
<script src="../../($Inbox)/shop/connect.js" charset="utf-8" type="text/javascript"></script>
<script>
var accessID = "88";
var productsList = new Array();
<?
$count_now = 0;
foreach($_SESSION['cart']['products'] as $product) {
for($i=0;$i<$product['quantity'];$i++) {
?>
productsList[<?=$count_now?>] = { id: '308043572', name: 'Meizu M1 <?=$product['attributes']?>', category: '308043572', price: '<?=$product['price_float']?>' };
<?
$count_now++;
}
}
?>
function want_credit() {
poscreditServices('creditProcess', accessID, { order: '<?=$orderId?>', products: productsList, phone: '', creditType: '0', creditTermFrom: '8', creditTermTo: '24', creditFirstPaymentFrom: '0', creditFirstPaymentTo: '50' }, function(result){
if(result.success === false){
  alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...');
}
});
}
</script>

--- Кнопка вызова
<div class="form-group">
<button type="submit" onclick="want_credit();return false;" name="submitIdentity" class="btn btn-default btn-md icon-right">
<span>Оформить заявку на кредит</span>
</button>
</div>

_marisha 31.07.2018 07:24

Вложений: 1
Rise, в общем, как оказалось, это проблема со стороны банка.
После того, как ТП написали "Поправили настройки со своей стороны", по нажатию на кнопку стала загружаться форма расчета кредита (скрин 8)


Часовой пояс GMT +3, время: 09:07.