Всем доброго времени суток.
Недавно поступило предложение от наших клиентов интегрировать систему оплаты EveryPay. Эта эстонская компания готова сотрудничать с теми, чьи продажи ориентированы на европейский рынок. Так как спрос на нее среди наших клиентов ожидается небольшой (хотя для торгующих в Европе она будет крайне полезна), установить эту систему пока можно только следуя несложной инструкции ниже. Впоследствии она может быть полностью интегрирована на нашу платформу, т. е. можно будет установить ее на сайт нажатием пары кнопок через раздел "Настройки" - "Оплата", если спрос на нее окажется высоким.
Итак, инструкция.
Подайте заявку на регистрацию аккаунта на сайте EveryPay. Когда вам ее одобрят, в админ. панели (Merchant Portal) этой системы во вкладке с настройками (Settings - General) найдите поля api_username, api_secret и account_id. Из них api_secret и api_username сообщите администрации Storeland на почту или в личном сообщении на форуме.
В бэк-офисе вашего магазина, на котором планируется установка кнопки оплаты, в разделе /admin/api создайте приложение с доступом к разделу заказов. Полученный секретный ключ также сообщите модератору Storeland.
api_secret, api_username и секретный ключ приложения магазина внесут в скрипт, размещающийся на нашем сервере, который будет готовить запрос на оплату.
В бэк-офисе магазина в разделе "Сайт" - "Редактор шаблонов" откройте шаблон "Просмотр заказа" для редактирования: найдите код
{% IF ORDER_PAYMENT_STEP_ENABLE %}
<!-- Здесь появляются дополнительные данные, необходимые для заполнения клиентом -->
{PAYMENT_FORM_TBODY}
{% ENDIF %}
После него добавьте такой код
Скрытый текст
{% IFNOT ORDER_IS_PAYMENT = 1 %}
<!-- Оплата с помощью сервиса EveryPay -->
<style>
#every_pay {
color: #ffffff;
cursor: pointer;
text-align: center;
vertical-align: middle;
font-size: 15px;
font-weight: normal;
margin: 0 auto;
display: inline-block;
float: none;
background: #f9b000;
background: -moz-linear-gradient(top, #f9b000 1%, #ee7302 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(1%, #f9b000), color-stop(100%, #ee7302));
background: -webkit-linear-gradient(top, #f9b000 1%, #ee7302 100%);
background: -o-linear-gradient(top, #f9b000 1%, #ee7302 100%);
background: -ms-linear-gradient(top, #f9b000 1%, #ee7302 100%);
background: linear-gradient(to bottom, #f9b000 1%, #ee7302 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9b000', endColorstr='#ee7302',GradientType=0 );
border: 0;
height: 28px;
padding: 3px 10px;
font-family: 'casperregular', sans-serif;
line-height: 23px;
text-transform: uppercase;
border-radius: 13px;
}
#every_pay:hover {
background: #432e2e;
}
</style>
<div id="every_pay_container">
<div id="every_pay">Pay using EveryPay</div>
</div>
<!-- END Оплата с помощью сервиса EveryPay -->
<script>
var everyPayData = {
/*
api_username
Merchant API username. The value can be found in
Merchant Portal in the Settings section
*/
'api_username': "982oigs89sgvh3",
/*
account_id
Processing account to be used for the transaction.
Processing account defines the transaction processing
configuration, including the currency to be used, pricelist,
3D Secure settings, payment recurrence, clearing settings,
etc.
Example values could be: ‘EUR3D1, ‘USD3D2’.
The field value can be found in Merchant Portal in the
Settings section.
*/
'account_id': "EUR3D1",
/*
Sets the locale and the language of the EveryPay Payment
Page user interface displayed to the customer.
Defaults to 'en'.
Accepted values are:
en - English
et - Estonian
ru - Russian
Please contact the Everypay support if you need other
supported locales.
*/
'locale': 'en',
'test_request': 1,
'amount': {ORDER_SUM},
'callback_url': "http://148.251.194.160:27016?id=complete_transaction&back_page=http://{NET_DOMAIN}/order/info/{ORDER_TOKEN}&order_num={ORDER_NUM}",
'customer_url': "http://148.251.194.160:27016?id=complete_transaction&back_page=http://{NET_DOMAIN}/order/info/{ORDER_TOKEN}&order_num={ORDER_NUM}",
'order_reference': "{ORDER_TOKEN}",
'billing_address': "{ORDER_DELIVERY_ADDRESS}",
'delivery_address': "{ORDER_DELIVERY_ADDRESS}",
'billing_city': "{ORDER_DELIVERY_CITY}",
'delivery_city': "{ORDER_DELIVERY_CITY}",
'billing_country': "{ORDER_DELIVERY_COUNTRY}",
'delivery_country': "{ORDER_DELIVERY_COUNTRY}",
'billing_postcode': "{ORDER_DELIVERY_ZIP_CODE}",
'delivery_postcode': "{ORDER_DELIVERY_ZIP_CODE}",
'email': "{ORDER_CONTACT_EMAIL}"
}
function EveryPay(everyPayData) {
this.api_username = everyPayData.api_username;
this.account_id = everyPayData.account_id;
this.amount = everyPayData.amount;
this.callback_url = everyPayData.customer_url;
this.customer_url = everyPayData.customer_url;
this.nonce = everyPayData.nonce;
this.order_reference = everyPayData.order_reference;
this.timestamp = everyPayData.timestamp;
this.billing_address = everyPayData.billing_address;
this.delivery_address = everyPayData.delivery_address;
this.billing_city = everyPayData.billing_city;
this.delivery_city = everyPayData.delivery_city;
this.billing_country = everyPayData.billing_country;
this.delivery_country = everyPayData.delivery_country;
this.billing_postcode = everyPayData.billing_postcode;
this.delivery_postcode = everyPayData.delivery_postcode;
this.email = everyPayData.email;
if (this.billing_country.length > 2) {
this.billing_country = this.billing_country.substr(0, 2);
this.delivery_country = this.delivery_country.substr(0, 2);
}
}
EveryPay.prototype.scope_data = function() {
return this;
}
EveryPay.prototype.pay = function() {
$('#every_pay_container').html('<img src="{ASSETS_IMAGES_PATH}loading.gif"/>');
form_data = {"make_pay": 1, "data": this};
$.ajax({
url: "http://148.251.194.160:27016/",
data: form_data,
cache: false,
type: "POST",
dataType: "html",
success: function(d){
if ($(d).hasClass('every_pay_error')) {
$('#every_pay_container').html($(d).text('Payment unsuccessed, please try again after reload sitepage.').addClass('warning'));
}
else {
$(d).submit();
}
},
error: function(d) {
$('#every_pay_container').html('Error request. Please try again after reload page.');
}
});
}
var myEveryPay = new EveryPay(everyPayData);
document.getElementById("every_pay").addEventListener("click", myEveryPay.pay.bind(everyPayData));
</script>
{% ENDIF %}
Кнопка оплаты будет отображаться на странице просмотра оформленного заказа.
Здесь в скрипте (начинается со строчки <script>) идут несколько параметров. Важны первые 4: api_username и account_id, которые вы нашли в админке EveryPay, locale - язык, на котором будет осуществляться процесс оплаты (2 буквы - "en", "ru" или "et") и test_request - говорит о том, тестовый запрос или нет. Обратите внимание, если test_request имеет значение 1, т. е. запрос будет происходит на тестовый портал, то и api_username, account_id и api_secret должны быть взяты также с тестового портала. На главной странице EveryPay есть две кнопки - одна для создания аккаунта на тестовом портале, другая - на рабочем, так что тут сложно ошибиться.
После ввода вышеуказанных параметров и добавления вашего api_secret на нашем сервере, оплата начнет работать.
Сообщение отредактировал sengun: 14 Март 2016 - 15:08
Дополнение
Попробовал сделать тестовый платеж. Меня перекинуло на сервис everypay, там я провел условно платеж. Для пробы использовал тестовый товар british.ee/goods/test.
Вопросов много.
1. Выскочило сообщение, что "оплата прошла, но статус заказа не изменился, в связи с этим просим связаться с нами." Это, как я понимаю, из-за того, что оплата тестовая, а не реальная. Верно?
2. Кнопка для перехода к платежу появляется только после регистрации заказа ("Отправить заказ"/Saada tellimus). Как сделать, чтобы переход к оплате проходил сразу при нажатии на "Отправить заказ" без нажатия на "Pay using everypay"?
3. На сайте Everypay написано, что клиент может платить как дебетовой, так и кредитной картой, а также через свой банкинг. Как это реализовать на сайте? Или как это обычно делается?
А вообще, спасибо за труды.
Сообщение отредактировал Ingleest: 09 Март 2016 - 12:17
Попробовал сделать тестовый платеж. Меня перекинуло на сервис everypay, там я провел условно платеж. Для пробы использовал тестовый товар british.ee/goods/test.
Вопросов много.
1. Выскочило сообщение, что "оплата прошла, но статус заказа не изменился, в связи с этим просим связаться с нами." Это, как я понимаю, из-за того, что оплата тестовая, а не реальная. Верно?
2. Кнопка для перехода к платежу появляется только после регистрации заказа ("Отправить заказ"/Saada tellimus). Как сделать, чтобы переход к оплате проходил сразу при нажатии на "Отправить заказ" без нажатия на "Pay using everypay"?
3. На сайте Everypay написано, что клиент может платить как дебетовой, так и кредитной картой, а также через свой банкинг. Как это реализовать на сайте? Или как это обычно делается?
А вообще, спасибо за труды.
По поводу расположения кнопки ответил в личку, к сожалению, разместить можно только на странице "Просмотр заказа".
Статус заказа не изменился, потому что не указан секретный ключ приложения в админке вашего магазина. Совершенно забыл про этот пункт, когда писал инструкцию. Сейчас исправим. В вашем магазине необходимые изменения уже произведены (в разделе /admin/api добавил приложение и внес секретный ключ в скрипт).
Про оплату своим банкингом. Форма для ввода данных для оплаты загружается с сервиса EveryPay. Думаю, если в ней нужно что-то изменить или настроить, то это делается в админке EveryPay.
Теперь при оформлении заказа выскакивает сообщение: "Ошибка при оформлении заказа. Не указан метод оплаты". Напишите, что мне делать, пожалуйста.
Здравствуйте, у Вас на сайте должен быть хотя бы один способ оплаты. Добавьте его в разделе Настройки - основные, например "Мой способ оплаты". Иначе создать заказ не получится.
1. А теперь нажимаю на кнопку "Pay using Everypay", переходит на сайт Everypay, а там:
"Payment can't be processed. Please try again later."
2. Как кнопку опустить вниз, рядом с кнопкой "Перейти на главную"?
Сообщение отредактировал Ingleest: 15 Март 2016 - 13:12
1. А теперь нажимаю на кнопку "Pay using Everypay", переходит на сайт Everypay, а там:
"Payment can't be processed. Please try again later."
2. Как кнопку опустить вниз, рядом с кнопкой "Перейти на главную"?
Здравствуйте, по первому вопросу Вам ответят чуть позже, по второму вопросу:
в шаблоне Просмотр заказа найдите код:
<div id="every_pay_container">
<div id="every_pay">Pay using EveryPay</div>
</div>
Вам сейчас пытаются произвести изменения по первому вопросу. Попробуйте внести изменения позже.
Изменения Вам произвели, посмотрите, пожалуйста. Сейчас у Вас данные для тестового портала. Когда понадобится возможность реальной оплаты, замените в Просмотре заказа в строчке:
'api_username': "84667fd4806f8a8a",
значение 84667fd4806f8a8a на то, что указано в основном портале. А также замените строчку
Хотел бы проверить оплату на рабочем аккаунте. api_username поменял в Просмотре заказа, а вот где поменять API secret и Merchant ID на рабочие? В admin/api нет доступа к этим настройкам.
Сообщение отредактировал Ingleest: 16 Март 2016 - 13:43
Хотел бы проверить оплату на рабочем аккаунте. api_username поменял в Просмотре заказа, а вот где поменять API secret и Merchant ID на рабочие? В admin/api нет доступа к этим настройкам.
Здравствуйте, эти данные уже внесены, Вам менять их не нужно. Изменить нужно было только то, что написано в сообщении №12.
Здравствуйте, эти данные уже внесены, Вам менять их не нужно. Изменить нужно было только то, что написано в сообщении №12.
Это я изменил, а оплата не проходит. Платежная система написала "Извините, платеж неудачный".
Дело в том, что они разные для тестового портала и для рабочего. На тестовом оплата проходила, а сейчас на рабочем - нет. И я думаю, что это может быть причиной. Попросите, пожалуйста, sengunа посмотреть.
Сообщение отредактировал Ingleest: 16 Март 2016 - 17:18
Это я изменил, а оплата не проходит. Платежная система написала "Извините, платеж неудачный".
Дело в том, что они разные для тестового портала и для рабочего. На тестовом оплата проходила, а сейчас на рабочем - нет. И я думаю, что это может быть причиной. Попросите, пожалуйста, sengunа посмотреть.
Мы протестировали работу этого функционала, всё работает. Уточните, пожалуйста, каким образом Вы производили тестовый заказ? Возможно, Вы пытались оплатить старый, уже оплаченный заказ, поэтому сервер Вам выдал ошибку. Попробуйте создать новый заказ и протестировать снова.
Мы протестировали работу этого функционала, всё работает. Уточните, пожалуйста, каким образом Вы производили тестовый заказ? Возможно, Вы пытались оплатить старый, уже оплаченный заказ, поэтому сервер Вам выдал ошибку. Попробуйте создать новый заказ и протестировать снова.
Да, по новому заказу оплата проходит, все нормально. А вот по старому неоплаченному при попытке оплатить - неудача.