Простая генерация виджета оплаты на бэкенде
На Вашем сайте вы можете разместить простой виджет оплаты услуг. Для этого необходимо правильно сформировать параметры
запроса и подпись к нему внутри формы оплаты.
Для формирования подписи используется алгоритм хеширования 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>