Простая генерация виджета оплаты на бэкенде
На Вашем сайте вы можете разместить простой виджет оплаты услуг. Для этого необходимо правильно сформировать параметры
запроса и подпись к нему внутри формы оплаты.
Для формирования подписи используется алгоритм хеширования MD5.
Если Вы планируете обрабатывать платежи в автоматическом режиме, Вам также необходимо настроить прием API запросов от системы PaySys.
Формирование подписи запроса
Кодировка подписываемой строки – UTF-8. Подпись запроса устаревает через 15 минут с момента подписания и недействительна если установлено будущее время подписания.
md5(
SECRET_KEY . // секретный ключ поставщика услуг
VENDOR_ID . // идентификатор поставщика услуг в системе PaySys
MERCHANT_TRANS_ID . // идентификатор платежа
MERCHANT_TRANS_AMOUNT . // сумма платежа
MERCHANT_CURRENCY . // валюта платежа
TIMESTAMP // время подписания в миллисекундах
);
Перечень параметров запроса для оплаты
Параметр | Формат | Обязательный | Описание | Пример |
---|---|---|---|---|
VENDOR_ID | integer | Да | Идентификатор поставщика услуг в системе PaySys | 1591864 |
MERCHANT_TRANS_ID | string(256) | Да | Уникальный идентификаторзаказа платежа в биллинг системе поставщика услуг | AB772059 |
MERCHANT_TRANS_AMOUNT | integer | Да | Сумма платежа | 10000 |
MERCHANT_CURRENCY | string(10) | Да | Валюта платежа | sum |
MERCHANT_TRANS_NOTE | string(256) | Да | Текстовый комментарий к проведенной операции | transaction_note_example |
MERCHANT_TRANS_DATA | string(256) | Нет | Произвольные данные поставщика услуг | eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9 |
MERCHANT_TRANS_RETURN_URL | string(256) | Нет | Ссылка для возврата пользователя после оплаты | https://site.uz/donate/ |
SIGN_TIME | integer | Да | Текущее время в миллисекундах | 1480056082732 |
SIGN_STRING | md5 | Да | Подпись запроса | 2e483be74e568b4d7d4a7d9421f404fc |
Пример реализации кода виджета на PHP
<?php
const URL = 'https://paysys.uz/pay-universal'; // Ссылка для действительной оплаты заказа
const SECRET_KEY = '#Feiz!ahdahweig7?Choot#3AiL6p--ooF6e'; // SECRET_KEY из личного кабинета поставщика услуг
$timestamp = round(microtime(true) * 1000);
// Список параметров для запроса
$params = array(
'VENDOR_ID' => '1591864', // VENDOR_ID поставщика услуг в системе PaySys
'MERCHANT_TRANS_ID' => '0', // ID заказа на стороне поставщика услуг
'MERCHANT_TRANS_AMOUNT' => 10000, // сумма платежа
'MERCHANT_CURRENCY' => 'sum', // валюта платежа
'MERCHANT_TRANS_NOTE' => 'Описание услуги', // описание услуги, которое будет отображаться в списке транзакций в кабинете поставщика услуг
'MERCHANT_TRANS_DATA' => 'eyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9', // произвольные данные поставщика услуг, отправляются в endpoint url `/pay` для проверки заказа
'SIGN_TIME' => $timestamp,
);
// формирование подписи запроса
$params['SIGN_STRING'] = md5(
SECRET_KEY .
$params['VENDOR_ID'] .
$params['MERCHANT_TRANS_ID'] .
$params['MERCHANT_TRANS_AMOUNT'] .
$params['MERCHANT_CURRENCY'] .
$timestamp
);
?>
<form method="post" action="<?= URL; ?>">
<?php foreach ($params as $name => $value): ?>
<input type="hidden" name="<?= $name; ?>" value="<?= $value; ?>">
<?php endforeach; ?>
<button type="submit">Оплатить</button>
</form>