Заработайте с Paysera Создаете библиотеки?


Мы готовы платить от 100 до 200 EUR за созданный вами верный и рабочий код. Если вы захотите сотрудничать в дальнейшем и получать заказы на поддержку версии определенной системы, код и ваши контакты будут размещены публично.

Пишите нам на podderzhka@paysera.com

Интегрировать систему Paysera на Ваш сайт можно скачав нами приготовленную программную библиотеку с открытым кодом – libwebtopay. С ее помощью можно проверить все необходимые параметры безопасности передаваемых и принимаемых данных.

  • WebToPay для PHP (из GitHub).
    $ git clone https://github.com/paysera/lib-webtopay
  • WebToPay для .NET (из GitHub).
    $ git clone https://github.com/evp/webtopay-lib-dotnet

Из архива возьмите файл libwebtopay/WebToPay.php. Другие файлы предназначены для тестов, примеров и объяснений. Последнюю версию только одного файла libwebtopay/WebToPay.php можно скачать по следующему адресу: WebToPay.php.

Paysera систему можете интегрировать в свой сайт, скачав библиотеку с открытым исходным кодом:

  • Omnipay 2.x - PHP библиотека обработки платежей. (из GitHub).
    $ git clone https://github.com/povils/omnipay-paysera.git
  • Omnipay 3.x - PHP библиотека обработки платежей. (из GitHub).
    $ git clone https://github.com/semyonchetvertnyh/omnipay-paysera.git
Информация libwebtopay подходиткак для микро- так и для макроуслуг. Вам достаточно вызвать два метода, один из которых готовит данные для отправки, а другой проверяет полученный ответ о выполненном платеже.

Ниже приведен работающий пример. Места, в которые необходимо записать Ваши данные доступа к Paysera, отмечены комментариями.

1. Создайте папку.

СОЗДАЙТЕ папку, НАЗОВИТЕ ее libwebtopay. В ней будут храниться все файлы, связанные с интеграцией платежей.

2. Скачайте библиотеку libwebtopay.

В созданную папку libwebtopay СКАЧАЙТЕ файл WebToPay.php.

3. Создайте файл, направляющий пользователя на сайт Paysera.

В папке libwebtopay СОЗДАЙТЕ файл redirect.php. Содержимое файла может быть следующим:

<?php

require_once('WebToPay.php');

function get_self_url() {
    $s = substr(strtolower($_SERVER['SERVER_PROTOCOL']), 0,
                strpos($_SERVER['SERVER_PROTOCOL'], '/'));

    if (!empty($_SERVER["HTTPS"])) {
        $s .= ($_SERVER["HTTPS"] == "on") ? "s" : "";
    }

    $s .= '://'.$_SERVER['HTTP_HOST'];

    if (!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '80') {
        $s .= ':'.$_SERVER['SERVER_PORT'];
    }

    $s .= dirname($_SERVER['SCRIPT_NAME']);

    return $s;
}

try {
    $self_url = get_self_url();

    $request = WebToPay::redirectToPayment(array(
        'projectid'     => 0,
        'sign_password' => 'd41d8cd98f00b204e9800998ecf8427e',
        'orderid'       => 0,
        'amount'        => 1000,
        'currency'      => 'EUR',
        'country'       => 'LT',
        'accepturl'     => $self_url.'/accept.php',
        'cancelurl'     => $self_url.'/cancel.php',
        'callbackurl'   => $self_url.'/callback.php',
        'test'          => 0,
    ));
} catch (WebToPayException $e) {
    // handle exception
}

Вместо метода WebToPay::redirectToPayment можно использовать WebToPay::buildRequest, который принимает такие же параметры и возвращает массив данных, необходимых для отправки.

Ниже приведен полный список параметров метода WebToPay::buildRequest() с описаниями:

Параметр Длина Обязателен Описание
projectid 11 Да Уникальный номер проекта. Оплаты могут производиться только в рамках утверждённого проекта.
orderid 40 Да Номер заказа из Вашей системы.
accepturl 255 Да Полный Интернет адрес (URL), куда направляется клиент после оплаты.
cancelurl 255 Да Полный Интернет адрес (URL), куда направляется клиент после нажатия линка вернуться в магазин.
callbackurl 255 Да Полный Интернет адрес (URL), на который продавцу передаётся информация об осуществленном платеже.

Скрипт должен вернуть текст "OK". Только тогда наша система сможет зафиксировать факт успешного информирования об оплате.

Если ответа "OK" нет, то сообщение отправляется 4 раза (сразу после получения, спустя час, спустя три часа и спустя сутки).
version 9 Да Номер версии спецификации (API) платежной системы Paysera.
lang 3 Нет Можно указать язык пользователя (ISO 639-2/B: LIT, RUS, ENG и. т. п.). Если Paysera не поддерживает данного языка, язык будет выбран либо по IP адресу посетителя, либо по умолчанию будет использоваться англ. язык.
amount 11 Нет Сумма (в центах), которую должен оплатить клиент.
currency 3 Нет Валюта (напр. USD, EUR и. т. п.), в которой вы предпочитаете получать платежи клиента. Если указанная валюта не может быть принята посредством выбранного метода оплаты, система автоматически конвертирует сумму в поддерживаемую валюту по курсу текущего дня. В ответе на Ваш сайт будут переданы payamount и paycurrency.
payment 20 Нет Способ оплаты. Если указан, платеж будет осуществлен с помощью указанного способа оплаты. Если не указан, плательщику будет немедленно предоставлена таблица с доступными способами оплаты. Вы можете получить способы оплаты в реальном времени используя библиотеку WebToPay.
country 2 Нет Страна плательщика (LT, EE, LV, GB, PL, DE). Указав страну, плательщику сразу же предоставляются те способы оплаты, которые возможны в данной стране. Если страна не указана, система по IP адресу посетителя установит его страну. Плательщику предоставляется возможность поменять страну.
paytext 255* Нет Реквизиты платежа, которые видны при переводе. Не указав реквизитов, по умолчанию используется следующий текст:
Оплата за товары и услуги (за нр. [order_nr]) ([site_name]).

Если реквизиты платежа указаны, необходимо внести следующие переменные, которые в конечном тексте назначения будут заменены соответствующими значениями:

  • [order_nr] - номер заказа.
  • [site_name] или [owner_name] - адрес сайта или название предприятия.

Не указав этих переменных, будет использоваться текст реквизитов по умолчанию.

Пример реквизитов платежа:

Оплата за товары в заказе [order_nr] на сайте [site_name].
p_firstname 255 Нет Имя покупателя. Желательно для большинства методов оплаты. Обязательно для некоторых методов оплаты.
p_lastname 255 Нет Фамилия покупателя. Желательна для большинства методов оплаты. Обязательна для некоторых методов оплаты.
p_email 255 Нет Адрес эл. почты клиента обязателен. Если адрес не будет получен, клиент получит запрос его указать. На этот адрес эл. почты клиент будет получать сообщения от Paysera о статусе оплаты.
p_street 255 Нет Адрес покупателя, на который будут отправляться товары (напр. Mėnulio 7 - 7). Желателен. Обязателен для некоторых методов оплаты.
p_city 255 Нет Город покупателя, в который будут отправляться товары (напр. Vilnius). Желателен. Обязателен для некоторых методов оплаты.
p_state 20 Нет Код штата покупателя (обязателен только при покупке в США). Желателен. Обязателен для некоторых методов оплаты.
p_zip 20 Нет Почтовый код покупателя. Почтовые коды Литвы можно найти здесь. Желателен. Обязателен для некоторых методов оплаты.
p_countrycode 2 Нет Код страны покупателя. Коды стран можно найти здесь. Желателен. Обязателен для некоторых методов оплаты.
only_payments 0 Нет Показывать разделенный запятыми список способов оплаты.
disallow_payments 0 Нет Не показывать разделенного запятыми списка способов оплаты.
test 1 Нет Параметр, при наличии которого можно тестировать соединение. Оплата не производится и результат возвращается сразу, как будто бы оплата была произведена. Для того, чтобы протестировать, необходимо активировать режим теста возле выбранного проекта. Путь: "Управление проектами" -> "Услуга сбора платежей" (возле конкретного проекта) -> "Разрешить тестовую оплату" (отметить).
time_limit 19 Нет Параметр, при наличии которого можно тестировать соединение. Датa предоставляется в форматe "yyyy-mm-dd HH:MM:SS". Минимальное значение - за 15 минут от текущего времени, максимальное - 3 дня. Примечание: работает только с определенными способами оплаты.
personcode 255 Нет Этот параметр можно использовать для идентификации пользователя. Если идентификационный номер пользователя передается, вместе с callback Paysera вернет параметр personcodestatus, который укажет совпадает ли личный код пользователя с переданным.
developerid 11 Нет В случае, если Вы в нашей системе отмечены как разработчик (developer), Вы должны в своем установленном проекте (проектах) передавать этот параметр. Значение параметра - Ваш уникальный номер пользователя.
buyer_consent 1 Нет

Может иметь значение 0 или 1. Если установлено значение 1, плательщик может пропустить дополнительный шаг, на котором ему необходимо принять согласие с использованием платежа PIS.. Если используется этот параметр, на вашу страницу необходимо добавить дополнительный текст:

Сообщаем, что услуга информации по счету и инциированию платежа будет предоставлена предприятием Paysera согласно данным правилам. Продолжая оплату, вы подтверждаете свое согласие с предоставлением и условиями услуги.

* Окончательная длина может варьироваться в зависимости от спецификации типа оплаты

4. Создайте файл accept.php.

В папке libwebtopay СОЗДАЙТЕ файл accept.php. Содержимое файла должно быть следующим:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title></title>
</head>
<body>
    Thank you for buying
</body>
</html>

5. Создайте файл cancel.php.

В папке libwebtopay СОЗДАЙТЕ файл cancel.php. Содержимое файла должно быть следующим:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title></title>
</head>
<body>
    Payment canceled
</body>
</html>

6. Обработка выполненных платежей.

В папке libwebtopay СОЗДАЙТЕ файл callback.php. Содержимое файла должно быть следующим:

<?php

require_once('WebToPay.php');

try{
    $response = WebToPay::checkResponse($_GET, array(
        'projectid' => 0,
        'sign_password' => 'd41d8cd98f00b204e9800998ecf8427e',
    ));

    if($response['test'] !== '0'){
        throw new Exception('Testing, real payment was not made');
    }
    if($response['type'] !== 'macro'){
        throw new Exception('Only macro payment callbacks are accepted');
    }

    $orderId = $response['orderid'];
    $amount = $response['amount'];
    $currency = $response['currency'];
    //@todo: проверьте, подтвержден ли заказ из $orderId (обратный вызов может повторяться несколько раз)
    //@todo: проверьте, что сумма и валюта заказа соответствуют $amount и $currency
    //@todo: подтвердите заказ

    echo 'OK';
} catch(Exception$e) {
    echo get_class($e) . ':' . $e->getMessage();
}
Информация Переданные параметры возвращает Paysera.com::checkResponse или Paysera.com::validateAndParseData. Сами данные шифруются, так что получить их из параметров GET не возможно.
Примечание! Скрипт Callback в случае успеха должен возвратить ответ, начинающийся или равняющийся «OK». Callbackвозвращаемые параметры можно найти в подробной спецификации.

Для получения дополнительной информации о 'callback' смотрите раздел - Callback .