/ Сайтостроение / Плагины / Платежная система PayKeeper

Платежная система PayKeeper

08.07.2017

918

Подключаем к интернет-магазину сервис электронной оплаты PayKeeper. У данного сервиса есть специальный модуль для Woocommerce — WooCommerce PayKeeper Plugin. Сам модуль и инструкция по подключению есть на официальном сайте. В данной статье приведу тезисно порядок подключения и проблемы с которыми пришлось столкнуться.

Интеграция PayKeeper

Изначально при заключении Договора получаем доступ (данные) к личному кабинету PayKeeper. Далее заводим выделенный сервер (либо на FastVPS, либо на REG.ru, либо на хостинге PayKeeper), сообщаем необходимые данные менеджеру сервиса.

Установка и настройка плагина

После этого устанавливаем плагин на сайт. Настройки PayKeeper находятся в разделе Платежи.

Прописываем в первом поле
https://site.server.paykeeper.ru/order/inline/ — !site прописываем без зоны

Во втором поле — придумываем и пишем секретное слово (лучше латиницей). Далее оно нам пригодиться.

Следующие 3 поля Наименование, Описание, Icon заполнены автоматически — это то что выводиться на странице оформления заказа.

Следующая группа полей также заполнена по умолчанию. В первых двух полях Адрес уведомления и Успешный переход — одинаковое значение: https://site.ru/?wc-api=wc_pk_gateway
В следующем Переход при ошибке: https://site.ru/?wc-api=wc_pk_gateway&failed

После внесения изменений не забываем сохранить настройки.

Синхронизация

Далее идем в личный кабинет PayKeeper, и в разделе Получение информации о платежах выбираем Способ получения уведомления о платежах» — POST-оповещения.

В поле Секретное слово вставляем слово которое мы придумывали настраивая плагин. А в поле URL, на который будут отправляться POST-запросы вставляем значение из плагина: https://site.ru/?wc-api=wc_pk_gateway

Идем в раздел Адреса перенаправления клиент и заполняем 2 поля, скопировав значения из плагина:
https://site.ru/?wc-api=wc_pk_gateway
https://site.ru/?wc-api=wc_pk_gateway&failed

Собственно ВСЕ! Модуль должен работать. Но у меня не заработал.

Ошибки

Выбирая оплату картами Visa/MasterCard онлайн (PayKeeper) после нажатия кнопки Оформить заказ мы попадаем на экран успешного завершения заказа, а должны попасть на сервис для оплаты. Более того возвращаясь к заказу в личном кабинете и попытавшись оплатить, снова попадаем на экран успешного завершения заказа — но заказ по прежнему не оплачен.

Проблему удалось решить следующим образом:

1. Создал А-запись на домене pay.site.ru A 888.888.88.888
2. Операторы установили на этот поддомен сертификат
3. Заменил адрес Платежной формы PayKeeper на https://pay.site.ru/form/inline

И все заработало! Только немного странно, что форма оплаты появляется фактически после создания заказа.

Не обновляется статус заказа

При внесении платежа статус заказа онлайн не обновлялся. Это происходило из-за плагина Bad Behavior. После отключения плагина, все стало работать как надо.

Автозаполнение полей формы PayKeeper

При выборе способа оплаты через PayKeeper система перебрасывает на страницу в формой оплаты PayKeeper и пользователю приходиться заново вводить некоторые данные. Облегчим жизнь посетителю — заполнил некоторые поля за него, тем более, если например неправильно заполнить поле сумма (вместо точки например поставить запятую в разряде), то заказ вовсе может не пройти.

Скрипт заполнения формы PayKeeper:

$(document).ready(function() { 
	if($("body").is(".woocommerce-order-pay")) {
		var orderNumber = $(".order_details .order strong").text();
		$("#tmg_payment_credits #orderid").val(orderNumber);
		
		var orderTotal = $(".order_details .total .woocommerce-Price-amount").text();
		var orderTotal2 = orderTotal.substring(0, orderTotal.length - 3);
		orderTotal2 = orderTotal2.replace(/\s+/g,''); //убираем пробелы если они есть (например после тысяч)
		$("#tmg_payment_credits #sum").val(orderTotal2);
	}
});

orderTotal.substring(0, orderTotal.length — 3); — обрезание последних символов строки.

Есть еще один способ избавления от ненужных символов: orderTotal.replace(/[^1-9.]/g, «»); Но в данном случае он не подойдет, т.к. изначальный формат суммы 35.45 р.. Т.е. после данной операции будет оставаться лишняя точка 35.45.

Также можно вывести а впоследствии автозаполнить поля имя, e-mail, phone.

Для начала выведем необходимые данные, где нибудь в footer (причем чтобы их не было видно #user-data {display: none;})

Если выводить через функцию WordPress, то мы получим только часть данных:

<?php $current_user = wp_get_current_user();
echo '<div id="user-email">'.$current_user->user_email.'</div>';
echo '<div id="user-name">'.$current_user->user_firstname.'</div>'; ?>

Чтобы получить поля Woocommerce, нужно делать так:

<?php $current_user_id = get_current_user_id();
$billing_first_name = get_user_meta($current_user_id,'billing_first_name',true);
echo '<div id="user-name">'.$billing_first_name.'</div>'; 
$billing_phone = get_user_meta($current_user_id,'billing_phone',true);
echo '<div id="user-phone">'.$billing_phone.'</div>'; ?>

Чтобы узнать название полей нужно пойти в форму заказа и посмотреть id соответствующих input.

Итак готовый вывод необходимых данных:

<div id="user-data">
	<?php $current_user_id = get_current_user_id();

	$billing_first_name = get_user_meta($current_user_id,'billing_first_name',true);
	echo '<div id="user-name">'.$billing_first_name.'</div>'; 

	$billing_phone = get_user_meta($current_user_id,'billing_phone',true);
	echo '<div id="user-phone">'.$billing_phone.'</div>';

	$billing_email = get_user_meta($current_user_id,'billing_email',true);
	echo '<div id="user-email">'.$billing_email.'</div>'; ?>
</div>

А в скрипт добавим автоподстановку полей

var orderemail = $("#user-data #user-email").text();
$("#tmg_payment_credits #client_email").val(orderemail);
		
var ordername = $("#user-data #user-name").text();
$("#tmg_payment_credits #clientid").val(ordername);

Загвоздка будет только с полем телефон, т.к. в форме PayKeeper у этого поля установлена маска, и есть вероятность подставить не правильно, поэтому это поле я не трогаю.

Поделится информацией с друзьями

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Платежная система PayKeeper Платежная система PayKeeper Платежная система PayKeeper Платежная система PayKeeper
Простой слайдер jquery
Рекомендации для васПростой слайдер jqueryOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.