Интеграция на сайт кнопки Купить в кредит от Сбербанк

Author Автор: Роман Чернышов    Опубликовано: 29 июля 2019

Кнопка купить в кредит от Сбербанка Друзья привет! По мере привыкания посетителей интернет-магазинов(ИМ) к такой функции как покупка в кредит онлайн, все более популярнее становятся такие сервисы как — купить в кредит от Сбербанка. Данная функция, сервис, представляет собой кнопку, размещенную на странице товара или в корзине вашего сайта, по нажатии на которую покупатель перенаправляется на страницу заявки на оформления покупки в кредит, при этом в заявку автоматом передаются данные о товарах которые он хочет приобрести. Весь процесс занимает всего несколько минут и состоит из пары шагов. Далее я расскажу об опыте интеграции функции покупки в кредит от Сбербанка на сайт интернет-магазина, который был сделан с помощью конструктора 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 + '&currency=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&currency=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
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 159₽
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка