Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2018, 08:05
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

В result приходит значение false
Доброго времени суток!
Необходимо произвести интеграцию сайта с банком для покупки в кредит.
Есть мануал 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).
Подскажите, пожалуйста, с чем может быть связана данная проблема? Спасибо.
Изображения:
Тип файла: jpg 2.jpg (54.8 Кб, 8 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2018, 10:24
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Rise, ошибок связанных с новым кодом нет.
Есть только ошибка "message undefined: COMPARE_LIST" (скрин 5). Но ошибка была и до этого кода.
На всякий случай вкладка "Network" (скрин 4)
Изображения:
Тип файла: jpg 4.jpg (71.8 Кб, 4 просмотров)
Тип файла: jpg 5.jpg (57.9 Кб, 5 просмотров)
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2018, 11:02
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Если выполнить
poscreditServices('paymentCalculation', accessID, {products: ProductList});
, тогда алерт не выскакивает, но форма всё равно не подгружается (скрин 7)
Так выглядит результат в консоли(скрин 6)
Изображения:
Тип файла: jpg 6.jpg (82.4 Кб, 3 просмотров)
Тип файла: jpg 7.jpg (20.8 Кб, 4 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2018, 11:24
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Rise, Вы имеете ввиду выполнить
poscreditServices('paymentCalculation', accessID, { products: ProductList }, function(result){
                                                if(result.success === false){
                                                    alert('Произошла ошибка при попытке оформить кредит. Попробуйте позднее...');
                                                }
                                            });
?
Если да, то в таком случае алерт выводится.
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2018, 11:59
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

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
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2018, 08:38
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

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>
Ответить с цитированием
  #7 (permalink)  
Старый 31.07.2018, 07:24
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос об исправлении ENOENT на локальном соединении c MySQL (с node-mysql) noomnau Node.JS 3 12.04.2017 09:49
Jquery validation если заполнено одно из полей Nikita21 jQuery 6 13.10.2016 13:37
Как передать значение в функцию в переменную с нужным именем? bratkovsky Общие вопросы Javascript 1 12.10.2015 08:18
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Функция не возвращает false, почему? Vitaly jQuery 3 05.07.2009 16:05