Создание платежа (простой способ)

Если ваш сайт создан с помощью CMS, ознакомьтесь со списком готовых модулей.

Для инициализации платежа посредством единой формы оплаты вам достаточно направить пользователя по специальному URL и передать ряд обязательных для оплаты параметров.

Формат: https://unitpay.money/pay/PUBLIC KEY?sum&account&desc&signature

Пример: https://unitpay.money/pay/111111-11111?sum=100&account=222111&desc=Online%20course&signature=2c38bb3114b2f02222ee35f6b60c6bbe628ad31bed59633787204ae59659a02e

Значение Описание
sum число Сумма платежа. По умолчанию в рублях. См. дополнительный параметр currency
account строка Идентификатор абонента в вашей системе (например email или номер заказа)
desc строка Описание заказа. Используется только для информирования при совершении платежа
signature строка Цифровая подпись запроса. Они защищает вас от злоумышленников - подмены описания или стоимости заказа, размещения ссылки на оплату на ресурсах мошенников.
Образуется как sha256( account + "{up}" + currency + "{up}" + desc + "{up}" + sum + "{up}" + secretKey), 
где sha256 - метод хеширования; 
"{up}" - разделитель параметров в хеш-функции; 
secretKey - секретный ключ проекта (доступен в личном кабинете); 

Важно. Если вы не передаете currency на форму оплаты, то этот параметр не должен участвовать в формировании подписи.

   Значение PUBLIC KEY и SECRET KEY проекта можно найти на странице Настройки проекта

Пример формирования цифровой подписи на PHP:

function getFormSignature($account, $currency, $desc, $sum, $secretKey) {
    $hashStr = $account.'{up}'.$currency.'{up}'.$desc.'{up}'.$sum.'{up}'.$secretKey;
    return hash('sha256', $hashStr);
}<br>
	

Пример формирования цифровой подписи на Perl:

sub getSignature {
    my ($method, $params, $secretKey) = @_;
    delete $params->{sign};
    delete $params->{signature};
    my $s = $method;
    foreach my $key (sort keys %{$params}) {
        $s .= '{up}' . $params->{$key};
    }
    $s .= '{up}' . $secretKey;
    use Digest::SHA qw(sha256_hex);
    return sha256_hex($s);
}<br>
	

Дополнительные параметры оплаты:

  Значение  Описание
currency  строка Валюта заказа по стандарту ISO 4217 (RUB, UAH, BYN, EUR, USD). Если платежная система не поддерживает требуемую валюту, то сумма будет сконвертирована в валюту системы оплаты
locale строка Принудительное указание языка платежной формы, допустимые значения: ru, en. По умолчанию язык формы определяется исходя из страны, к которой относится IP адрес пользователя
backUrl строка Адрес возврата пользователя с платежной формы без совершения покупки, по умолчанию используется адрес проекта. В адресе обязательно должен использоваться домен проекта. Примеры: "https://redirect.<домен проекта>/?someParams", "https://<домен проекта>/redirect/"

Онлайн-кассы для юридических лиц РФ

Значение Описание
customerEmail строка Email плательщика
customerPhone число Телефон плательщика в международном формате без "+"
cashItems строка Позиции заказа. name - название позиции, count - количество, price - цена, type - тип позиции из таблицы Типы позиций чека онлайн кассы, если не указано - то commodity. 

Значение данного параметра обязательно должно быть переведено в json и закодировано с помощью base64. Формат позиций параметра: base64_encode(json_encode([["name" => "Хостинг на 1 месяц", "count" => 1, "price" => 10.00, "type" => "commodity"]]));

Метод оплаты по умолчанию

Вы можете определить платежную систему, которая будет использоваться по умолчанию для пользователя. Для этого в конец URL вашей платежной формы (к примеру https://unitpay.money/pay/demo) добавьте параметр / код_системы, соответствующий буквенному коду платежной системы.

Возврат на сайт магазина

После инициализации оплаты пользователь переходит на страницу чека, где отслеживается статус платежа. При получении успешного либо ошибочного статуса пользователь перенаправляется на сайт партнера (поля Fail URL/Success URL в настройках личного кабинета) с GET параметрами:

  Значение Описание
account текст Идентификатор абонента в системе партнера (например, логин или email абонента)
paymentId число Номер платежа в системе UnitPay