Интеграция через библиотеку
Мы готовы платить от 100 до 200 EUR за созданный вами верный и рабочий код. Если вы захотите
сотрудничать в дальнейшем и получать заказы на поддержку версии определенной системы, код и ваши контакты
будут размещены публично.
Пишите нам на podderzhka@paysera.com
Для интеграции системы макро- платежей рекомендуем использовать подготовленную нами программную библиотеку с открытым исходным кодом. Библиотека выполняет все необходимые проверки сохранности передаваемых и получаемых данных.
Внимание: libwebtopay можно использовать как с услугами макро-, так и микро- платежей.
Можете испробовать libwebtopay, запустив подготовленный демонстрационный сценарий. Демонстрацию можете запустить, набрав в адресной строке Интернет-браузера:
https://www.yourwebsiteurl.com/libwebtopay/demo/
Внимание: в адресе указанный путь к demoкаталогу может отличаться в зависимости от того, куда вы поместили содержимое архива.
Внимание: для того, чтобы демо успешно функционировало укажите номер вашего проекта в системе Paysera, в поле projectid. Демо не будет работать, если будете пробовать запускать её с Вашего компьютера (localhost).
В общем, Вам достаточно вызвать два метода, из которых, один - подготавливает данные к отправке, а другой - проверяет полученный ответ о произведённой оплате.
Ниже приведен работающий пример. Места, в которые необходимо записать Ваши данные доступа к 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(); }
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(); }
Внимание! Все параметры paysera.com методом GET должны иметь префикс WebToPay::PREFIX, метод WebToPay::checkResponse() возвращает отправленные в Paysera данные без префиксов. Иллюстрация, как это выглядит:
>>> $response = WebToPay::checkResponse(['foo' => 'bar', 'wp_projectid' => '123'], [...]); >>> print_r($response); ['projectid' => '123']
Параметры запроса
Скрипт должен вернуть текст "OK". Только тогда наша система сможет зафиксировать факт успешного информирования об оплате.
Если ответа "OK" нет, то сообщение отправляется 4 раза (сразу после получения, спустя час, спустя три часа и спустя сутки).Оплата за товары и услуги (за нр. [order_nr]) ([site_name]).
Если реквизиты платежа указаны, необходимо внести следующие переменные, которые в конечном тексте назначения будут заменены соответствующими значениями:
[order_nr] - номер заказа.[site_name] или [owner_name] - адрес сайта или название предприятия.
* Окончательная длина может варьироваться в зависимости от спецификации типа оплаты
** Текст согласия покупателя:
Callback
Для получения дополнительной информации о 'callback' смотрите раздел - Callback .