Skip to main content

Простая генерация виджета оплаты на бэкенде

На Вашем сайте вы можете разместить простой виджет оплаты услуг. Для этого необходимо правильно сформировать параметры запроса и подпись к нему внутри формы оплаты.
Для формирования подписи используется алгоритм хеширования MD5.

Если Вы планируете обрабатывать платежи в автоматическом режиме, Вам также необходимо настроить прием API запросов от системы PaySys.

Формирование подписи запроса

Кодировка подписываемой строки – UTF-8. Подпись запроса устаревает через 15 минут с момента подписания и недействительна если установлено будущее время подписания.

md5(
SECRET_KEY . // секретный ключ поставщика услуг
VENDOR_ID . // идентификатор поставщика услуг в системе PaySys
MERCHANT_TRANS_ID . // идентификатор платежа
MERCHANT_TRANS_AMOUNT . // сумма платежа
MERCHANT_CURRENCY . // валюта платежа
TIMESTAMP // время подписания в миллисекундах
);

Перечень параметров запроса для оплаты

ПараметрФорматОбязательныйОписаниеПример
VENDOR_IDintegerДаИдентификатор поставщика услуг в системе PaySys1591864
MERCHANT_TRANS_IDstring(256)ДаУникальный идентификаторзаказа платежа в биллинг системе поставщика услугAB772059
MERCHANT_TRANS_AMOUNTintegerДаСумма платежа10000
MERCHANT_CURRENCYstring(10)ДаВалюта платежаsum
MERCHANT_TRANS_NOTEstring(256)ДаТекстовый комментарий к проведенной операцииtransaction_note_example
MERCHANT_TRANS_DATAstring(256)НетПроизвольные данные поставщика услугeyJrZXkxIjoidmFsdWUxIiwia2V5MiI6InZhbHVlMiJ9
MERCHANT_TRANS_RETURN_URLstring(256)НетСсылка для возврата пользователя после оплатыhttps://site.uz/donate/
SIGN_TIMEintegerДаТекущее время в миллисекундах1480056082732
SIGN_STRINGmd5ДаПодпись запроса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>