Интеграция через библиотеку
Мы готовы платить от 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
Ниже приведен работающий пример. Места, в которые необходимо записать Ваши данные доступа к 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(); }
Параметры запроса
Продавец не должен полагаться на accepturl для подтверждения заказа. Подтверждение заказа со стороны продавца должно осуществляться посредством callbackurl.
Скрипт должен вернуть текст "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 .