Интеграция через библиотеку
Мы готовы платить от 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
Ниже приведен работающий пример. Места, в которые необходимо записать Ваши данные доступа к Paysera, отмечены комментариями.
1. Создайте папку.
Создайте папку, назовите ее libwebtopay. В ней будут храниться все файлы, связанные с интеграцией платежей.
2. Скачайте библиотеку libwebtopay.
В созданную папку libwebtopay скачайте файл WebToPay.php.
3. Создайте файл, направляющий пользователя на сайт Paysera.
В папке libwebtopay создайте файл redirect.php. Содержимое файла может быть следующим:
<?php require_once('WebToPay.php'); function getSelfUrl(): string { $url = substr(strtolower($_SERVER['SERVER_PROTOCOL']), 0, strpos($_SERVER['SERVER_PROTOCOL'], '/')); if (isset($_SERVER['HTTPS']) === true) { $url .= ($_SERVER['HTTPS'] === 'on') ? 's' : ''; } $url .= '://' . $_SERVER['HTTP_HOST']; if (isset($_SERVER['SERVER_PORT']) === true && $_SERVER['SERVER_PORT'] !== '80') { $url .= ':' . $_SERVER['SERVER_PORT']; } $url .= dirname($_SERVER['SCRIPT_NAME']); return $url; } try { WebToPay::redirectToPayment([ 'projectid' => {YOUR_PROJECT_ID}, 'sign_password' => {YOUR_PROJECT_PASSWORD}, 'orderid' => 0, 'amount' => 1000, 'currency' => 'EUR', 'country' => 'LT', 'accepturl' => getSelfUrl() . '/accept.php', 'cancelurl' => getSelfUrl() . '/cancel.php', 'callbackurl' => getSelfUrl() . '/callback.php', 'test' => 0, ]); } catch (Exception $exception) { echo get_class($exception) . ':' . $exception->getMessage(); }
Вместо метода WebToPay::redirectToPayment можно использовать WebToPay::buildRequest, который принимает такие же параметры и возвращает массив данных, необходимых для отправки.
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'); function isPaymentValid(array $order, array $response): bool { if (array_key_exists('payamount', $response) === false) { if ($order['amount'] !== $response['amount'] || $order['currency'] !== $response['currency']) { throw new Exception('Wrong payment amount'); } } else { if ($order['amount'] !== $response['payamount'] || $order['currency'] !== $response['paycurrency']) { throw new Exception('Wrong payment amount'); } } return true; } try { $response = WebToPay::validateAndParseData( $_REQUEST, {YOUR_PROJECT_ID}, {YOUR_PROJECT_PASSWORD} ); if ($response['status'] === '1' || $response['status'] === '3') { //@ToDo: Validate payment amount and currency, example provided in isPaymentValid method. //@ToDo: Validate order status by $response['orderid']. If it is not already approved, approve it. echo 'OK'; } else { throw new Exception('Payment was not successful'); } } catch (Exception $exception) { echo get_class($exception) . ':' . $exception->getMessage(); }
Параметры запроса
Скрипт должен вернуть текст "OK". Только тогда наша система сможет зафиксировать факт успешного информирования об оплате.
Если ответа "OK" нет, то сообщение отправляется 4 раза (сразу после получения, спустя час, спустя три часа и спустя сутки).Оплата за товары и услуги (за нр. [order_nr]) ([site_name]).
Если реквизиты платежа указаны, необходимо внести следующие переменные, которые в конечном тексте назначения будут заменены соответствующими значениями:
[order_nr] - номер заказа.[site_name] или [owner_name] - адрес сайта или название предприятия.
Может иметь значение 0 или 1. Если установлено значение 1, плательщик может пропустить дополнительный шаг, на котором ему необходимо принять согласие с использованием платежа PIS.. Если используется этот параметр, на вашу страницу необходимо добавить дополнительный текст:
Текст согласия покупателя на других языках, представленный под таблицей**
Варианты частоты платежей для всех доступных способов периодических платежей:
weekly
monthly
quarterly
semiannual
annual
Варианты частоты платежей для некоторых доступных способов периодических платежей:
daily
every_working_day
last_day_of_month
last_working_day_of_month
Формат даты должен быть yyyy-mm-dd.
Формат даты должен быть yyyy-mm-dd.
* Окончательная длина может варьироваться в зависимости от спецификации типа оплаты
** Текст согласия покупателя:
Callback
Для получения дополнительной информации о 'callback' смотрите раздел - Callback .