Интеграция на сайт кнопки Купить в кредит от Сбербанк
Друзья привет! По мере привыкания посетителей интернет-магазинов(ИМ) к такой функции как покупка в кредит онлайн, все более популярнее становятся такие сервисы как — купить в кредит от Сбербанка. Данная функция, сервис, представляет собой кнопку, размещенную на странице товара или в корзине вашего сайта, по нажатии на которую покупатель перенаправляется на страницу заявки на оформления покупки в кредит, при этом в заявку автоматом передаются данные о товарах которые он хочет приобрести. Весь процесс занимает всего несколько минут и состоит из пары шагов. Далее я расскажу об опыте интеграции функции покупки в кредит от Сбербанка на сайт интернет-магазина, который был сделан с помощью конструктора BMShop.
Принцип работы
Для того, чтобы добавить на сайт функцию покупки в кредит от Сбербанка, нужно разместить на страницах сайта кнопку, при нажатии на которую на удаленный сервер Сбербанка будет автоматически, по средствам Ajax, отправлен запрос с передачей данных о товарах, покупателе(если нужно), и параметрах кредитования(заранее настроенных в скрипте), после чего в ответ будет получена ссылка по которой нужно будет автоматически перенаправить пользователя. Данная ссылка ведет на форму заявки на оформления кредита. Форма уже будет содержать все необходимы данные.
После заполнения формы заявки и отправки её в Сбербанк, покупатель будет перенаправлен обратно на сайт интернет-магазина. При этом ему на емаил будут высланы все необходимые данные по кредиту. А владельцу интернет-магазина будет отправлена информация о приобретении товара, после чего он сможет обработать и отправить заказ покупателю. Деньги владелец интерне-магазина получит зачислением на свой расчетный счет. Данные по покупкам таким образом, для владельца ИМ, доступны в личном кабинете на сайте Сбербанка.
Установка
Для того, чтобы добавить на сайт функцию покупки в кредит от сбербанка, нужно установить на страницу товаров кнопку, а также JavaScript код который будет обрабатывать события нажатия на нее и передавать на сервер Сбербанка данные о покупке.
Html код кнопки
<a href="javascript://" class="sberbank_button">Купить в кредит от Сбербанка</a> |
CSS код кнопки
.sberbank_button { cursor:pointer; margin-bottom: 0; font-weight: 400 !important; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; font-size: 14px !important; line-height: 1.42857143; border-radius: 4px; display: inline-block; background-size: cover; background-color: #ffdf00; border: none; width: 170px; color: #000; padding: 7px 12px !important; float: left; margin: 0 0 10px 120px; } |
JavaScript код кнопки
$(document).ready(function() { $(document).on('click', '.sberbank_button', function() { var date = new Date(); var idOrder = (date.getTime() / 100).toFixed(0); // ID заказа, временная метка var returnUrl = window.location.href; // возврат после оформления на страницу товара var price = $('.price').val(); // стоимость товара var orderBundle = {/* ОБЪЕКТ СОДЕРЖАЩИЙ ПАРАМЕТРЫ ТОВАРА, ПОКУПАТЕЛЯ */}; $.ajax({ url: "curl.php", data: 'amount=' + price + '¤cy=643&language=ru&orderNumber=' + idOrder + '&returnUrl=' + returnUrl + '&jsonParams={"phone":""}&sessionTimeoutSecs=86400' + '&orderBundle=' + JSON.stringify(orderBundle), type: 'post', dataType: 'json', success: function(response){ // Получаем ответ содержащий ссылку на форму заявки window.location.href = response.formUrl; } }); }); }); |
PHP код файла обработчика curl.php
function connect($link, $cookie='cookie.txt', $post=null, $ref=null, $head=true, $redir=false, $headers=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$link); //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 0); curl_setopt($ch, CURLOPT_HEADER, $head); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'); if(count($headers)>0) { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } if($ref !== null) { curl_setopt($ch, CURLOPT_REFERER, $ref); } if($cookie !== null) { curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //curl_setopt($ch, CURLOPT_COOKIE, $cookie); } if($post !== null) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //if($redir)$otvet = curl_redirect( $ch, $head ); else $otvet = curl_exec($ch); curl_close($ch); return $otvet; } $post = http_build_query($_POST); $link = "//3dsec.sberbank.ru/sbercredit/register.do"; $post = "userName=USERNAME&password=PASSWORD&dummy=true&" . $post; $data = connect($link, null, $post, null, false, false, array()); echo $data; |
Передаваемые данные на сервер сбербанка методом POST
amount=10000000¤cy=643&language=ru&orderNumber=_&returnUrl=//yoursite.com& jsonParams={"phone":"+79268936532"}&sessionTimeoutSecs=86400& orderBundle={ "cartItems": { "items": [ { "positionId": "1", "name": " Siemens WS12T460OE", "itemDetails": {}, "quantity": { "value": 1, "measure": "" }, "itemAmount": 8000000, "itemCode": "78864","itemPrice":"8000000" }, { "positionId": "2", "name": " - ", "itemDetails": { }, "quantity": { "value": 1, "measure": "" }, "itemAmount": 1000000, "itemCode": "0000","itemPrice": "1000000" }, { "positionId": "3", "name": "- - ", "itemDetails": { }, "quantity": { "value": 1, "measure": "" },"itemAmount": 1000000, "itemCode": "0000", "itemPrice": "1000000" }] } }&installments={"productID":"10","productType":"INSTALLMENT"}} |
userName — Логин магазина, полученный при подключении.
password — Пароль магазина, полученный при подключении.
orderNumber — Номер (идентификатор) заказа в системе магазина
amount — Сумма платежа в минимальных единицах валюты. Должна совпадать с общей суммой по всем товарным позициям в Корзине.
currency — Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию.
returnUrl — Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан
полностью, включая используемый протокол (например, //test.ru вместо test.ru). В противном случае
пользователь будет перенаправлен по адресу следующего вида: //<адрес_платёжного_шлюза>
/<адрес_продавца>.
orderBundle — Блок, содержащий Корзину товаров заказа. Описание его атрибутов представлено в таблице «Параметр orderBundle»
ниже.
Ответ от сервера
Пример ответа от сервера Сбербанка, содержащий URL на страницу с формой заявки, на которую нужно будет перенаправить покупателя.
{"formUrl":"//3dsec.sberbank.ru/payment/789/payment_ru.html? mdOrder=ece47318-19f2-466a-93cd-bdb08c1587ec","orderId":"ece47318-19f2-466a-93cd-bdb08c1587ec"} |
На заметку
При передаче на сервер Сбербанка данных методом POST, мы также передаем логин и пароль в системе Сбербанк API сервиса онлайн кредитования, по этому данные не должны передаваться в открытом виде, т.е. непосредственно со страницы сайта средствами JavaScript. Запрос на удаленный сервер должен отправляться средствами Curl PHP. Посетитель не должен видеть передаваемые параметры. На практике, я видел реализации на JavaScript, когда все данные, при желании, были доступны посетителю сайта — они в открытом виде находились прямо в коде страницы сайта. Это обусловлено тем, что на сайтах созданных с помощью онлайн конструктора, зачастую нельзя разместить собственный PHP код, владельцу сайта доступно только редактирование HTML и CSS.
Конструктор BMShop хоть и позволяет размещать свой PHP код на страницах сайта, имеет ограниченные возможности, что не позволило нам реализовать полноценно скрипт отправляющий запрос на сервер Сбербанка по средствам Curl PHP. По этому мы использовали отдельный хостинг, с поддержкой PHP, для этой функции. Решение оказалось весьма удачным.
Заключение
Продажа товаров в кредит, позволяет увеличит прибыль интернет-магазина, что делает такие сервисы, будь то от Сбербанка или от Тиньква(о чем я ранее писал) очень востребованными. Установить кнопку на свой не так сложно, но все же если у вас возникнут сложности, обращайтесь, буду рад помочь!
Похожие записи
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- Интеграция с API ОСАГО сайта sravni.ru
- Комментарии на PHP, Ajax, mySQL
- PHP: Категории бесконечного уровня вложенности.
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Как создать Telegram-бота с авторизацией через сайт к записи
- PHP скрипт: каталог закладок на сайты к записи
- Валидация на PHP к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
Archive
- +2024 (25)
- Ноябрь 2024 (10)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Интеграция платежной системы MoonPay на сайт по API 10.11.2024
- Парсер товаров с Taobao 08.11.2024
- Упаковка и минификация кода JavaScript онлайн 07.11.2024
- Как эффективно анализировать логи при DDOS атаке 07.11.2024
- Бот для автоматических заказов на OZON (плагин для Chrome) 07.11.2024