Создание платежа

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

Для взаимодействия с API используйте библиотеку Unitpay PHP-SDK.
https://unitpay.money/api?
     method=initPayment
     params[paymentType]=yandex
     params[account]=order413
     params[sum]=10.00
     params[projectId]=1
     params[resultUrl]=http://вашсайт.ru 
     params[ip]=77.129.27.24
     params[secretKey]=ключ
     params[signature]=цифровая подпись
     params[preauth]=1
     params[customerEmail]=Email плательщика

Обязательные параметры:

Значение Описание
paymentType строка Код платежной системы, через которую будет идти оплата
account
строка Идентификатор абонента в системе партнера (например, логин или email абонента)
sum число Сумма платежа в рублях (например, 10.00)
projectId число ID вашего проекта в системе UnitPay
resultUrl строка Urlencoded адрес перехода пользователя после оплаты (например, http://вашсайт.money). Если параметр не задан, то будет использован адрес страницы чека платежа.
desc строка Описание заказа
ip строка IP адрес плательщика
secretKey строка Секретный ключ, доступен в настройках проекта

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

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


Параметры в зависимости от типа оплаты:
Значение Описание
phone число Телефон с кодом страны (например, 79520000000)
operator строка Буквенный код оператора для SMS-биллинга. Для остальных систем оператор определяется автоматически


   Значение 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 адрес пользователя
signature строка Цифровая подпись запроса. Данная функция является обязательной у всех новых партнёров Unitpay. Они защищает вас от злоумышленников - подмены описания или стоимости заказа, размещения ссылки на оплату на ресурсах мошенников.
backUrl строка Адрес возврата пользователя с платежной формы без совершения покупки, по умолчанию используется адрес проекта. В адресе обязательно должен использоваться домен проекта. Примеры: "https://redirect.<домен проекта>/?someParams", "https://<домен проекта>/redirect/"
subscription true/false Используйте данный флаг, если требуется создать подписку по карте плательщика. Идентификатор подписки (subscriptionId) будет передан в методе PAY на ваш обработчик платежа. Использование подписок возможно только после согласования с вашим курирующим менеджером
subscriptionId число Идентификатор подписки, по которой требуется произвести списание средств. Данный параметр должен быть предварительно получен в методе PAY на ваш обработчик платежа 
preauth true/false Используйте этот флаг для создания платежа с преавторизацией, по умолчанию флаг выключен и значение равно 0
preauthExpireLogic число Поле для логики блокировки платежей с преавторизацией   
0 - При отсутствии запроса на подтверждение или отмену, платеж по истечении срока блокировки на стороне банка-эквайера (~114 часов после создания платежа) будет подтвержден
1 - При отсутствии запроса на подтверждение или отмену, платеж по истечении срока блокировки на стороне банка-эквайера (~114 часов после создания платежа) будет отменен. 
Если параметр не будет использован, платеж будет отменен по истечении срока.
Запрос можно выполнить в тестовом режиме. Узнать подробнее

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

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

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


Успешный ответ

{"result": {
	"message": "Платеж успешно создан.",
	"paymentId": "1400072",  
	"type": "redirect", 
	"redirectUrl": "http://unitpay.money/pay/redirect/111-ab34c22" 
}}
	
  Значение Описание
message строка Информация о результате формирования платежа
type  строка redirect — требуется переадресация на шлюз платежной платформы
invoice — счет создан автоматически, оплата производится пользователем посредством личного кабинета платежной системы
paymentId  число Номер платежа в системе UnitPay
redirectUrl строка URL для переадресации пользователя на шлюз платежной платформы. Если платеж не требует переадресации, то данный параметр будет отсутствовать

Ошибочный ответ

{"error": {
	"message": "Описание ошибки"
}}
	
  Значение Описание
message строка Информация с описанием ошибки формирования платежа