Skip to content

invoice

endpoint

https://sci.any.money/invoice.

Модуль invoice предназначен для обработки операций пополнения балансов мерчанта клиентами. Им выставляется сгенерированный счет, который они могут оплатить двумя путями:
- в валюте счета полностью;
- произвольными частями, в различных валютах, с конвертацией в валюту зачисления баланса мерчанта.
Клиенты могут вернуть сумму переплаты или недостаточный для оплаты счета базовый платеж, если не планируют производить доплату.
Пополнение баланса мерчанта производится системой только после поступлении суммы равной или превышающей ту, что передана в выставленном счете.
Комиссия за базовый платеж взимается с мерчанта, но операционные расходы по доплатам или возвращению средств несут уже клиенты-плательщики.

Форма запроса содержит следующие параметры:

Внимание!

Для типизированных мерчантов передаваемая платежная система должна совпадать с типом мерчанта, иначе метод возвратит ошибку

Внимание!

Обратите внимание, что для булевского параметра is_multipay значения передаются именно в строчном (!) формате, строчными буквами. И передача значения "true" равнозначна True, а "false" - False.

Входящие параметры метода создания ордера invoice
param required example description
amount yes "1000,25" сумма invoice-платежа
callback_url no "https://callback_example.com" url-адрес для сервер-серверных сообщений про изменения состояния ордера. Формат сообщений
client_email no "[email protected]" email-адрес плательщика для уведомлений об изменении состояния invoice-платежа
externalid yes "123" уникальный идентификатор, заданный мерчантом
in_curr yes "UAH" валюта пополнения
is_multipay no "false" флаг, обеспечивающий возможность совершения доплаты и получения возврата ("true" = доплата и возврат возможны, "false" = блокированы). default="false"
lifetime no "1d12h" "время жизни" ордера, в секундах или в формате timedelta (строка формата "1w1d1h1m1s1ms"). Допустимый диапазон значений: "7d".."3600s". default="7d"
merchant yes "13" строчное отображение локального идентификатора мерчанта в системе
merchant_payfee no "0,35" доля общей суммы комиссии за поступления, которую оплачивает мерчант (значение в интервале [0..1] c точностью до двух знаков после запятой)
out_curr no "USD" опциональная валюта зачисления invoice-платежа
payway no "card" платежная система, через которую проводится пополнение (возможные варианты: "btc", "perfect", "qiwi"... и т.д.). Для мерчанта, имеющего привязку к ПС, доступна только ПС привязки
redirect_url no "https://example.com/order_page/" url-адрес для перенаправления пользователя по завершению работы или нажатия им кнопки "Назад"
sign yes 128-знаковая цифро-буквенная последовательность уникальная хеш-подпись SCI-запроса

Для параметра lifetime по умолчанию применяется значение "7d".
Если в запросе не указано значение payway, то пользователю будут доступны все активированные в настройках мерчанта методы оплаты.

Значения отрезков времени в формате timedelta передаются в парах: <значение><ключ><значение><ключ>…<значение><ключ> без пробелов между парами.
Возможна передача только секунд в виде значения без ключа. Но, если в строке формата timedelta применён хоть один ключ, то она обязана завершаться ключом, а не цифрой, иначе будет возвращена ошибка.

В случае возникновения ошибки пользователь будет перенаправлен на страницу информации о ней.

web form

HTML
<form name="payment" method="post" action="https://sci.any.money/invoice" accept-charset="UTF-8">
    <input type="hidden" name="sign" value=""/>
    <input type="hidden" name="merchant" value=""/>
    <input type="hidden" name="amount" value="100.25"/>
    <input type="hidden" name="in_curr" value="UAH"/>
    <input type="hidden" name="payway" value="card"/>
    <input type="hidden" name="externalid" value="123"/>
    <input type="hidden" name="expiry" value="600"/>
    <input type="hidden" name="client_email" value="[email protected]"/>
    <input type="hidden" name="callback_url" value="https://example.com/order_handler"/>
    <input type="hidden" name="redirect_url" value="https://example.com/order_page/"/>
    <input type="submit" value="Pay">
</form>

signnature

Каждый SCI-запрос, направляемый в модуль invoice, заверяется подписью, которая формируется по алгоритму HEX(HMAC-SHA512(data, sci_key)), где:
- data - строка, составленная из значений параметров. Они добавляются в запрос в порядке следования ключей, отсортированных по алфавиту;
- sci_key - invoice-ключ мерчанта.

Пример формирования подписи

Python
import hashlib
import hmac

def sign_form_data(key: str, data: dict) -> str:
    if data: sorted_data = sorted(data.items())
    else: sorted_data = {}

    msg = ''.join(
        str(v) for k, v in sorted_data
        if not isinstance(v, (dict, list, type(None)))
    )
    msg = msg.lower()

    return hmac.new(key.encode(), msg.encode(), hashlib.sha512).hexdigest()
PHP
<?php
function sign_form_data(string $key, array $data) : string {
    ksort($data);
    $s = '';
    foreach($data as $k=>$value) {
      if (in_array(gettype($value), array('array', 'object', 'NULL')) ){
          continue;
        }
        if(is_bool($value)){
            $s .= $value ? "true" : "false";
        } else {
            $s .= $value;
        }
    }
    return hash_hmac('sha512', strtolower($s), $key);
}
?>