По любому вопросу мы в одном клике

Задать вопрос

Общее описание

Вы можете использовать наш API продавца, чтобы создать нужный вам сценарий оплаты. Например, вы можете создать собственную полностью настроенную платежную страницу и подключить ее к нашему платежному шлюзу.

Вы можете скачать коллекцию API-запросов для Postman, чтобы протестировать основные возможности API. Обязательно отправляйте запросы как POST с атрибутами в теле запроса.

sandbox_eCommerce.postman_collection.jsonСкачать коллекцию Postman

Обязательность параметров

Обязательность присутствия параметра в запросе/ответе может принимать следующие значения:

Обязательность передачи параметра в описании запроса/ответа указывается в одноименном столбце "Обязательность".

Аутентификация

Для аутентификации мерчанта в платежном шлюзе можно использовать два метода.

ОбязательностьНазваниеТипОписание
УсловиеuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
ОбязательностьНазваниеТипОписание
УсловиеtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.

URL для API-вызовов

TEST: https://abby.rbsuat.com/payment/rest/
PROD: https://ecom.alfabank.by/payment/rest/

Ошибки

Коды состояния HTTP:

Если запрос, связанный с оплатой заказа, обработан успешно, это еще не означает, что сам платеж прошел успешно.

Чтобы определить, был ли платеж успешным или нет, вы можете обратиться к описанию использованного запроса. Также для выяснения статуса платежа всегда можно использовать алгоритм, описанный ниже

  1. Вызвать getOrderStatusExtended.do;
  2. Проверить поле orderStatus в ответе: заказ считается оплаченным, только если значение orderStatus равно 1 или 2.

Подпись запроса API

В некоторых случаях для обеспечения безопасного обмена данными может потребоваться реализовать асимметричную подпись запроса. Обычно это требование применяется, только если вы выполняете запросы P2P/AFT/OCT.

Чтобы иметь возможность подписывать запросы, вам необходимо выполнить следующие шаги:

  1. Создайте и загрузите сертификат.
  2. Рассчитайте хеш и подпись, используя свой закрытый ключ, и передайте сгенерированный хеш (X-Hash) и значение подписи (X-Signature) в заголовке запроса.

Эти шаги подробно описаны ниже.

Создание и загрузка сертификата

  1. Создайте 2048-битный закрытый ключ RSA. Способ генерации зависит от политики конфиденциальности в вашей компании. Например, вы можете сделать это с помощью OpenSSL:

    openssl genrsa -des3 -out private.key 2048

  2. Создайте общедоступный CSR (запрос на подпись сертификата), используя сгенерированный закрытый ключ:

    openssl req -key private.key -new -out public.csr

  3. Создайте сертификат, используя сгенерированный закрытый ключ и CSR. Пример формирования сертификата на 5 лет:

    openssl x509 -signkey private.key -in public.csr -req -days 1825 -out public.cer

  4. Загрузите сгенерированный сертификат в Личный кабинет. Для этого перейдите в Сертификаты кошельков > Merchant API, нажмите Добавить сертификат и загрузите сгенерированный общедоступный сертификат.


JCC installments final page

Вычисление хеша и подписи

  1. Рассчитайте хеш SHA256 тела запроса следующим образом:

  2. Используйте тело запроса в виде строки (в нашем примере это amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api).

  3. Вычислите хэш SHA256 из этой строки в необработанных байтах.

  4. Преобразуйте необработанные байты в кодировку base64.

  5. Сгенерируйте подпись для вычисленного хеша SHA256 с помощью алгоритма RSA, используя закрытый ключ.

В нашем примере мы используем следующий закрытый ключ с паролем 12345:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C502560EDE8F82B7
O4+bY1Q1ZcXFLDGVE8s9G2iVISHR/c/IMZKZEjkBED/TbuOCUGVjcav2ZaZO2dO0 lm771N6JNB01uhJbTHScVQ6R0UnGezHFTcsJlAlBa9RQyOwujs4Pk6riOGnLliIs urnTXD0oskBR1wLRA2kp8+V0UPOAMXQaoLxFGE/o8taDGSrkyIcYTBoh9o7ZBxvO SqUWAt2vPbGVyc6XspyuVtgHgEctaJO+E26QTweqdpN5JITF+fDFPNwUrFHoho4N pxpKRWbiCJSpbvbsvhdizkmfgvRw+qYJvTirF3JTfGr14DttudFwjm7sNrr0JILR XPKDUhRyWjkthZM+oDjF2HwISAGkbxcpn4PU7Tywq0uax+5KCQQn2uz4jLM2P6+9 000cvVLwhMnoUdOxuISRXeOcOWVyTO1mPfKiWnHaoO4yS3Y36OCIOe9RHGP8TTmq acb3LUIF30eQyk3KxH/tUB0ScPDKEKMiww13/Kcfr0JkdIe/BWCvV+hSQm38TLQe bTFy+wnD9kHACCwTSVVSOO+rHgJGVIyLgnpClZKWQyyJ4clH7/cORA7mTmp85Ckx IjV5Egu0bPPUMudOB5BnQ4u85RnqXavasgrLRA3JZM4+Jzl8MNy/fsFXnVBQLJJC Wlz/B7S7W8sabRogFuiqkkPmXE/QcpdKQoY3yh748QqMSl8vkA6WgndyYv1EnDDl jA5j7vSf0wKI8BHgdHBEWuEjn3X/s0S/BiPPI6puboYY90tYVJTWSQCR83QrMF3N BIcMu4+RIYu6GWnPx9npZpt0858c670ZII56np24iMse3qgHCOZxsGOenK2x7ta6 163gvaD8bu8xoeQcGVfd6IMbXWVb0+z1hvWR5HWHSalof4lMzZrDsQDKc2UA0ygh hA1+VAl1MAEHVLNCCmyG1SwRwg1PI7FfftW7YARngCZRWkJ1haj1fgy7rtYolrdv lEz/vjFD6diABx67omGgfiJhWdiKIlzsYlX1SW7yaik/Uxf1j8gTFwY34y8ekVd9 6pQTzV2V/4a48ELZl4LvelLWyt1AB3AR+/fM7YG6LYIqlo+qnLtro7Bqu8RNTNRP wcWCd04r/20ulFWMIH8pVa60C98pSdOXriWEI1KDLc0E/fCdhjW2kL+FTPLC7ORe cuzmfI27+06P/BvLZq/FAVBrDAmkioKwe6XYzTjpK1p5jZ3IrNwjAiasY1MNxCRy 5ufhQwkW//d+VUdU5m8Sm30/kXe9UkxMaetXgzPxbB7+5QFFr0bi7D1MjIrJNtTx 5g5E+UfOhqrp8ztBht9csQeFYSYabyyGX4Lh7ymVWrKCVdHlJib3M36nvOjpV/lA zf35sxFz9kaQqNK7xJdQ9Bx6TBUzLjpYhNry37vKk+SIB6Weo+LJ99mALMeX79CB osRqZqX5yrZhaQ8bbpo981nvLy5xFnpRqCuSWVZrVMBq3LQLaOvaCeyGC0V+ZN0C CU6lHlR6XQqd/IjoEN8+8aiVp6Ubw8FuD28TDaEvCltrX3ARL0xFpABsa42LgV1F 09Vi+ju7SSNDvbezN8q0EILq9xp/zNCVhMpyRCIXBq9fzHkyCZ5qMw==
-----END RSA PRIVATE KEY-----

Получаем подпись: pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ== 3. Теперь вам следует передать сгенерированный хэш (X-Hash) и значение подписи (X-Signature) в заголовке запроса. Запрос будет выглядеть так:

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/register.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --header 'X-Hash: eYkMUF+xaYJhsETTIGsctl6DBNZha1ITN8muCcWQtZk=' \
  --header 'X-Signature: pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ==' \
  --data 'amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api'

Запрос должен соответствовать следующим требованиям:

Пример кода Java

Ниже приведен пример кода Java, который загружает закрытый ключ, вычисляет хэш SHA256, подписывает его с помощью закрытого ключа с паролем 12345, а затем отправляет правильный запрос register.do:

import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.Signature;
import java.util.Base64;

import static java.net.HttpURLConnection.HTTP_OK;

public class SimpleSignatureExample {

    // This example is not production ready. It just shows how to use signatures in API.
    public static void main(String[] args) throws Exception {
        // load private key from jks
        KeyStore ks = KeyStore.getInstance("JKS");
        char[] pwd = "123456".toCharArray();
        ks.load(Files.newInputStream(Paths.get("/path/to/certificates.jks")), pwd);
        PrivateKey privateKey = (PrivateKey) ks.getKey("111111", pwd);

        // Sign
        String httpBody = "amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api";

        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privateKey);

        byte[] sha256 = digest.digest(httpBody.getBytes());
        signature.update(sha256);
        byte[] sign = signature.sign();

        // Send
        Base64.Encoder encoder = Base64.getEncoder();
        HttpsURLConnection connection = (HttpsURLConnection) new URL("https://<YOUR_DOMAIN>/payment/rest/register.do").openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod("POST");
        connection.addRequestProperty("content-type", "application/x-www-form-urlencoded");
        connection.addRequestProperty("X-Hash", encoder.encodeToString(sha256));
        connection.addRequestProperty("X-Signature", encoder.encodeToString(sign));
        connection.addRequestProperty("Content-Length", String.valueOf(httpBody.getBytes().length));
        try (final DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
            outputStream.write(httpBody.getBytes());
            outputStream.flush();
        }
        connection.connect();

        InputStream inputStream = connection.getResponseCode() == HTTP_OK ? connection.getInputStream() : connection.getErrorStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}

Пример кода Python

Ниже приведен пример кода Python, который генерирует подпись:

import OpenSSL
from OpenSSL import crypto
import base64
from hashlib import sha256
key_file = open("./priv.pem", "r")
key = key_file.read()
key_file.close()

if key.startswith('-----BEGIN '):
    pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key)
else:
    pkey = crypto.load_pkcs12(key, password).get_privatekey()

data = "amount=2000&currency=978&userName=test_user&password=test_user_password&returnUrl=https%3A%2F%2Fmybestmerchantreturnurl.com&description=my_first_order&language=en"

sha256_hash = sha256(data.encode()).digest()
base64_hash = base64.b64encode(sha256_hash)
print(base64_hash)

sign = OpenSSL.crypto.sign(pkey, sha256_hash, "sha256")

signed_base64 = base64.b64encode(sign)
print(signed_base64)

Файл закрытого ключа для примера Python должен иметь формат:

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdpOwhY/p9x0WmBd3HaDfCD+KYung3M8Cxrw0ozF+h//GltRdnkJD7ejsBDB6/YeIVXZeU3AyqWvsi/IfeHwnokGxVg2IMw8OPacY6o1x7W0EQtfRoZa2Cn2PMCpZhEHlIVraXZDDeg4HY26YP0FZxRbpNnpXhGbiop+Bq0wHeE3JIk53cRmwYhxdxMmvFpgNd6C3dYhmnQqLv6WSpVNDFbQxBVU+JDNyR9FQwB1dU2MadgYwFJnEssbhUkM+sXAC4Wv3qhcZek6MWeWsbFIIlyTPa1T3yrWSXIb4qFJEro4pRMmwQ72qG02p8EPx1tlveQo22TojV9WbTPtaVwQtxAgMBAAECggEBANheTGkYOYsZwgMdzPAB7BSU/0bLGdoBuoV6dqUyRdVWjqaOTwe519625uzR0R5RRqxGzlfyLKcM5Aa2cUhEEp8mhatA87G0Va8lue66VOjTH4RZq/tR7v0J7hlc6Ipe05brl5nYo+BEjriNS+I6Jnizcfid7IBvZJW4NFr0G+mWTxl2BhUK/Mk895n8hg9QtgSRoMNO4jK2f0vJrH4hBHehTYpjHx+QhbUyIvsp60bEnNOXzl054TuWBVCYAQHcHTTZowWMY0s1Z0kGNxwsqQm4amW/v+1EqCF4fjRDrU6v/kjDKxGFx9GJUktKZAe2T8e2LySjgGpJO5g4AdxIVpUCgYEA8x9te+i2ijxoS3kIUSwXaPq5EdKGWGl5mW8KZHzmt9LB/CqTKvSOiDkMGoAx/76t5QmKOYojP+Vsc2XdfQfhT6d00MGTdiPBd+8//MmQQ07/D1/PV58Jd1O8bQFU4fZCMpQl/8Azp9ix/NEx0sHDv2KigLfFMBVGeJxwSoU2JzMCgYEA6WJC0BDTA9vx+i+p9i/41f7ozpQuYey5sxdZa2emOSYen6ptxUFLAYXMxVDaBJ89PMUa8GzWoXHhgXzbuRJk74IzUhWgPpneS4HTr5KDStJh2TqWWVLwEIgLwxvtuw0i9uSEU64D/Czzm801lrOhVgmZsWwNpFtP8ujz0v84MssCgYEA1P4YhbB3kx2e5VfwgGSXUcIttr5wMi6deF0+hpCh9DNw/QEzkzNTV2ZbAzCCHSKo5/n2nbg2b3kIDQUWCL6JlqYHAghErwBeMztoHIddmoovjAGM/Z93xJGYhwremWOL1RHTRH7XAlomfG2tL43PdvDrmsbkut44sdujyLVxnt8CgYBirK3tBMADKLJVgmOM+FlwORe7iAFYW9tj8iJXe/pWvVxDS66fsOyCl0ytvHKBc8ZTdE7gilPw7JJYyi6oQDO25EjIkuYusaXALQMQf5TNRMgkLVY2LA/eHXdDpgJMjNBUrOeZ7cA3ldXl8MyQjCBRnTuDPVlDPWw/GulEM65SIwKBgQDIEv8XK2YBkZrr+0fZSFTQAeK4R7Ve3z4hbpHhJi41YanCNaEWoeYAuQd6/b/QLwABllvfJBDYCNnF8heUxqISpyWd+FZ8nhZtxBoKj5l80czTcutIz/M+ETcvl8FqnMBsoCdp1wodqaLkOx6DIldgKLze6AqKXl5lHUsU4mvVqg==
-----END PRIVATE KEY-----

Регистрация заказа

Регистрация заказа

Для регистрации заказа используется запрос https://abby.rbsuat.com/payment/rest/register.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
УсловиеuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
ОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
ОбязательноreturnUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноfailUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноdynamicCallbackUrlString [1..512]Параметр для передачи динамического адреса для получения "платежных" callback-уведомлений по заказу, активированных для мерчанта (успешная авторизация, успешное списание, возврат, отмена, отклонение платежа по таймауту, отклонение card present платежа).
"Не платежные" callback-уведомления (включение/выключение связки, создание связки), будут отправляться на статический callback адрес.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноmerchantLoginString [1..255]Чтобы зарегистрировать заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноcardholderNameString [1..150]Имя держателя карты латинскими буквами. При передаче данного параметра имя держателя карты будет отображено на платежной странице.
НеобязательноjsonParamsObjectНабор дополнительных атрибутов произвольной формы, структура:
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноsessionTimeoutSecsInteger [1..9]Продолжительность жизни заказа в секундах. В случае если параметр не задан, будет использовано значение, указанное в настройках мерчанта, или время по умолчанию (1200 секунд = 20 минут). Если в запросе присутствует параметр expirationDate, то значение параметра sessionTimeoutSecs не учитывается.
НеобязательноexpirationDateString [19]Дата и время истечения срока действия заказа. Формат: yyyy-MM-ddTHH:mm:ss.
Если этот параметр не передается в запросе, то для определения времени истечения срока действия заказа используется параметр sessionTimeoutSecs.
НеобязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноfeaturesStringФункции заказа. Чтобы указать несколько функций, используйте этот параметр несколько раз в одном запросе. Ниже приведены возможные значения.
  • AUTO_PAYMENT - платеж проводится без проверки подлинности владельца карты (без CVC и 3D-Secure). Чтобы проводить подобные платежи у мерчанта должны быть соответствующие разрешения. Это устаревшее значение, не рекомендуем использовать его для новых интеграций.
  • VERIFY - если передать это значение в запросе на оформление заказа, владелец карты будет верифицирован, однако никакого списания средств не произойдет, так что в этом случае параметр amount может иметь значение 0. Верификация позволяет убедиться, что карта находится в руках владельца, и впоследствии списывать с этой карты средства, не прибегая к проверке аутентификационных данных (CVC, 3D-Secure) при совершении последующих платежей. Даже если сумма платежа будет передана в запросе, она не будет списана со счета клиента при передаче значения VERIFY. Это значение также можно использовать для создания cвязки — в этом случае параметр clientId также должен быть передан. Подробнее читайте здесь.
  • FORCE_TDS - Принудительное проведение платежа с использованием 3-D Secure. Если карта не поддерживает 3-D Secure, транзакция не пройдет.
  • FORCE_SSL - Принудительное проведение платежа через SSL (без использования 3-D Secure).
  • FORCE_FULL_TDS - После проведения аутентификации с помощью 3-D Secure статус PaRes должен быть только Y, что гарантирует успешную аутентификацию пользователя. В противном случае транзакция не пройдет.
  • FORCE_CREATE_BINDING - передача этого значения в запросе на оформление заказа принудительно создает связку. Эта функциональность должна быть включена на уровне продавца в шлюзе. Это значение нельзя передать в запросе с существующим bindingId или же bindingNotNeeded = true (вызовет ошибку проверки). Когда эта функция передается, параметр clientId также должен быть передан. Если в блоке features переданы оба значения FORCE_CREATE_BINDING и VERIFY, то заказ будет создан ТОЛЬКО для создания связки (без оплаты).
НеобязательноpostAddressString [1..255]Адрес доставки.
НеобязательноorderBundleObjectОбъект, содержащий корзину товаров. Описание вложенных элементов приведено ниже.
НеобязательноfeeInputInteger [0..8]Размер комиссии в минимальных единицах валюты. Функциональность должна быть включена на уровне продавца в шлюзе.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Адрес электронной почты не проверяется при регистрации, он будет проверен позже при оплате.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Описание параметров в объекте orderBundle:

ОбязательностьНазваниеТипОписание
НеобязательноorderCreationDateString [19]Дата создания заказа в формате YYYY-MM-DDTHH:MM:SS.
НеобязательноcustomerDetailsObjectБлок, содержащий атрибуты клиента. Описание атрибутов тега приведено ниже.
ОбязательноcartItemsObjectОбъект, содержащий атрибуты товаров в корзине. Описание вложенных элементов приведено ниже.

Описание параметров в объекте customerDetails:

ОбязательностьНазваниеТипОписание
НеобязательноcontactString [0..40]Предпочитаемый клиентом способ связи.
НеобязательноfullNameString [1..100]ФИО плательщика.
НеобязательноpassportString [1..100]Серия и номер паспорта плательщика в следующем формате: 2222888888
НеобязательноdeliveryInfoObjectОбъект, содержащий атрибуты адреса доставки. Описание вложенных элементов приведено ниже.

Описание параметров в объекте deliveryInfo:

ОбязательностьНазваниеТипОписание
НеобязательноdeliveryTypeString [1..20]Способ доставки.
ОбязательноcountryString [2]Двухбуквенный код страны доставки.
ОбязательноcityString [0..40]Город назначения.
ОбязательноpostAddressString [1..255]Адрес доставки.

Описание параметров в объекте cartItems:

ОбязательностьНазваниеТипОписание
ОбязательноitemsObjectЭлемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте items:

ОбязательностьНазваниеТипОписание
ОбязательноpositionIdInteger [1..12]Уникальный идентификатор товарной позиции в корзине.
ОбязательноnameString [1..255]Наименование или описание товарной позиции в свободной форме.
НеобязательноitemDetailsObjectОбъект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже.
ОбязательноquantityObjectЭлемент, описывающий общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже.
НеобязательноitemAmountInteger [1..12]Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice. В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount, то itemAmount должен равняться itemPrice * quantity, в противном случае запрос завершится с ошибкой.
НеобязательноitemPriceInteger [1..18]Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты.
НеобязательноdepositedItemAmountString [1..18]Сумма списания для одного positionId в минимальных единицах валюты (например, в копейках).
НеобязательноitemCurrencyInteger [3]Код валюты ISO 4217. Если не указан, считается равным валюте заказа.
ОбязательноitemCodeString [1..100]Номер (идентификатор) товарной позиции в системе магазина.

Описание параметров в объекте quantity:

ОбязательностьНазваниеТипОписание
ОбязательноvalueNumber [1..18]Количество товарных позиций данного positionId. Для указания дробных чисел используйте десятичную точку. Допускается максимально 3 знака после точки.
ОбязательноmeasureString [1..20]Единица измерения количества по позиции.

Описание параметров в объекте itemDetails:

ОбязательностьНазваниеТипОписание
НеобязательноitemDetailsParamsObjectПараметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте itemDetailsParams:

ОбязательностьНазваниеТипОписание
ОбязательноvalueString [1..2000]Дополнительная информация по товарной позиции.
ОбязательноnameString [1..255]Наименование параметра описания детализации товарной позиции

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноformUrlString [1..512]URL платежной формы, на которую будет перенаправлен покупатель. URL не возвращается, если регистрация заказа не прошла из-за ошибки, указанной в errorCode.
НеобязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/register.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data amount=123456 \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderNumber=1234567890ABCDEF \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data failUrl=https://mybestmerchantfailurl.com \
  --data email=test@test.com \
  --data clientId=259753456 \
  --data features=FORCE_SSL \
  --data language=en \
  --data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'

Пример ответа - успех

{
  "orderId": "01491d0b-c848-7dd6-a20d-e96900a7d8c0",
  "formUrl": "https://abby.rbsuat.com/payment/payment/merchants/ecom/payment_en.html?mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0"
}

Пример ответа - ошибка

{
  "errorCode": "1",
  "errorMessage": "Order number is duplicated, order with given order number is processed already"
}

Регистрация заказа с предавторизацией

Для запроса регистрации заказа с предавторизацией используется метод https://abby.rbsuat.com/payment/rest/registerPreAuth.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
УсловиеuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
ОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
ОбязательноreturnUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноfailUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноdynamicCallbackUrlString [1..512]Параметр для передачи динамического адреса для получения "платежных" callback-уведомлений по заказу, активированных для мерчанта (успешная авторизация, успешное списание, возврат, отмена, отклонение платежа по таймауту, отклонение card present платежа).
"Не платежные" callback-уведомления (включение/выключение связки, создание связки), будут отправляться на статический callback адрес.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноmerchantLoginString [1..255]Чтобы зарегистрировать заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноcardholderNameString [1..150]Имя держателя карты латинскими буквами. При передаче данного параметра имя держателя карты будет отображено на платежной странице.
НеобязательноjsonParamsObjectНабор дополнительных атрибутов произвольной формы, структура:
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноsessionTimeoutSecsInteger [1..9]Продолжительность жизни заказа в секундах. В случае если параметр не задан, будет использовано значение, указанное в настройках мерчанта, или время по умолчанию (1200 секунд = 20 минут). Если в запросе присутствует параметр expirationDate, то значение параметра sessionTimeoutSecs не учитывается.
НеобязательноexpirationDateString [19]Дата и время истечения срока действия заказа. Формат: yyyy-MM-ddTHH:mm:ss.
Если этот параметр не передается в запросе, то для определения времени истечения срока действия заказа используется параметр sessionTimeoutSecs.
НеобязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноfeaturesStringФункции заказа. Чтобы указать несколько функций, используйте этот параметр несколько раз в одном запросе. Ниже приведены возможные значения.
  • AUTO_PAYMENT - платеж проводится без проверки подлинности владельца карты (без CVC и 3D-Secure). Чтобы проводить подобные платежи у мерчанта должны быть соответствующие разрешения. Это устаревшее значение, не рекомендуем использовать его для новых интеграций.
  • VERIFY - если передать это значение в запросе на оформление заказа, владелец карты будет верифицирован, однако никакого списания средств не произойдет, так что в этом случае параметр amount может иметь значение 0. Верификация позволяет убедиться, что карта находится в руках владельца, и впоследствии списывать с этой карты средства, не прибегая к проверке аутентификационных данных (CVC, 3D-Secure) при совершении последующих платежей. Даже если сумма платежа будет передана в запросе, она не будет списана со счета клиента при передаче значения VERIFY. Это значение также можно использовать для создания cвязки — в этом случае параметр clientId также должен быть передан. Подробнее читайте здесь.
  • FORCE_TDS - Принудительное проведение платежа с использованием 3-D Secure. Если карта не поддерживает 3-D Secure, транзакция не пройдет.
  • FORCE_SSL - Принудительное проведение платежа через SSL (без использования 3-D Secure).
  • FORCE_FULL_TDS - После проведения аутентификации с помощью 3-D Secure статус PaRes должен быть только Y, что гарантирует успешную аутентификацию пользователя. В противном случае транзакция не пройдет.
  • FORCE_CREATE_BINDING - передача этого значения в запросе на оформление заказа принудительно создает связку. Эта функциональность должна быть включена на уровне продавца в шлюзе. Это значение нельзя передать в запросе с существующим bindingId или же bindingNotNeeded = true (вызовет ошибку проверки). Когда эта функция передается, параметр clientId также должен быть передан. Если в блоке features переданы оба значения FORCE_CREATE_BINDING и VERIFY, то заказ будет создан ТОЛЬКО для создания связки (без оплаты).
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноpostAddressString [1..255]Адрес доставки.
НеобязательноorderBundleObjectОбъект, содержащий корзину товаров. Описание вложенных элементов приведено ниже.
НеобязательноfeeInputInteger [0..8]Размер комиссии в минимальных единицах валюты. Функциональность должна быть включена на уровне продавца в шлюзе.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Адрес электронной почты не проверяется при регистрации, он будет проверен позже при оплате.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Описание параметров в объекте orderBundle:

ОбязательностьНазваниеТипОписание
НеобязательноorderCreationDateString [19]Дата создания заказа в формате YYYY-MM-DDTHH:MM:SS.
НеобязательноcustomerDetailsObjectБлок, содержащий атрибуты клиента. Описание атрибутов тега приведено ниже.
ОбязательноcartItemsObjectОбъект, содержащий атрибуты товаров в корзине. Описание вложенных элементов приведено ниже.

Описание параметров в объекте customerDetails:

ОбязательностьНазваниеТипОписание
НеобязательноcontactString [0..40]Предпочитаемый клиентом способ связи.
НеобязательноfullNameString [1..100]ФИО плательщика.
НеобязательноpassportString [1..100]Серия и номер паспорта плательщика в следующем формате: 2222888888
НеобязательноdeliveryInfoObjectОбъект, содержащий атрибуты адреса доставки. Описание вложенных элементов приведено ниже.

Описание параметров в объекте deliveryInfo:

ОбязательностьНазваниеТипОписание
НеобязательноdeliveryTypeString [1..20]Способ доставки.
ОбязательноcountryString [2]Двухбуквенный код страны доставки.
ОбязательноcityString [0..40]Город назначения.
ОбязательноpostAddressString [1..255]Адрес доставки.

Описание параметров в объекте cartItems:

ОбязательностьНазваниеТипОписание
ОбязательноitemsObjectЭлемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте items:

ОбязательностьНазваниеТипОписание
ОбязательноpositionIdInteger [1..12]Уникальный идентификатор товарной позиции в корзине.
ОбязательноnameString [1..255]Наименование или описание товарной позиции в свободной форме.
НеобязательноitemDetailsObjectОбъект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже.
ОбязательноquantityObjectЭлемент, описывающий общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже.
НеобязательноitemAmountInteger [1..12]Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice. В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount, то itemAmount должен равняться itemPrice * quantity, в противном случае запрос завершится с ошибкой.
НеобязательноitemPriceInteger [1..18]Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты.
НеобязательноdepositedItemAmountString [1..18]Сумма списания для одного positionId в минимальных единицах валюты (например, в копейках).
НеобязательноitemCurrencyInteger [3]Код валюты ISO 4217. Если не указан, считается равным валюте заказа.
ОбязательноitemCodeString [1..100]Номер (идентификатор) товарной позиции в системе магазина.

Описание параметров в объекте quantity:

ОбязательностьНазваниеТипОписание
ОбязательноvalueNumber [1..18]Количество товарных позиций данного positionId. Для указания дробных чисел используйте десятичную точку. Допускается максимально 3 знака после точки.
ОбязательноmeasureString [1..20]Единица измерения количества по позиции.

Описание параметров в объекте itemDetails:

ОбязательностьНазваниеТипОписание
НеобязательноitemDetailsParamsObjectПараметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте itemDetailsParams:

ОбязательностьНазваниеТипОписание
ОбязательноvalueString [1..2000]Дополнительная информация по товарной позиции.
ОбязательноnameString [1..255]Наименование параметра описания детализации товарной позиции

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
НеобязательноformUrlString [1..512]URL платежной формы, на которую будет перенаправлен покупатель. URL не возвращается, если регистрация заказа не прошла из-за ошибки, указанной в errorCode.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/registerPreAuth.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data amount=2000 \
  --data userName=test_user \
  --data password=test_user_password \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data orderNumber=1255555555555 \
  --data clientId=259753456 \
  --data language=en

Пример ответа

{
  "orderId": "01492437-d2fb-77fa-8db7-9e2900a7d8c0",
  "formUrl": "https://abby.rbsuat.com/payment/merchants/pay/payment_en.html?mdOrder=01492437-d2fb-77fa-8db7-9e2900a7d8c0"
}

Прямые платежи

Оплата заказа

Для оплаты ранее зарегистрированного заказа используется запрос https://abby.rbsuat.com/payment/rest/paymentorder.do.
Запрос используется в режиме внутренний MPI/3DS Server, для этого не требуется наличие дополнительных разрешений и/или сертификаций.
Запрос используется в режиме внешнего MPI/3DS Server если у вас есть договор с международной платежной системой или сертификат, который позволяет самостоятельно проводить аутентификацию 3DS. Это означает, что вы можете использовать собственный MPI/3DS Server для аутентификации клиента с использованием технологии 3D Secure. Дополнительная информация об оплате с собственным MPI/3DS Server доступна здесь.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Оплата заказа (внутренний MPI/3DS Server)

Оплата заказа происходит с передачей карточных платежных данных, а так же с использованием технологии аутентификации 3DS (применение аутентификации регулируется настройками, регулируемых службой поддержки).

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноMDORDERString [1..36]Номер заказа в платежном шлюзе.
Условие$PANInteger [1..19]Номер платежной карты. Обязательный, если не передан seToken.
Условие$CVCString [3]Код CVC/CVV2 на обратной стороне карты. Обязательный, если не передан seToken.
Допускаются только цифры.
УсловиеYYYYInteger [4]Год окончания действия платежной карты. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
УсловиеMMInteger [2]Месяц окончания действия платежной карты. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
Условие$EXPIRYInteger [6]Срок действия карты в следующем формате: YYYYMM. Переопределяет параметры YYYY и MM. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
УсловиеseTokenStringЗашифрованные данные карты, которые заменяют параметры $PAN, $CVC и $EXPIRY (или YYYY,MM). Используйте этот параметр, если вы не уверены в надежности канала взаимодействия и не хотите скомпрометировать платежные данные клиентов. Обязательно, если используется вместо данных карты.
Обязательные параметры для строки seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Подробнее о генерации seToken см. здесь.
Если seToken содержит шифрованные данные о связке (bindingId), для оплаты следует использовать запрос paymentOrderBinding.do.
ОбязательноTEXTString [1..512]Имя держателя карты.
ОбязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноbindingNotNeededBooleanДопустимые значения:
  • true- создание связки после совершения платежа отключено (связка – это идентификатор клиента, переданный в запросе на регистрацию заказа, который после запроса оплаты будет удален из деталей заказа);
  • false – в случае успешной оплаты может быть создана связка (при соблюдении необходимых условий). Это значение по умолчанию.
НеобязательноjsonParamsObjectПоля дополнительной информации для последующего хранения, передаются в следующем виде: jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Если вы используете внешний MPI/3DS Server, платежный шлюз ожидает, что каждый запрос paymentOrder будет включать ряд дополнительных параметров, таких как eci, xid, cavv и пр. Более подробная информация здесь.
Чтобы инициировать 3RI аутентификацию, вам может быть необходимо передать ряд дополнительных параметров (см. 3RI аутентификация).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноthreeDSSDKBooleanВозможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS SDK.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.
НеобязательноclientBrowserInfoObjectБлок данных о браузере клиента, который отправляется на ACS во время 3DS аутентификации. Этот блок можно передавать, только если включена специальная настройка (обратитесь в команду поддержки). См. вложенные параметры.
УсловиеoriginalPaymentNetRefNumStringИдентификатор оригинальной или предыдущей успешной транзакции в платежной системе по отношению к выполняемой операции по связке - TRN ID. Передается, если значение параметра tii = R,U или F.
Обязателен при использовании связок мерчанта в переводах по связке.
УсловиеoriginalPaymentDateStringДата инициирующей транзакции. Значение в формате Unix timestamp в миллисекундах. Передается, если значение параметра tii = R,U или F.
НеобязательноacsInIFrameBooleanФлаг, показывающий, что для финишного URL будет возвращаться iFrame версия. Возможные значения true или false. Для подключения данной функциональности обратитесь в службу поддержки.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
FВнеплановый платеж (CIT)ПоследующаяПокупательКлиент выбирает карту вместо ручного вводаНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку.
UВнеплановый платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку. Используется только для одностадийных платежей.
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
RРекуррентный платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетРекуррентная операция, использующая сохраненную связку. Используется только для одностадийных платежей.

Ниже приведены параметры блока clientBrowserInfo (данные о браузере клиента).

ОбязательностьНазваниеТипОписание
НеобязательноuserAgentString [1..2048]Агент браузера.
НеобязательноOSStringОперационная система.
НеобязательноOSVersionStringВерсия операционной системы.
НеобязательноbrowserAcceptHeaderString [1..2048]Заголовок Accept, который сообщает серверу, какие форматы (или MIME-типы) поддерживает браузер.
НеобязательноbrowserIpAddressString [1..45]IP-адрес браузера.
НеобязательноbrowserLanguageString [1..8]Язык браузера.
НеобязательноbrowserTimeZoneStringЧасовой пояс браузера.
НеобязательноbrowserTimeZoneOffsetString [1..5]Смещение часового пояса в минутах между локальным временем пользователя и UTC.
НеобязательноcolorDepthString [1..2]Глубина цвета экрана, в битах.
НеобязательноfingerprintStringОтпечаток браузера - уникальный цифровой идентификатор браузера.
НеобязательноisMobileBooleanВозможные значения: true или false. Флаг, указывающий на то, что используется мобильное устройство.
НеобязательноjavaEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка java.
НеобязательноjavascriptEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка javascript.
НеобязательноpluginsStringСписок плагинов, используемых в браузере, через запятую.
НеобязательноscreenHeightInteger [1..6]Высота экрана в пикселях.
НеобязательноscreenWidthInteger [1..6]Ширина экрана в пикселях.
НеобязательноscreenPrintStringДанные о параметрах печати браузера, включая разрешение, глубину цвета, плотность пикселей.

Пример блока clientBrowserInfo:

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

При аутентификации по протоколу 3DS2 также передаются следующие параметры:

ОбязательностьНазваниеТипОписание
НеобязательноthreeDSServerTransIdString [1..36]Идентификатор транзакции, созданный на сервере 3DS. Обязателен для аутентификации 3DS.
НеобязательноthreeDSVer2FinishUrlString [1..512]URL-адрес, по которому клиент должен быть перенаправлен после аутентификации на сервере ACS.
НеобязательноthreeDSMethodNotificationUrlString [1..512]URL-адрес для отправки уведомления о прохождении проверки на ACS.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноinfoStringВ случае успешного ответа. Результат попытки оплаты. Ниже приведены возможные значения.
  • Ваш платеж обработан, происходит переадресация...
  • Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию. Происходит переадресация...
  • Извините, платеж не может быть совершен. Происходит переадресация...
  • Операция отклонена. Обратитесь в магазин. Происходит переадресация...
  • Операция отклонена. Обратитесь в банк, выпустивший карту. Происходит переадресация...
  • Операция невозможна. Аутентификация держателя карты завершена неуспешно. Происходит переадресация...
  • Нет связи с банком. Повторите позже. Происходит переадресация...
  • Истек срок ожидания ввода данных. Происходит переадресация...
  • Не получен ответ от банка. Повторите позже. Происходит переадресация...
НеобязательноredirectString [1..512]Этот параметр возвращается, если платеж прошел успешно и для платежа не проводилась проверка карты на вовлеченность в 3-D Secure. Продавцы могут использовать его, если хотят перенаправить пользователя на страницу платежного шлюза. Если продавец использует собственную страницу, это значение можно игнорировать.
НеобязательноtermUrlString [1..512]При успешном ответе в случае оплаты 3D-Secure. Это URL-адрес, на который ACS перенаправляет владельца карты после аутентификации. Подробнее см. Редирект на ACS.
НеобязательноacsUrlString [1..512]URL-адрес для редиректа на ACS. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Подробнее см. Редирект на ACS.
НеобязательноpaReqString [1..255]PAReq (Payment Authentication Request) — сообщение, которое необходимо отправить в ACS вместе с редиректом. Возвращается при успешном ответе в случае оплаты 3D-Secure, если необходим редирект на ACS. Это сообщение содержит данные в кодировке Base64, необходимые для аутентификации держателя карты. Подробнее см. Редирект на ACS.

При аутентификации по протоколу 3DS2 в ответ на первый запрос приходят следующие параметры:

ОбязательностьНазваниеТипОписание
Обязательноis3DSVer2BooleanВозможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS2.
ОбязательноthreeDSServerTransIdString [1..36]Идентификатор транзакции, созданный на сервере 3DS. Обязателен для аутентификации 3DS.
НеобязательноthreeDSMethodUrlString [1..512]URL-адрес сервера ACS для сбора данных браузера.
ОбязательноthreeDSMethodUrlServerString [1..512]URL-адрес сервера 3DS для сбора данных браузера, которые будут включены в AReq (Authentication Request) с сервера 3DS на сервер ACS.
НеобязательноthreeDSMethodDataPackedString [1..1024]Данные CReq (Challenge Response) в кодировке Base-64 для отправки на сервер ACS.
НеобязательноthreeDSMethodURLServerDirectString [1..512]URL-адрес 3dsmethod.do для выполнения метода 3DS на сервере 3DS через платежный шлюз (при наличии соответствующего разрешения на уровне продавца).

Ниже приведены параметры, которые должны присутствовать в ответе, после повторного запроса платежа и необходимости перенаправления клиента в ACS при аутентификации по протоколу 3DS2:

ОбязательностьНазваниеТипОписание
УсловиеacsUrlString [1..512]URL-адрес для редиректа на ACS. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Подробнее см. Редирект на ACS.
УсловиеpackedCReqStringЗапакованные данные challenge request. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Это значение следует использовать как значение параметра creq ссылки на ACS (acsUrl), для перенаправления клиента на ACS. Подробнее см. Редирект на ACS.

Примеры

Пример запроса

Пример первого запроса:

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/paymentorder.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
  --data '$PAN=4000001111111118' \
  --data '$CVC=123' \
  --data YYYY=2030 \
  --data MM=12 \
  --data 'TEXT=TEST CARDHOLDER' \
  --data language=en \
  --data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'

Пример второго запроса:

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/paymentorder.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
  --data '$PAN=4000001111111118' \
  --data '$CVC=123' \
  --data YYYY=2030 \
  --data MM=12 \
  --data 'TEXT=TEST CARDHOLDER' \
  --data language=en \
  --data threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6

Пример запроса c криптограммой (seToken):

curl --location --request POST 'https://abby.rbsuat.com/payment/rest/paymentorder.do' \
    --header 'Content-type: application/x-www-form-urlencoded' \
    --data-urlencode 'MDORDER=63447c9c-b432-7c8e-962f-161c0008f9da' \
    --data-urlencode 'language=en' \
    --data-urlencode 'TEXT=CARDHOLDER NAME' \
    --data-urlencode 'email=' \
    --data-urlencode 'seToken=Cfqv4t2XHBb9k8ixM7jxxCvziETS4koa3bV3F0QUvGVY47nKyMBqjGzV%2FrvmCAw6KzwoBDzeLsqwBLEzvQhaF627ZS0OJnhttBi4fL3%2Fh%2FsBSwFtxr3s%2BoVUeoE3e4SNVUq9vciinOyNCIKqfpeQya%2BpOUYt3MgrtSeu66Ar12XEj4k6lecZN7Ffquj9RqhZsYhP63np5VCxJR90cNQG%2BTMWIFU6rqxLAe4gzCJtcXNrPT8aDOI201Zwd%2Be4K1YnrI7dZGlibO7MVMPB9m7NJaJTHko%2FMiJNWumAjS4yDDovLraIKMwOFTvAhqXsHslthpcUO0GZXEIaDRgERD7%2Bjw%3D%3D' \
    --data-urlencode 'userName=tm-api' \
    --data-urlencode 'password=XXXXXXX'

Примеры ответа

Пример ответа на первый запрос:

{
  "errorCode": 0,
  "is3DSVer2": true,
  "threeDSServerTransId": "5802746e-3393-40c3-929a-dc966ebf08c6",
  "threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
  "threeDSMethodURLServer": "example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6",
  "threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}

Пример ответа на второй запрос:

{
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0,
  "acsUrl": "https://example.com/acs2/acs/creq",
  "is3DSVer2": true,
  "packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU4MDI3NDZlLTMzOTMtNDBjMy05MjlhLWRjOTY2ZWJmMDhjNiIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiODFmZTU1ODUtZmZhOS00Y2NkLTljMjAtY2QzYWFiZDQwNTllIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}

Оплата заказа (в режиме внешнего MPI/3DS Server)

Для использования запроса paymenOrder.do в режиме внешний MPI/3DS Server вам необходимо выполнить аутентификацию 3DS с использованием вашего собственного сервера MPI/3DS.
Также вам необходимо дополнительное разрешение, назначаемое службой поддержки.

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноMDORDERString [1..36]Номер заказа в платежном шлюзе.
Условие$PANInteger [1..19]Номер платежной карты. Обязательный, если не передан seToken.
Условие$CVCString [3]Код CVC/CVV2 на обратной стороне карты. Обязательный, если не передан seToken.
Допускаются только цифры.
УсловиеYYYYInteger [4]Год окончания действия платежной карты. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
УсловиеMMInteger [2]Месяц окончания действия платежной карты. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
Условие$EXPIRYInteger [6]Срок действия карты в следующем формате: YYYYMM. Переопределяет параметры YYYY и MM. Если seToken не передан, обязательно необходимо передать либо $EXPIRY, либо YYYY и MM.
УсловиеseTokenStringЗашифрованные данные карты, которые заменяют параметры $PAN, $CVC и $EXPIRY (или YYYY,MM). Используйте этот параметр, если вы не уверены в надежности канала взаимодействия и не хотите скомпрометировать платежные данные клиентов. Обязательно, если используется вместо данных карты.
Обязательные параметры для строки seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Подробнее о генерации seToken см. здесь.
Если seToken содержит шифрованные данные о связке (bindingId), для оплаты следует использовать запрос paymentOrderBinding.do.
ОбязательноTEXTString [1..512]Имя держателя карты.
ОбязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноbindingNotNeededBooleanДопустимые значения:
  • true- создание связки после совершения платежа отключено (связка – это идентификатор клиента, переданный в запросе на регистрацию заказа, который после запроса оплаты будет удален из деталей заказа);
  • false – в случае успешной оплаты может быть создана связка (при соблюдении необходимых условий). Это значение по умолчанию.
НеобязательноjsonParamsObjectПоля дополнительной информации для последующего хранения, передаются в следующем виде: jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Если вы используете внешний MPI/3DS Server, платежный шлюз ожидает, что каждый запрос paymentOrder будет включать ряд дополнительных параметров, таких как eci, xid, cavv и пр. Более подробная информация здесь.
Чтобы инициировать 3RI аутентификацию, вам может быть необходимо передать ряд дополнительных параметров (см. 3RI аутентификация).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.
НеобязательноclientBrowserInfoObjectБлок данных о браузере клиента, который отправляется на ACS во время 3DS аутентификации. Этот блок можно передавать, только если включена специальная настройка (обратитесь в команду поддержки). См. вложенные параметры.
НеобязательноacsInIFrameBooleanФлаг, показывающий, что для финишного URL будет возвращаться iFrame версия. Возможные значения true или false. Для подключения данной функциональности обратитесь в службу поддержки.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
FВнеплановый платеж (CIT)ПоследующаяПокупательКлиент выбирает карту вместо ручного вводаНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку.
UВнеплановый платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку. Используется только для одностадийных платежей.
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
RРекуррентный платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетРекуррентная операция, использующая сохраненную связку. Используется только для одностадийных платежей.

Ниже приведены параметры блока clientBrowserInfo (данные о браузере клиента).

ОбязательностьНазваниеТипОписание
НеобязательноuserAgentString [1..2048]Агент браузера.
НеобязательноOSStringОперационная система.
НеобязательноOSVersionStringВерсия операционной системы.
НеобязательноbrowserAcceptHeaderString [1..2048]Заголовок Accept, который сообщает серверу, какие форматы (или MIME-типы) поддерживает браузер.
НеобязательноbrowserIpAddressString [1..45]IP-адрес браузера.
НеобязательноbrowserLanguageString [1..8]Язык браузера.
НеобязательноbrowserTimeZoneStringЧасовой пояс браузера.
НеобязательноbrowserTimeZoneOffsetString [1..5]Смещение часового пояса в минутах между локальным временем пользователя и UTC.
НеобязательноcolorDepthString [1..2]Глубина цвета экрана, в битах.
НеобязательноfingerprintStringОтпечаток браузера - уникальный цифровой идентификатор браузера.
НеобязательноisMobileBooleanВозможные значения: true или false. Флаг, указывающий на то, что используется мобильное устройство.
НеобязательноjavaEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка java.
НеобязательноjavascriptEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка javascript.
НеобязательноpluginsStringСписок плагинов, используемых в браузере, через запятую.
НеобязательноscreenHeightInteger [1..6]Высота экрана в пикселях.
НеобязательноscreenWidthInteger [1..6]Ширина экрана в пикселях.
НеобязательноscreenPrintStringДанные о параметрах печати браузера, включая разрешение, глубину цвета, плотность пикселей.

Пример блока clientBrowserInfo:

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноinfoStringВ случае успешного ответа. Результат попытки оплаты. Ниже приведены возможные значения.
  • Ваш платеж обработан, происходит переадресация...
  • Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию. Происходит переадресация...
  • Извините, платеж не может быть совершен. Происходит переадресация...
  • Операция отклонена. Обратитесь в магазин. Происходит переадресация...
  • Операция отклонена. Обратитесь в банк, выпустивший карту. Происходит переадресация...
  • Операция невозможна. Аутентификация держателя карты завершена неуспешно. Происходит переадресация...
  • Нет связи с банком. Повторите позже. Происходит переадресация...
  • Истек срок ожидания ввода данных. Происходит переадресация...
  • Не получен ответ от банка. Повторите позже. Происходит переадресация...

Примеры

Пример запроса

curl --request POST \\
  --url https://abby.rbsuat.com/payment/rest/paymentorder.do \\
  --header 'content-type: application/x-www-form-urlencoded' \\
  --data userName=test_user \\
  --data password=test_user_password \\
  --data MDORDER=0140dda0-71ed-7706-a61f-36bd00a7d8c0 \\
  --data '$PAN=4000001111111118' \\
  --data '$CVC=123' \\
  --data YYYY=2030 \\
  --data MM=12 \\
  --data 'TEXT=TEST CARDHOLDER' \\
  --data language=en \\
  --data 'jsonParams={
  "eci": "02",
  "cavv": "AkZO5XQAA0rhBxoaufa+MAABAAA=",
  "xid": "5010857f-8d3f-74e1-9c5a-54a000cc4110",
  "threeDSProtocolVersion": "2.2.0",
  "authenticationTypeIndicator": "5"
}'

Пример ответа

{
  "redirect": "https://abby.rbsuat.com/payment/merchants/temp/finish.html?orderId=01493844-d4d3-703f-9f7e-a73900a7d8c0",
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0
}

MOTO-платеж

Для осуществления MOTO-платежей используется метод https://abby.rbsuat.com/payment/rest/motoPayment.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
НеобязательноuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
НеобязательноpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
НеобязательноtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
НеобязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
ОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
ОбязательноreturnUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноfailUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноmerchantLoginString [1..255]Для проведения МОТО-платежа от имени другого мерчанта укажите в этом параметре логин API-аккаунта продавца.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноpostAddressString [1..255]Адрес доставки.
НеобязательноjsonParamsObjectНабор дополнительных атрибутов произвольной формы, структура:
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноfeaturesStringФункции заказа. Чтобы указать несколько функций, используйте этот параметр несколько раз в одном запросе. Ниже приведены возможные значения.
  • AUTO_PAYMENT - платеж проводится без проверки подлинности владельца карты (без CVC и 3D-Secure). Чтобы проводить подобные платежи у мерчанта должны быть соответствующие разрешения. Это устаревшее значение, не рекомендуем использовать его для новых интеграций.
  • VERIFY - если передать это значение в запросе на оформление заказа, владелец карты будет верифицирован, однако никакого списания средств не произойдет, так что в этом случае параметр amount может иметь значение 0. Верификация позволяет убедиться, что карта находится в руках владельца, и впоследствии списывать с этой карты средства, не прибегая к проверке аутентификационных данных (CVC, 3D-Secure) при совершении последующих платежей. Даже если сумма платежа будет передана в запросе, она не будет списана со счета клиента при передаче значения VERIFY. Это значение также можно использовать для создания cвязки — в этом случае параметр clientId также должен быть передан. Подробнее читайте здесь.
  • FORCE_TDS - Принудительное проведение платежа с использованием 3-D Secure. Если карта не поддерживает 3-D Secure, транзакция не пройдет.
  • FORCE_SSL - Принудительное проведение платежа через SSL (без использования 3-D Secure).
  • FORCE_FULL_TDS - После проведения аутентификации с помощью 3-D Secure статус PaRes должен быть только Y, что гарантирует успешную аутентификацию пользователя. В противном случае транзакция не пройдет.
  • FORCE_CREATE_BINDING - передача этого значения в запросе на оформление заказа принудительно создает связку. Эта функциональность должна быть включена на уровне продавца в шлюзе. Это значение нельзя передать в запросе с существующим bindingId или же bindingNotNeeded = true (вызовет ошибку проверки). Когда эта функция передается, параметр clientId также должен быть передан. Если в блоке features переданы оба значения FORCE_CREATE_BINDING и VERIFY, то заказ будет создан ТОЛЬКО для создания связки (без оплаты).
НеобязательноdynamicCallbackUrlString [1..512]Параметр для передачи динамического адреса для получения "платежных" callback-уведомлений по заказу, активированных для мерчанта (успешная авторизация, успешное списание, возврат, отмена, отклонение платежа по таймауту, отклонение card present платежа).
"Не платежные" callback-уведомления (включение/выключение связки, создание связки), будут отправляться на статический callback адрес.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См. вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
ОбязательноpanString [1..19]Маскированный номер карты, которая использовалась для оплаты. Этот параметр указывается только после оплаты заказа. При оплате через Apple Pay в качестве номера карты используется DPAN - это номер, привязанный к мобильному устройству клиента, который функционирует как номер платежной карты в системе Apple Pay.
ОбязательноexpiryInteger [6]Срок действия карты в следующем формате: YYYYMM. Обязательно, если не переданы ни seToken, ни bindingId.
ОбязательноcardholderString [1..26]Имя держателя карты латинскими буквами. Этот параметр передается только после оплаты заказа.
НеобязательноcvcString [3]Передача параметра определяется типом платежа:
  • передача cvc предусмотрена не для всех токенизированных платежей;
  • передача cvc не предусмотрена для MIT платежей;
  • передача cvc обязательна по умолчанию для всех других типов платежей; но если для мерчанта выбрано разрешение Может проводить оплату без подтверждения CVC, то в таком случае передача cvc становится необязательной.
    Допускаются только цифры.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
ОбязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
ОбязательноmdOrderString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноuserMessageString [1..512]Сообщению пользователю с описанием кода результата.

Примеры

Пример запроса

curl --request POST \
--url https://abby.rbsuat.com/payment/rest/motoPayment.do \
--header 'content-type: application/x-www-form-urlencoded' \
  --data amount=2000 \
  --data currency=933 \
  --data userName=test_user \
  --data password=test_user_password \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data description=my_first_order \
  --data pan=4000001111111118 \
  --data expiry=203012 \
  --data cvc=123 \
  --data cardholder="TEST CARDHOLDER" \
  --data language=en

Пример ответа - успешный платеж

{
   "errorCode":"0",
   "success":true,
   "mdOrder":"088433e9-e34d-769e-9366-696200a7d8c0",
   "orderNumber":"62001"
}

Редирект на ACS (упрощенный)

Если требуется 3-D Secure, то после получения ответа на запрос оплаты клиент должен быть перенаправлен на ACS. В этом случае ответ на запрос оплаты содержит параметр acsUrl, который будет использоваться для перенаправления.

Запрос https://abby.rbsuat.com/payment/acsRedirect.do?orderId={orderId} позволяет перенаправить клиента на страницу аутентификации ACS упрощенным способом - просто используя параметр orderId, полученный после регистрации заказа.

Также возможно перенаправление клиента на ACS с помощью POST-запроса (обычный редирект). Описание этого метода доступно здесь.

Без каких-либо других действий, требуемых от клиента, платежный шлюз перенаправляет его на страницу ACS, где клиент аутентифицируется.

Затем, в зависимости от результата аутентификации, клиент перенаправляется на следующий URL-адрес:

Чтобы перенаправить клиента на ACS, используйте следующий URL-адрес:

https://abby.rbsuat.com/payment/acsRedirect.do?orderId={Номер заказа в платежном шлюзе}

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Параметры ответа

Пример

Пример запроса

curl -X GET https://abby.rbsuat.com/payment/acsRedirect.do?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1

Пример URL редиректа

https://mybestmerchantreturnurl.com/?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1

Кошельки

Регистрация заказа Apple Pay

Для регистрации и оплаты заказа используется метод https://abby.rbsuat.com/payment/applepay/payment.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноmerchantString [1..255]Чтобы зарегистрировать и оплатить заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноadditionalParametersObjectДополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
При создании связки в этом тэге могут быть переданы параметры, определяющие тип создаваемой связки. См. список параметров.
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
ОбязательноpaymentTokenString [1..8192]Параметр paymentToken должен содержать расшифрованное и закодированное в Base64 значение свойства paymentData, полученного из объекта PKPaymentToken Object от системы Apple Pay (подробнее см. документацию Apple Pay). Таким образом, чтобы сделать запрос на оплату в платежный шлюз, продавец должен:
  1. получить PKPaymentToken Object, содержащий paymentData от Apple Pay;
  2. извлечь значение paymentData и закодировать его в Base64;
  3. включить закодированное значение свойства paymentData в качестве значения параметра paymentToken в запросе на оплату, который продавец направит в платежный шлюз.
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения.
УсловиеclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
УсловиеphoneString [7..15]Номер телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.

Дополнительные параметры, определяющие тип создаваемой связки и передаваемые в additionalParameters:

ОбязательностьНазваниеТипОписание
УсловиеinstallmentsInteger [3]Максимальное количество разрешенных авторизаций для платежей в рассрочку.
Указывается в случае создания связки для выполнения платежей в рассрочку.
УсловиеrecurringFrequencyInteger [2]Минимальное количество дней между авторизациями. Целое положительное число от 1 до 28 включительно.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.
УсловиеrecurringExpiryString [8]Дата, после которой дальнейшие авторизации не должны выполняться. Формат: YYYYMMDD.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки. Это значение возможно передать только при наличии разрешения "Разрешено создание vendor pays common связок".
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
УсловиеdataObjectЭтот параметр возвращается только в случае успешной обработки платежа. См. описание ниже.
УсловиеerrorObjectЭтот параметр возвращается только в случае ошибки платежа. См. описание ниже.
УсловиеorderStatusObjectСодержит параметры статуса заказа и возвращается только в том случае, если платежный шлюз распознал все параметры запроса как правильные. См. описание ниже.

Блок data содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Блок error содержит следующие элементы.

ОбязательностьНазваниеТипОписание
codeString [1..3]Код как информационный параметр, сообщающий об ошибке.
descriptionString [1..598]Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.
messageString [1..512]Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.

Блок orderStatus содержит следующие элементы.

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноorderStatusIntegerЗначение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - заказ только авторизован и еще не завершен (для двухстадийных платежей);
  • 2 - заказ авторизован и завершен;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена;
  • 7 - ожидание оплаты заказы;
  • 8 - промежуточное завершение для многократного частичного завершения.
НеобязательноactionCodeStringКод ответа от процессинга банка. Содержит числовое значение. См. список кодов ответа здесь.
НеобязательноactionCodeDescriptionString [1..512]Описание actionCode, возвращаемое процессингом банка.
НеобязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноdateIntegerДата регистрации заказа как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
УсловиеmerchantOrderParamsObjectОбъект с атрибутами, в которых передаются дополнительные параметры мерчанта. См. описание ниже.
УсловиеattributesObjectАтрибуты заказа в платежной системе (номер заказа). См. описание ниже.
УсловиеcardAuthInfoObjectИнформация о платежной карте покупателя. См. описание ниже.
НеобязательноauthDateTimeIntegerДата и время авторизации, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
НеобязательноterminalIdString [1..10]Идентификатор терминала в системе, обрабатывающей платеж.
НеобязательноauthRefNumString [1..24]Номер авторизации платежа, присвоенный ему при регистрации платежа.
УсловиеpaymentAmountInfoObjectПараметр, содержащий вложенные параметры с информацией о суммах подтверждения, списания и возврата. См. описание ниже.
УсловиеbankInfoObjectСодержит вложенный параметр bankCountryName. См. описание ниже.

Блок merchantOrderParams содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноnameString [1..255]Название дополнительного параметра мерчанта.
ОбязательноvalueString [1..1024]Значение дополнительного параметра продавца - до 1024 символов.

Блок attributes содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноnameString [1..255]Название дополнительного параметра.
ОбязательноvalueString [1..1024]Значение дополнительного параметра - до 1024 символов.

Блок cardAuthInfo содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноexpirationInteger [6]Срок действия карты в следующем формате: YYYYMM.
ОбязательноcardholderNameString [1..26]Имя держателя карты латинскими буквами. Допустимые символы: латинские буквы, точка, пробел.
ОбязательноapprovalCodeString [6]Код авторизации МПС. Это поле имеет фиксированную длину (шесть символов) и может содержать цифры и латинские буквы.
ОбязательноpanString [1..19]Маскированный DPAN: номер, привязанный к мобильному устройству покупателя и выполняющий функции номера платежной карты в системе Apple Pay.

Блок paymentAmountInfo содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноpaymentStateStringСостояние заказа, параметр может принимать следующие значения:
  • CREATED - заказ создан (но не оплачен);
  • APPROVED - заказ одобрен (средства на счету покупателя заблокированы);
  • DEPOSITED - заказ завершен (деньги списаны со счета покупателя);
  • DECLINED - заказ отклонен;
  • REVERSED - заказ отклонен;
  • REFUNDED - возврат средств.
ОбязательноapprovedAmountInteger [0..12]Сумма в минимальных единицах валюты (например, в центах), которая была заблокирована на счете покупателя. Используется только в двухстадийных платежах.
ОбязательноdepositedAmountInteger [1..12]Сумма списания в минимальных единицах валюты (например, в копейках).
ОбязательноrefundedAmountInteger [1..12]Сумма возврата в минимальных единицах валюты.

Блок bankInfo содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноbankCountryNameString [1..160]Страна банка-эмитента.

Примеры

Пример запроса

curl --request POST \
--url https://abby.rbsuat.com/payment/applepay/payment.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "additionalParameters" : {
    "phone" : "9521235847",
    "order-pain" : "111",
    "email" : "apple@pay.com"
  },
  "language" : "en",
  "clientId" : "259753456",
  "orderNumber" : "281477871",
  "paymentToken" : "eyJtZXJjaGFudCI6ICJ...FnXCJ9In0=",
  "preAuth" : false
}'

Ответ в случае успешной оплаты

{
    "success": true,
    "data": {
        "orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "229",
        "orderStatus": 1,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 960000,
        "currency": "933",
        "date": 1478682458102,
        "ip": "x.x.x.x",
        "merchantOrderParams": [
            {
                "name": "param2",
                "value": "param2"
            },
            {
                "name": "param1",
                "value": "param1"
            }
        ],
        "attributes": [
            {
                "name": "mdOrder",
                "value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
            }
        ],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "123456",
            "pan": "500000**1115"
        },
        "authDateTime": 1478682459082,
        "terminalId": "12345678",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "APPROVED",
            "approvedAmount": 960000,
            "depositedAmount": 0,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<UNKNOWN>"
        }
    }
}

Ответ в случае неудачной оплаты

{
  "error": {
    "code": 10,
    "description": "Processing Error",
    "message": "Auth is invalid"
  },
  "success": false
}

Apple Pay Direct

Запрос, используемый для осуществления прямого платежа через Apple Pay - https://abby.rbsuat.com/payment/applepay/paymentDirect.do. Он используется для регистрации и оплаты заказа.

Этот запрос можно использовать для интеграций, предполагающих расшифровку платежных данных на стороне продавца.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноfeeInputInteger [0..8]Размер комиссии в минимальных единицах валюты. Функциональность должна быть включена на уровне продавца в шлюзе.
НеобязательноadditionalParametersObjectДополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
При создании связки в этом тэге могут быть переданы параметры, определяющие тип создаваемой связки. См. список параметров.
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
ОбязательноpaymentTokenString [1..8192]Платежные данные, полученные от Apple Pay и расшифрованные продавцом. Последовательность действий:
  1. Получите PKPaymentToken Object от Apple Pay (Payment Token Format Reference) с зашифрованными платежными данными;
  2. Расшифруйте (ECC/RSA) paymentData, чтобы получить текстовое представление объекта: {"applicationPrimaryAccountNumber":"4111111111111111","deviceManufacturerIdentifier":"050110030273","currencyCode":"840","applicationExpirationDate" :"220430","paymentData":{"onlinePaymentCryptogram":"AM32yL0vuOOmAAGG0iQUAoABFA=="}," paymentDataType":"3DSecure","transactionAmount":1010};
  3. Закодируйте в BASE64 открытый текст объекта paymentData и отправьте его как paymentToken.
НеобязательноmerchantString [1..255]Чтобы зарегистрировать и оплатить заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноfeaturesStringВ этом параметре можно передать значение VERIFY. Тогда оплата производиться не будет, вместо этого будет создана связка (будет сохранена карта клиента).
Если передается features, paymentToken.transactionAmount должно быть 0. В противном случае будет возвращена ошибка.
УсловиеclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения.
УсловиеoriginalPaymentNetRefNumStringИдентификатор оригинальной или предыдущей успешной транзакции в платежной системе по отношению к выполняемой операции по связке - TRN ID. Передается, если значение параметра tii = R,U или F.
Обязателен при использовании связок мерчанта в переводах по связке.
УсловиеoriginalPaymentDateStringДата инициирующей транзакции. Значение в формате Unix timestamp в миллисекундах. Передается, если значение параметра tii = R,U или F.
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки. Это значение возможно передать только при наличии разрешения "Разрешено создание vendor pays common связок".
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.

Дополнительные параметры, определяющие тип создаваемой связки и передаваемые в additionalParameters:

ОбязательностьНазваниеТипОписание
УсловиеinstallmentsInteger [3]Максимальное количество разрешенных авторизаций для платежей в рассрочку.
Указывается в случае создания связки для выполнения платежей в рассрочку.
УсловиеrecurringFrequencyInteger [2]Минимальное количество дней между авторизациями. Целое положительное число от 1 до 28 включительно.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.
УсловиеrecurringExpiryString [8]Дата, после которой дальнейшие авторизации не должны выполняться. Формат: YYYYMMDD.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
ОбязательноdataObjectВозвращается только в случае успешной оплаты.
ОбязательноerrorObjectЭтот параметр возвращается только в случае ошибки платежа.
НеобязательноorderStatusIntegerЗначение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - заказ только авторизован и еще не завершен (для двухстадийных платежей);
  • 2 - заказ авторизован и завершен;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена;
  • 7 - ожидание оплаты заказы;
  • 8 - промежуточное завершение для многократного частичного завершения.

Параметры в блоке data:

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Параметры в блоке error:

ОбязательностьНазваниеТипОписание
ОбязательноcodeString [1..3]Код как информационный параметр, сообщающий об ошибке.
ОбязательноmessageString [1..512]Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
ОбязательноdescriptionString [1..598]Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.

Параметры в блоке orderStatus:

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноorderStatusIntegerЗначение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - Предавторизованная сумма захолдирована (для двухстадийных платежей);
  • 2 - проведена полная авторизация суммы заказа;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена.
НеобязательноactionCodeStringКод ответа от процессинга банка. Содержит числовое значение. См. список кодов ответа здесь.
НеобязательноactionCodeDescriptionString [1..512]Описание actionCode, возвращаемое процессингом банка.
НеобязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноdateIntegerДата регистрации заказа как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноmerchantOrderParamsObjectРаздел с атрибутами, в котором передаются дополнительные параметры мерчанта.
НеобязательноcardAuthInfoObjectБлок с данными о карте плательщика см вложенные параметры.
НеобязательноauthDateTimeIntegerДата и время авторизации, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
НеобязательноterminalIdString [1..10]Идентификатор терминала в системе, обрабатывающей платеж.
НеобязательноauthRefNumString [1..24]Номер авторизации платежа, присвоенный ему при регистрации платежа.
НеобязательноpaymentAmountInfoObjectОбъект с информацией о суммах подтверждения, списания, возврата. Список вложенных параметров см. ниже.
НеобязательноbankInfoObjectОбъект, содержащий вложенный параметр bankCountryName, в котором передается наименование страны банка-эмитента (при наличии). Используемый язык совпадает с языком, переданным в параметре запроса language. Если язык не передан, будет использоваться язык пользователя, вызывающего метод.

Параметры в блоке cardAuthInfo:

ОбязательностьНазваниеТипОписание
НеобязательноexpirationIntegerГод и месяц окончания действия карты.
НеобязательноcardholderNameString [1..26]Имя держателя карты (при наличии).
НеобязательноapprovalCodeString [6]Код авторизации МПС. Это поле имеет фиксированную длину (шесть символов) и может содержать цифры и латинские буквы.
НеобязательноpanString [1..19]Маскированный DPAN: номер, привязанный к мобильному устройству покупателя и выполняющий функции номера платежной карты в системе Apple Pay.

Параметры в блоке paymentAmountInfo:

ОбязательностьНазваниеТипОписание
НеобязательноpaymentStateStringСостояние заказа, параметр может принимать следующие значения:
  • CREATED - заказ создан (но не оплачен);
  • APPROVED - заказ одобрен (средства на счету покупателя заблокированы);
  • DEPOSITED - заказ завершен (деньги списаны со счета покупателя);
  • DECLINED - заказ отклонен;
  • REVERSED - заказ отклонен;
  • REFUNDED - возврат средств.
НеобязательноapprovedAmountInteger [0..12]Сумма в минимальных единицах валюты (например, в центах), которая была заблокирована на счете покупателя. Используется только в двухстадийных платежах.
НеобязательноdepositedAmountInteger [1..12]Сумма списания в минимальных единицах валюты (например, в копейках).
НеобязательноrefundedAmountInteger [1..12]Сумма возврата в минимальных единицах валюты.
НеобязательноtotalAmountInteger [1..20]Сумма заказа плюс комиссия, если таковая имеется.

Примеры

Пример запроса

curl --location --request POST 'https://abby.rbsuat.com/payment/applepay/paymentDirect.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "test_user",
    "password": "test_user_password",
    "orderNumber": "947664b3-4a42-4cdf-9f8c-2e9679bad9e4",
    "description": "description of the order",
    "language": "en",
    "paymentToken": "eyJtZXJjaGFudCI6ICJ...FnXCJ9In0="
}'

Примеры ответа - успешный платеж

{
    "success": true,
    "data": {
        "orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "229",
        "orderStatus": 1,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 960000,
        "currency": "933",
        "date": 1478682458102,
        "ip": "x.x.x.x",
        "merchantOrderParams": [
            {
                "name": "param2",
                "value": "param2"
            },
            {
                "name": "param1",
                "value": "param1"
            }
        ],
        "attributes": [
            {
                "name": "mdOrder",
                "value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
            }
        ],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "123456",
            "pan": "500000**1115"
        },
        "authDateTime": 1478682459082,
        "terminalId": "12345678",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "APPROVED",
            "approvedAmount": 960000,
            "depositedAmount": 0,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<UNKNOWN>"
        }
    }
}

Пример ответа - ошибка платежа

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Insufficient amount on card"
  },
  "success": false
}

Регистрация заказа Samsung Pay

Для регистрации и оплаты заказа Samsung Pay используется запрос https://abby.rbsuat.com/payment/samsung/payment.do. См. "Координаты подключения". Этот запрос используется только при оплате из мобильного приложения.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Ниже представлен пример запроса на оплату через Samsung Pay.

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноmerchantString [1..255]Чтобы зарегистрировать и оплатить заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноadditionalParametersObjectДополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
При создании связки в этом тэге могут быть переданы параметры, определяющие тип создаваемой связки. См. список параметров.
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения.
ОбязательноpaymentTokenString [1..8192]Содержимое параметра 3ds.data из ответа, полученного от Samsung Pay.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноcurrencyCodeString [3]Цифровой код валюты платежа ISO 4217. Если не указан, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноfeaturesStringФункции заказа. Чтобы указать несколько функций, используйте этот параметр несколько раз в одном запросе. Ниже приведены возможные значения.
  • AUTO_PAYMENT - платеж проводится без проверки подлинности владельца карты (без CVC и 3D-Secure). Чтобы проводить подобные платежи у мерчанта должны быть соответствующие разрешения. Это устаревшее значение, не рекомендуем использовать его для новых интеграций.
  • VERIFY - если передать это значение в запросе на оформление заказа, владелец карты будет верифицирован, однако никакого списания средств не произойдет, так что в этом случае параметр amount может иметь значение 0. Верификация позволяет убедиться, что карта находится в руках владельца, и впоследствии списывать с этой карты средства, не прибегая к проверке аутентификационных данных (CVC, 3D-Secure) при совершении последующих платежей. Даже если сумма платежа будет передана в запросе, она не будет списана со счета клиента при передаче значения VERIFY. Это значение также можно использовать для создания cвязки — в этом случае параметр clientId также должен быть передан. Подробнее читайте здесь.
  • FORCE_TDS - Принудительное проведение платежа с использованием 3-D Secure. Если карта не поддерживает 3-D Secure, транзакция не пройдет.
  • FORCE_SSL - Принудительное проведение платежа через SSL (без использования 3-D Secure).
  • FORCE_FULL_TDS - После проведения аутентификации с помощью 3-D Secure статус PaRes должен быть только Y, что гарантирует успешную аутентификацию пользователя. В противном случае транзакция не пройдет.
  • FORCE_CREATE_BINDING - передача этого значения в запросе на оформление заказа принудительно создает связку. Эта функциональность должна быть включена на уровне продавца в шлюзе. Это значение нельзя передать в запросе с существующим bindingId или же bindingNotNeeded = true (вызовет ошибку проверки). Когда эта функция передается, параметр clientId также должен быть передан. Если в блоке features переданы оба значения FORCE_CREATE_BINDING и VERIFY, то заказ будет создан ТОЛЬКО для создания связки (без оплаты).
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См. вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки. Это значение возможно передать только при наличии разрешения "Разрешено создание vendor pays common связок".
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.

Дополнительные параметры, определяющие тип создаваемой связки и передаваемые в additionalParameters:

ОбязательностьНазваниеТипОписание
УсловиеinstallmentsInteger [3]Максимальное количество разрешенных авторизаций для платежей в рассрочку.
Указывается в случае создания связки для выполнения платежей в рассрочку.
УсловиеrecurringFrequencyInteger [2]Минимальное количество дней между авторизациями. Целое положительное число от 1 до 28 включительно.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.
УсловиеrecurringExpiryString [8]Дата, после которой дальнейшие авторизации не должны выполняться. Формат: YYYYMMDD.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
УсловиеdataObjectЭтот параметр возвращается только в случае успешной обработки платежа. См. описание ниже.
УсловиеerrorObjectЭтот параметр возвращается только в случае ошибки платежа. См. описание ниже.

Блок data содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Блок error содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноcodeString [1..3]Код как информационный параметр, сообщающий об ошибке.
ОбязательноmessageString [1..512]Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
ОбязательноdescriptionString [1..598]Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.

Примеры

Пример запроса

curl --location --request POST 'https://abby.rbsuat.com/payment/samsung/payment.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "merchant": "sandbox_merchant_test",
    "orderNumber": "1218637308",
    "language": "en",
    "preAuth": true,
    "description": "Test description",
    "additionalParameters": {
        "firstParamName": "firstParamValue",
        "secondParamName": "secondParamValue"
    },
    "paymentToken": "eyJtZXJjaGFudCI6ICJ...FnXCJ9In0=",
    "ip": "x.x.x.x"
}'

Ответ в случае успешной оплаты

{
"success":true,
"data": {
    "orderId": "12312312123"
  }
}

Ответ в случае неудачной оплаты

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Not enough money"
  },
  "success": false
}

Регистрация заказа Samsung Pay Web

Для оплаты заказа через Samsung Pay Web используется запрос https://abby.rbsuat.com/payment/samsungWeb/payment.do. Этот запрос используется для оплаты через сайт, когда платежная форма находится на странице продавца.

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноmdOrderString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
ОбязательноonFailedPaymentBackUrlStringURL-адрес, на который будет перенаправлен покупатель в случае ошибки или превышения срока ожидания.
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessfulString [1]Указывает, что операция была успешно обработана, доступны следующие значения:
  • 1 (успех);
  • 0 (ошибка).
ОбязательноtransactionIdString [1..512]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноhrefString [1..512]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноmodString [1..256]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноexpStringЗначение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноkeyIdString [1..256]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноserviceIdString [1..256]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноcallbackUrlString [1..512]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноcancelUrlString [1..512]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноcountryCodeString [2]Значение, которое необходимо передать в Samsung Pay, вызовом функции connect.
ОбязательноresultTypeStringЗначение, которое необходимо передать в Samsung Pay, вызовом функции connect.
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.

Примеры

Пример запроса

curl --location
 --request POST
 'https://abby.rbsuat.com/payment/samsungWeb/payment.do?mdOrder=b3d45688-8057-7eca-8c6e-11ef484ffa68&onFailedPaymentBackUrl=https://abby.rbsuat.com/payment/merchants/payment_ru.html?mdOrder=b3d45688-8057-7eca-8c6e-11ef484ffa68'

Пример ответа

{
    "successful": true,
    "transactionId": "a8abc1385c1a4fa2ae212e",
    "href": "https://example.samsung.com/onlinepay",
    "mod": "9aa73d7827ef077153c92feb749a8d774f75911021f028c904c663e30451aae5e10dd209c2c9460725536cea91e5b4b3b4eca6cd85765eaed78f6de4fff2c24158685b5ca2afffea1ca42b3e339dbeef3514cc5db06a41caff9370f79d3edf071981a10eaebdce22d563acc94e9f67be110cb66fd6489f67542d1e8adf05c619af2f8d5cf4666ecfa4ee94cbe8db3110d2b3b78fcaf0e749040fe6cef0f9f93a939dd992e021266ca4b400065d79d7bf12fbaffbc53f485615b605b072153c4b7c8d7a119c3ed9c78a09fd7b8aa51a23edb931e0fb720833cf50d35622142011bdb41837d36fd58c33791f7ad588dc3c07533fc54aa4595aedd0220f094c5b29",
    "exp": "10001",
    "keyId": "88859ae8849abef4ba26298c022cb2ff593fa794ba97bfeeb7ebab19458e197a0e97d087d33c77070f00be1a2379eaf780b6b0085b532c03143e7811d2b95092_f991c54480c0496c83c2",
    "serviceId": "5ca8bb795eb54a8992bb72",
    "callbackUrl": "https://abby.rbsuat.com/payment/samsungWeb/paymentCallback.do?mdOrder=b3d45688-8057-7eca-8c6e-11ef484ffa68&onFailedPaymentBackUrl=https%3A%2F%2Fdo65.do.rbstest.ru%2Fpayment%2Fmerchants%2Fsbersafe_sberid%2Fpayment_ru.html%3FmdOrder%3Db3d45688-8057-7eca-8c6e-11ef484ffa68",
    "cancelUrl": "https://abby.rbsuat.com/payment/samsungWeb/paymentCallback.do?mdOrder=b3d45688-8057-7eca-8c6e-11ef484ffa68&onFailedPaymentBackUrl=https%3A%2F%2Fdo65.do.rbstest.ru%2Fpayment%2Fmerchants%2Fsbersafe_sberid%2Fpayment_ru.html%3FmdOrder%3Db3d45688-8057-7eca-8c6e-11ef484ffa68",
    "countryCode": "AR",
    "resultType": "SUCCESSFUL"
}

Samsung Pay Direct

Запрос, используемый для осуществления прямого платежа через Samsung Pay - https://abby.rbsuat.com/payment/samsung/paymentDirect.do. Он используется для регистрации и оплаты заказа.

Этот запрос можно использовать для интеграций, предполагающих расшифровку платежных данных на стороне продавца.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноmerchantString [1..255]Чтобы зарегистрировать и оплатить заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноfeeInputInteger [0..8]Размер комиссии в минимальных единицах валюты. Функциональность должна быть включена на уровне продавца в шлюзе.
НеобязательноadditionalParametersObjectДополнительные параметры интеграции с Samsung Pay Direct, структура: {name1:value1,…,nameN:valueN}.
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateObjectДата автоматического завершения предавторизованного платежа.
НеобязательноautoReverseDateObjectДата автоматической отмены предавторизованного платежа.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
ОбязательноpaymentTokenString [1..8192]Токен, полученный от Samsung Pay и закодированный в Base64. Example:
{"amount": "100", "currency_code": "USD", "utc": "1490687350988", "eci_indicator": "07", "tokenPAN": "5599014702854883", "tokenPanExpiration": "0420", "cryptogram": "ACF9prZs2wsTAAGysReaAoACFA=="}
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения.
УсловиеoriginalPaymentNetRefNumStringИдентификатор оригинальной или предыдущей успешной транзакции в платежной системе по отношению к выполняемой операции по связке - TRN ID. Передается, если значение параметра tii = R,U или F.
Обязателен при использовании связок мерчанта в переводах по связке.
УсловиеoriginalPaymentDateStringДата инициирующей транзакции. Значение в формате Unix timestamp в миллисекундах. Передается, если значение параметра tii = R,U или F.
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См. вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки. Это значение возможно передать только при наличии разрешения "Разрешено создание vendor pays common связок".
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.

Дополнительные параметры, определяющие тип создаваемой связки и передаваемые в additionalParameters:

ОбязательностьНазваниеТипОписание
УсловиеinstallmentsInteger [3]Максимальное количество разрешенных авторизаций для платежей в рассрочку.
Указывается в случае создания связки для выполнения платежей в рассрочку.
УсловиеrecurringFrequencyInteger [2]Минимальное количество дней между авторизациями. Целое положительное число от 1 до 28 включительно.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.
УсловиеrecurringExpiryString [8]Дата, после которой дальнейшие авторизации не должны выполняться. Формат: YYYYMMDD.
Указывается в случае создания связки для выполнения рекуррентных платежей.
Обязательно к передаче в случае создания связки для выполнения платежей в рассрочку при включенном 3DS2.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
Обязательно*dataObjectВозвращается только в случае успешной оплаты.
Обязательно*errorObjectЭтот параметр возвращается только в случае ошибки платежа.

Блок data содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
УсловиеbindingIdString [1..255]Параметр возвращается, если используются связки

Параметры в блоке error:

ОбязательностьНазваниеТипОписание
ОбязательноcodeString [1..3]Код как информационный параметр, сообщающий об ошибке.
ОбязательноmessageString [1..512]Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
ОбязательноdescriptionString [1..598]Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.

Примеры

Пример запроса

curl --request POST \
--url https://abby.rbsuat.com/payment/samsung/paymentDirect.do \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "OurBestMerchantLogin",
"orderNumber": "UAF-203974-DE",
"language": "EN",
"preAuth": true,
"description" : "Test description",
"additionalParameters":
{
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
},
"paymentToken": "eyJtZXJjaGFudCI6ICJ...FnXCJ9In0=",
"ip" : "127.0.0.1"
}'

Примеры ответа - успешный платеж

{
  "success": true,
  "data": {
    "orderId": "12312312123"
  }
}

Пример ответа - ошибка платежа

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Insufficint amount on card"
  },
  "success": false
}

Статус платежа

Самый простой способ узнать статус платежа — использовать специальный вызов API:

  1. Сделать вызов getOrderStatusExtended.do;
  2. Проверить поле orderStatus в ответе: заказ считается оплаченным, только если значение orderStatus равно 1 или 2.

Еще один способ проверить, прошел ли платеж успешно или нет, – это посмотреть уведомление обратного вызова.

Статус заказа

Для получения статуса заказа используется метод https://abby.rbsuat.com/payment/rest/getOrderStatusExtended.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Дополнительная информация о причинах отказа доступна здесь.

Параметры запроса

ОбязательностьНазваниеТипОписание
УсловиеuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
УсловиеorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

УсловиеorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого мерчанта.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноmerchantLoginString [1..255]Чтобы вместо текущего пользователя получить статус заказа определенного мерчанта, укажите логин мерчанта (для API-аккаунта).
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.

Параметры ответа

Существует несколько наборов параметров ответа. Какой набор параметров возвращается в ответе, зависит от версии getOrderStatusExtended, указанной в настройках мерчанта в платежном шлюзе.

Описание версий

ВерсияДобавленные параметры
1orderBundle
2
  • authDateTime
  • terminalId
  • authRefNum
3
  • paymentAmountInfo->approvedAmount, depositedAmount, paymentState, refundedAmount
  • bankInfo->bankCountryCode, bankCountryName, bankName
4Нет изменений
5refunds
6Нет изменений
7cardAuthInfo->secureAuthInfo->paResStatus, veResStatus, paResCheckStatus
8cardAuthInfo->paymentSystem, product
9paymentWay
10depositedDate
11Нет изменений
12
  • refundedDate
  • reversedDate
13payerData->email,phone,postAddress
14transactionAttributes
15
  • prepaymentMdOrder
  • partpaymentMdOrders
16feUtrnno
17cardAuthInfo->productCategory
18totalAmount
19avsCode
20bindingInfo->externalCreated
21refunds->externalRefundId
22Нет изменений
23efectyOrderInfo
24ofdOrderBundle
25Нет изменений
26refunds->approvalCode
27authRefNum
28pluginInfo
29Нет изменений
30cardAuthInfo->secureAuthInfo->aResTransStatus, rReqTransStatus, threeDsProtocolVersion
31Нет изменений
32Нет изменений
33displayErrorMessage
34orderBundle->cartItems->items->depostedItemAmount,itemPrice
35cardAuthInfo->corporateCard
36Нет изменений
37
  • tii
  • usedPsdIndicatorValue
38Нет изменений
39cardAuthInfo -> maskedToken, tokenExpiration
40Нет изменений
41Нет изменений
42Нет изменений
43Нет изменений
44Нет изменений
45Нет изменений
46Нет изменений
47Нет изменений
48Нет изменений
49Нет изменений
ВерсияОбязательностьНазваниеТипОписание
ВсеНеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
ВсеНеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
ВсеУсловиеorderNumberString [1..36]Номер заказа (ID) в системе мерчанта, должен быть уникальным для каждого мерчанта, зарегистрированного в платежном шлюзе. Если номер заказа генерируется на стороне платежного шлюза, этот параметр передавать необязательно.
ВсеНеобязательно orderStatusIntegerЗначение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - заказ только авторизован и еще не завершен (для двухстадийных платежей);
  • 2 - заказ авторизован и завершен;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена;
  • 7 - ожидание оплаты заказы;
  • 8 - промежуточное завершение для многократного частичного завершения.
ВсеОбязательноactionCodeStringКод ответа от процессинга банка. Содержит числовое значение. См. список кодов ответа здесь.
ВсеОбязательноactionCodeDescriptionString [1..512]Описание actionCode, возвращаемое процессингом банка.
ВсеОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
ВсеНеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию.
ВсеОбязательноdateIntegerДата регистрации заказа как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
10+НеобязательноdepositedDateIntegerДата оплаты заказа как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
ВсеНеобязательноorderDescriptionString [1..600]Описание заказа передаваемое платежному шлюзу при регистрации.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
ВсеОбязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
27+НеобязательноauthRefNumString [1..24]Номер авторизации платежа, присвоенный ему при регистрации платежа.
12+, обязательно с 27НеобязательноrefundedDateIntegerДата и время возврата, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
12+НеобязательноreversedDateIntegerДата и время отмены платежа, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
09+ОбязательноpaymentWayStringСпособ совершения платежа (платеж с вводом карточных данных, оплата по связке и т.п.). Дополнительные возможные значения параметра приведены ниже
19+НеобязательноavsCodeStringКод ответа верификации AVS (проверка адреса и почтового индекса держателя карты). Возможные значения:
  • A – почтовый индекс и адрес совпадают.
  • B – адрес совпадает, почтовый индекс не совпадает.
  • C - почтовый индекс совпадает, адрес не совпадает.
  • D - почтовый индекс и адрес не совпадают.
  • E - запрошена проверка данных, но результат неуспешен.
  • F - некорректный формат запроса AVS/AVV проверки.
02+НеобязательноauthDateTimeIntegerДата и время авторизации, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
02+НеобязательноterminalIdString [1..10]Идентификатор терминала в системе, обрабатывающей платеж.
01+НеобязательноorderBundleObjectОбъект, содержащий корзину товаров. Описание вложенных элементов приведено ниже.
03+НеобязательноpaymentAmountInfoObjectОбъект с информацией о суммах подтверждения, списания, возврата. Список вложенных параметров см. ниже.
05+НеобязательноrefundsObjectОбъект, содержащий информацию о возврате средств. Присутствует только при наличии возвратов в заказе. Описание вложенных элементов приведено ниже.
ВсеНеобязательноcardAuthInfoObjectБлок с данными о карте плательщика. Описание вложенных элементов приведено ниже.
14+НеобязательноtransactionAttributesObjectНабор дополнительных атрибутов транзакции. Список вложенных параметров см. ниже.
15+НеобязательноprepaymentMdOrderStringНомер предшествующего заказа на предоплату в платежном шлюзе.
15+НеобязательноpartpaymentMdOrdersArray of StringМассив последующих заказов на частичную оплату.
16+НеобязательноfeUtrnnoInteger [1..18]Номер транзакции FE.
ВсеНеобязательноbindingInfoObjectОбъект, содержащий информацию о связке, по которой осуществляется платеж. См. таблицу с описанием bindingInfo.
23+НеобязательноefectyOrderInfoObjectБлок параметров, связанных с платежным способом EFECTY. Описание вложенных элементов приведено ниже.
28+НеобязательноpluginInfoObjectПрисутствует в ответе, если оплата была произведена через платежный плагин. См. вложенные параметры ниже.
33+НеобязательноdisplayErrorMessageStringОтображаемое сообщение об ошибке.
37+НеобязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Описание вложенных элементов приведено ниже.
37+НеобязательноusedPsdIndicatorValueStringТип исключения SCA (Strong Customer Authentication). Содержит значение, переданное при оплате заказа в параметре externalScaExemptionIndicator.
Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Значения параметра paymentWay:

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
ПустоОбычныйПокупательВводится покупателемНетТранзакция электронной коммерции без сохранения связки.
CIИнициирующий - Обычный (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
FВнеплановый платеж (CIT)ПоследующаяПокупательКлиент выбирает карту вместо ручного вводаНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку.
UВнеплановый платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку. Используется только для одностадийных платежей.
RIИнициирующий - Рекурентные (CIT)ИнициирующаяПокупательВводится покупателемДаТранзакция электронной коммерции с сохранением связки.
RРекуррентный платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетРекуррентная операция, использующая сохраненную связку. Используется только для одностадийных платежей.

Блок refunds содержит следующие параметры.

ВерсияОбязательностьНазваниеТипОписание
05+НеобязательноdateStringДата возврата заказа
21+НеобязательноexternalRefundIdString [1..36]Идентификатор возврата. При попытке возврата проверяется externalRefundId: если он существует, возвращается успешный ответ с данными о возврате, если нет — осуществляется возврат.
26+ для всех платежных методовНеобязательноapprovalCodeString [6]Код авторизации МПС. Это поле имеет фиксированную длину (шесть символов) и может содержать цифры и латинские буквы.
05+НеобязательноactionCodeStringКод ответа от процессинга банка. Содержит числовое значение. См. список кодов ответа здесь.
05+НеобязательноreferenceNumberString [12]Уникальный идентификационный номер, который присваивается операции по ее завершению.
05+НеобязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).

Блок attributes cодержит информацию о номере заказа в платежном шлюзе. Параметр name всегда принимает значение mdOrder, а параметр value - номер заказа в платежной системе.

ВерсияОбязательностьНазваниеТипОписание
ВсеНеобязательноnameString [1..255]Название дополнительного параметра.
ВсеНеобязательноvalueString [1..1024]Значение дополнительного параметра - до 1024 символов.

Блок transactionAttributes содержит набор дополнительных атрибутов транзакции. Используется для версии 14 и выше. Ниже приведен список включенных параметров.

ВерсияОбязательностьНазваниеТипОписание
14+НеобязательноnameString [1..255]Название дополнительного параметра.
14+НеобязательноvalueString [1..1024]Значение дополнительного параметра - до 1024 символов.

блок merchantOrderParams передается в ответе, если в заказе есть дополнительные параметры мерчанта. Каждый дополнительный параметр передается в отдельном элементе merchantOrderParams.

ВерсияОбязательностьНазваниеТипОписание
ВсеНеобязательноnameString [1..255]Название дополнительного параметра.
ВсеНеобязательноvalueString [1..1024]Значение дополнительного параметра - до 1024 символов.

В элементе cardAuthInfo лежит структура, состоящая из списка элемента secureAuthInfo и следующих параметров.

ВерсияОбязательностьНазваниеТипОписание
01+НеобязательноmaskedPanString [1..19]Маскированный номер карты, использованной для платежа. Cодержит реальные первые 6 и последние 4 цифры номера карты в формате XXXXXX**XXXX.
01+НеобязательноexpirationInteger [6]Срок действия карты в следующем формате: YYYYMM.
01+НеобязательноcardholderNameString [1..26]Имя держателя карты латинскими буквами. Допустимые символы: латинские буквы, точка, пробел.
01+НеобязательноapprovalCodeString [6]Код авторизации МПС. Это поле имеет фиксированную длину (шесть символов) и может содержать цифры и латинские буквы.
08+ОбязательноpaymentSystemStringНаименование платежной системы. Возможны следующие значения:
  • VISA
  • MASTERCARD
  • MIR
  • BELCARD
08+ОбязательноproductString [1..255]Дополнительные сведения о корпоративных картах. Эти сведения заполняются службой технической поддержки. Если такие сведения отсутствуют, возвращается пустое значение.
17+ОбязательноproductCategoryStringДополнительные сведения о категории корпоративных карт. Эти сведения заполняются службой технической поддержки. Если такие сведения отсутствуют, возвращается пустое значение. Возможные значения: DEBIT, CREDIT, PREPAID, NON_MASTERCARD, CHARGE, DIFFERED_DEBIT.
35+НеобязательноcorporateCardString [1..5]Указывает, является ли данная карта корпоративной. Возможные значения: false - не является корпоративной картой, true - является корпоративной картой. Может возвращать пустое значение, означает, что значение не найдено.
39+НеобязательноmaskedTokenString [1..19]Маскированный номер токена. Используется для токенизированных платежей. Cодержит реальные первые 6 и последние 4 цифры номера токена в формате XXXXXX**XXXX.
39+НеобязательноtokenExpirationInteger [6]Срок действия токена в следующем формате: YYYYMM. Используется для токенизированных платежей.

Элемент secureAuthInfo состоит из следующих элементов (параметры cavv и xid включены в элемент threeDSInfo).

ВерсияОбязательностьНазваниеТипОписание
01+НеобязательноeciInteger [1..4]Электронный коммерческий индикатор. Указан только после оплаты заказа и в случае наличия соответствующего разрешения. Ниже приводится расшифровка ECI-кодов.
  • ECI=01 или ECI=06 - мерчант поддерживает 3-D Secure, платежная карта не поддерживает 3-D Secure, платеж обрабатывается на основе кода CVV2/CVC.
  • ECI=02 или ECI=05 - и мерчант, и платежная карта поддерживают 3-D Secure;
  • ECI=07 - мерчант не поддерживает 3-D Secure, платеж обрабатывается на основе кода CVV2/CVC.
01+НеобязательноauthTypeIndicatorStringТип аутентификации 3DS (доступен до версии 42). Этот параметр обязателен для оплаты через ваш 3DS сервер с 3DS 2. Для SSL платежей этот параметр необязателен и определяется в зависимости от значения ECI. Допустимые значения:
  • 0 - SSL-аутентификация
  • 1 - Аутентификация 3DS 1
  • 2 - Попытка аутентификации 3DS 1
  • 3 - Строгая аутентификация клиентов (SCA) с 3DS 2
  • 4 - Аутентификация на основе риска (RBA) с 3DS 2
  • 5 - Попытка аутентификации 3DS 2
01+НеобязательноcavvString [0..200]Значение проверки аутентификации владельца карты. Указан только после оплаты заказа и в случае наличия соответствующего разрешения.
01+НеобязательноxidString [1..80]Электронный коммерческий идентификатор транзакции. Указан только после оплаты заказа и в случае наличия соответствующего разрешения.
30+НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
30+НеобязательноrreqTransStatusString [1]Статус транзакции из запроса на передачу результатов аутентификации пользователя от ACS (RReq). Передается при использовании 3DS2.
30+НеобязательноaresTransStatusStringСостояние транзакции из ответа ACS на запрос аутентификации (ARes). Передается при использовании 3DS2.
07+НеобязательноpaResStatusStringПараметр указывает, квалифицируется ли транзакция как аутентифицированная транзакция.
07+НеобязательноveResStatusStringПараметр указывает, может ли быть аутентифицирован идентификатор учетной записи.
07+НеобязательноpaResCheckStatusStringРезультат проверки PaRes.

Элемент bindingInfo содержит следующие параметры.

ВерсияОбязательноНазваниеТипОписание
ВсеНеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
ВсеНеобязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
02+НеобязательноauthDateTimeIntegerДата и время авторизации, показанные как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
02+НеобязательноauthRefNumString [1..24]Номер авторизации платежа, присвоенный ему при регистрации платежа.
02+НеобязательноterminalIdString [1..10]Идентификатор терминала в системе, обрабатывающей платеж.
20+НеобязательноexternalCreatedBooleanПризнак, показывающий, создана ли связка во внешнем сервисе.

Элемент paymentAmountInfo содержит следующие параметры.

ВерсияОбязательноНазваниеТипОписание
03+НеобязательноapprovedAmountInteger [0..12]Сумма в минимальных единицах валюты (например, в центах), которая была заблокирована на счете покупателя. Используется только в двухстадийных платежах.
03+НеобязательноdepositedAmountInteger [1..12]Сумма списания в минимальных единицах валюты (например, в копейках).
03+НеобязательноrefundedAmountInteger [1..12]Сумма возврата в минимальных единицах валюты.
03+НеобязательноpaymentStateStringСостояние заказа, параметр может принимать следующие значения:
  • CREATED - заказ создан (но не оплачен);
  • APPROVED - заказ одобрен (средства на счету покупателя заблокированы);
  • DEPOSITED - заказ завершен (деньги списаны со счета покупателя);
  • DECLINED - заказ отклонен;
  • REVERSED - заказ отклонен;
  • REFUNDED - возврат средств.
18+НеобязательноtotalAmountInteger [1..20]Сумма заказа плюс комиссия, если таковая имеется.

Элемент bankInfo содержит следующие параметры.

ВерсияОбязательностьНазваниеТипОписание
03+НеобязательноbankNameString [1..50]Название банка-эмитента.
03+НеобязательноbankCountryCodeString [1..4]Код страны банка-эмитента.
03+НеобязательноbankCountryNameString [1..160]Страна банка-эмитента.

Элемент payerData содержит следующие параметры.

ВерсияОбязательностьНазваниеТипОписание
13+НеобязательноemailString [1..64]Электронная почта плательщика.
13+НеобязательноphoneString [7..15]Номер телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
13+НеобязательноpostAddressString [1..255]Адрес доставки.

Блок efectyOrderInfo содержит следующие параметры.

ВерсияОбязательностьНазваниеТипОписание
23+НеобязательноreferenceNumberIntegerНомер ссылки Efecty заказа, генерируемый на стороне Efecty
23+НеобязательноreferenceDateIntegerДата/время создания ссылки
23+НеобязательноreferenceStatusStringСостояние Efecty заказа
23+НеобязательноreferenceTermIntegerВремя жизни Efecty заказа (в часах)
23+НеобязательноnetworkIDIntegerИдентификатор сети приема наличной оплаты (для Efecty постоянное значение - 1)
23+НеобязательноnetworkNameStringНаименование сети приема наличной оплаты (для Efecty постоянное значение - efecty)

Элемент pluginInfo (объект JSON) присутствует в ответе, если оплата была произведена через платежный плагин. Содержит следующие параметры.

ВерсияОбязательностьНазваниеТипОписание
28+НеобязательноnameString [1..32]Уникальное наименование платежного плагина.
28+НеобязательноparamsObjectПараметры для конкретного способа оплаты должны передаваться следующим образом {"param":"value","param2":"value2"}.

Описание параметров в объекте orderBundle:

ОбязательностьНазваниеТипОписание
НеобязательноorderCreationDateString [19]Дата создания заказа в формате YYYY-MM-DDTHH:MM:SS.
НеобязательноcustomerDetailsObjectБлок, содержащий атрибуты клиента. Описание атрибутов тега приведено ниже.
ОбязательноcartItemsObjectОбъект, содержащий атрибуты товаров в корзине. Описание вложенных элементов приведено ниже.

Описание параметров в объекте loyalties:

ОбязательностьНазваниеТипОписание
НеобязательноbonusAmountForCreditString [0..18]Общая сумма бонусов по всем товарам данного positionId для зачисления на бонусный счет клиента в минимальных единицах валюты.
НеобязательноbonusAmountForDebitString [0..18]Общая сумма бонусов по всем товарам данного positionId для списания с бонусного счета клиента в минимальных единицах валюты.
ОбязательноbonusAmountRefundedString [0..18]Общая сумма возвращенных бонусов для данного positionId в минимальных единицах валюты.

Описание параметров в объекте customerDetails:

ОбязательностьНазваниеТипОписание
НеобязательноcontactString [0..40]Предпочитаемый клиентом способ связи.
НеобязательноfullNameString [1..100]ФИО плательщика.
НеобязательноpassportString [1..100]Серия и номер паспорта плательщика в следующем формате: 2222888888
НеобязательноdeliveryInfoObjectОбъект, содержащий атрибуты адреса доставки. Описание вложенных элементов приведено ниже.

Описание параметров в объекте deliveryInfo:

ОбязательностьНазваниеТипОписание
НеобязательноdeliveryTypeString [1..20]Способ доставки.
ОбязательноcountryString [2]Двухбуквенный код страны доставки.
ОбязательноcityString [0..40]Город назначения.
ОбязательноpostAddressString [1..255]Адрес доставки.

Описание параметров в объекте cartItems:

ОбязательностьНазваниеТипОписание
ОбязательноitemsObjectЭлемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте items:

ОбязательностьНазваниеТипОписание
ОбязательноpositionIdInteger [1..12]Уникальный идентификатор товарной позиции в корзине.
ОбязательноnameString [1..255]Наименование или описание товарной позиции в свободной форме.
НеобязательноitemDetailsObjectОбъект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже.
ОбязательноquantityObjectЭлемент, описывающий общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже.
НеобязательноitemAmountInteger [1..12]Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice. В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount, то itemAmount должен равняться itemPrice * quantity, в противном случае запрос завершится с ошибкой.
НеобязательноitemPriceInteger [1..18]Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты.
НеобязательноdepositedItemAmountString [1..18]Сумма списания для одного positionId в минимальных единицах валюты (например, в копейках).
НеобязательноitemCurrencyInteger [3]Код валюты ISO 4217. Если не указан, считается равным валюте заказа.
ОбязательноitemCodeString [1..100]Номер (идентификатор) товарной позиции в системе магазина.

Описание параметров в объекте quantity:

ОбязательностьНазваниеТипОписание
ОбязательноvalueNumber [1..18]Количество товарных позиций данного positionId. Для указания дробных чисел используйте десятичную точку. Допускается максимально 3 знака после точки.
ОбязательноmeasureString [1..20]Единица измерения количества по позиции.

Описание параметров в объекте itemDetails:

ОбязательностьНазваниеТипОписание
НеобязательноitemDetailsParamsObjectПараметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/getOrderStatusExtended.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data language=en

Пример ответа

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderNumber": "7005",
  "orderStatus": 2,
  "actionCode": 0,
  "actionCodeDescription": "",
  "amount": 2000,
  "currency": "933",
  "date": 1617972915659,
  "orderDescription": "",
  "merchantOrderParams": [],
  "transactionAttributes": [],
  "attributes": [
    {
      "name": "mdOrder",
      "value": "01491d0b-c848-7dd6-a20d-e96900a7d8c0"
    }
  ],
  "cardAuthInfo": {
    "maskedPan": "411111**1111",
    "expiration": "203412",
    "cardholderName": "TEST CARDHOLDER",
    "approvalCode": "12345678",
    "pan": "411111**1111"
  },
  "bindingInfo": {
    "clientId": "259753456",
    "bindingId": "01491394-63a6-7d45-a88f-7bce00a7d8c0"
  },
  "authDateTime": 1617973059029,
  "terminalId": "123456",
  "authRefNum": "714105591198",
  "paymentAmountInfo": {
    "paymentState": "DEPOSITED",
    "approvedAmount": 2000,
    "depositedAmount": 2000,
    "refundedAmount": 0
  },
  "bankInfo": {
    "bankCountryCode": "UNKNOWN",
    "bankCountryName": "Unknown"
  }
}

Пример ответа для токенизированной оплаты

{
    "errorCode": "0",
    "errorMessage": "Success",
    "orderNumber": "4004",
    "orderStatus": 2,
    "actionCode": 0,
    "actionCodeDescription": "",
    "displayErrorMessage": "",
    "amount": 400000,
    "currency": "810",
    "date": 1762775679816,
    "depositedDate": 1762775695819,
    "orderDescription": "",
    "ip": "10.99.50.37",
    "merchantOrderParams": [],
    "transactionAttributes": [
        {
            "name": "MTI",
            "value": "200"
        },
        {
            "name": "tokenId",
            "value": "c65399ed-dd4e-4dd3-bc15-9d48dee4747b"
        },
        {
            "name": "tii",
            "value": "CI"
        },
        {
            "name": "trueOriginalActionCode",
            "value": "00"
        },
        {
            "name": "stan",
            "value": "263470"
        },
        {
            "name": "merchantIp",
            "value": "10.99.50.37"
        },
        {
            "name": "transmissionDate",
            "value": "1110145455"
        }
    ],
    "attributes": [
        {
            "name": "mdOrder",
            "value": "55bdb06c-5728-7e66-99ac-f4420760e2b0"
        }
    ],
    "cardAuthInfo": {
        "maskedPan": "411111**1111",
        "expiration": "203412",
        "cardholderName": "TEST CARDHOLDER",
        "approvalCode": "145455",
        "paymentSystem": "VISA",
        "product": "A",
        "productCategory": "CREDIT",
        "corporateCard": false,
        "maskedToken": "444400**1111",	,
		"tokenExpiration": "202912",
        "pan": "411111**1111"
    },
    "bindingInfo": {
        "clientId": "some_client_id_5213123",
        "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0"
    },
    "authDateTime": 1762775695678,
    "terminalId": "22222222",
    "authRefNum": "531489263071",
    "paymentAmountInfo": {
        "paymentState": "DEPOSITED",
        "approvedAmount": 400000,
        "depositedAmount": 400000,
        "refundedAmount": 0,
        "feeAmount": 0,
        "totalAmount": 400000
    },
    "bankInfo": {
        "bankCountryCode": "UNKNOWN",
        "bankCountryName": "Unknown"
    },
    "paymentWay": "TOKEN_PAY",
    "tii": "INITIAL"
}

Управление заказом

Завершение заказа

Для завершения предварительно авторизованного заказа используется запрос https://abby.rbsuat.com/payment/rest/deposit.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
ОбязательноamountString [0..12]Сумма завершения в минимальных единицах валюты (например, в копейках). Сумма завершения должна соответствовать общей сумме всех товаров по которым идет завершение. Если в запросе указать amount=0, будет сформировано завершение на всю сумму заказа.
НеобязательноdepositItemsObjectОбъект, содержащий атрибуты товаров в корзине. Ниже приведено описание включенных атрибутов.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноjsonParamsObjectНабор дополнительных атрибутов произвольной формы, структура:
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Могут быть переданы в Процесинговый Центр, для последующей обработки (требуется дополнительная настройка - обратитесь в поддержку).
Некоторые предопределенные атрибуты jsonParams:
  • backToShopUrl - добавляет на страницу оплаты кнопку, которая вернет держателя карты на URL-адрес переданный в этом параметре
  • backToShopName - настраивает текстовую метку кнопки Вернуться в магазин по умолчанию, если она используется вместе с backToShopUrl
  • recurringFrequency - минимальное количество дней между авторизациями. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • recurringExpiry - дата, после которой авторизации не разрешены, в формате ГГГГММДД. Требуется для создания рекуррентной связки, рекомендуется для создания связки рассрочки (если используется 3DS2, параметр обязателен).
  • paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.

Описание параметров в объекте deposititems:

ОбязательностьНазваниеТипОписание
ОбязательноitemsObjectЭлемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте items:

ОбязательностьНазваниеТипОписание
ОбязательноpositionIdInteger [1..12]Уникальный идентификатор товарной позиции в корзине.
ОбязательноnameString [1..255]Наименование или описание товарной позиции в свободной форме.
НеобязательноitemDetailsObjectОбъект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже.
ОбязательноquantityObjectЭлемент, описывающий общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже.
НеобязательноitemAmountInteger [1..12]Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice. В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount, то itemAmount должен равняться itemPrice * quantity, в противном случае запрос завершится с ошибкой.
НеобязательноitemPriceInteger [1..18]Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты.
НеобязательноdepositedItemAmountString [1..18]Сумма списания для одного positionId в минимальных единицах валюты (например, в копейках).
НеобязательноitemCurrencyInteger [3]Код валюты ISO 4217. Если не указан, считается равным валюте заказа.
ОбязательноitemCodeString [1..100]Номер (идентификатор) товарной позиции в системе магазина.

Описание параметров в объекте itemDetails:

ОбязательностьНазваниеТипОписание
НеобязательноitemDetailsParamsObjectПараметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте itemDetailsParams:

ОбязательностьНазваниеТипОписание
ОбязательноvalueString [1..2000]Дополнительная информация по товарной позиции.
ОбязательноnameString [1..255]Наименование параметра описания детализации товарной позиции

Описание параметров в объекте quantity:

ОбязательностьНазваниеТипОписание
ОбязательноvalueNumber [1..18]Количество товарных позиций данного positionId. Для указания дробных чисел используйте десятичную точку. Допускается максимально 3 знака после точки.
ОбязательноmeasureString [1..20]Единица измерения количества по позиции.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/deposit.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=933 \
  --data amount=2000 \
  --data orderId=01492437-d2fb-77fa-8db7-9e2900a7d8c0 \
  --data language=en

Пример ответа

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Отмена платежа

Для отмены платежа используется запрос https://abby.rbsuat.com/payment/rest/reverse.do. Отмена возможна только в течение определенного периода времени после оплаты. Свяжитесь с Поддержкой, чтобы узнать точный период, так как он варьируется.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Платеж можно отменить только один раз. Если он завершится ошибкой, то последующие операции по отмене платежа работать не будут.

Наличие данной функции возможно по согласованию с банком. Отмена может выполняться только пользователями, которым были предоставлены соответствующие системные разрешения.

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
НеобязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноmerchantLoginString [1..255]Чтобы отменить заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноjsonParamsStringПоля для хранения дополнительных данных необходимо передавать следующим образом: {"param":"value","param2":"value2"}.
paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноamountString [0..12]Сумма отмены в минимальных единицах валюты (например, в копейках). Сумма отмены должна быть меньше или равна авторизованной сумме заказа (для двухстадийных заказов - общей предварительно авторизованной сумме заказа).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/reverse.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=933 \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data language=en

Пример ответа

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Возврат средств

Используйте https://abby.rbsuat.com/payment/rest/refund.do для отправки запросов на возврат средств.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Нельзя осуществлять возврат средств по заказам, которые инициируют регулярные платежи, так как в этом случае не происходит списания средств.

По этому запросу средства по указанному заказу будут возвращены плательщику. Запрос закончится ошибкой, если средства по этому заказу не были списаны. Система позволяет возвращать средства более одного раза, но в общей сложности не более первоначальной суммы списания.

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
ОбязательноamountString [0..12]Сумма возврата в минимальных единицах валюты (например, в копейках). Сумма возврата должна быть меньше или равна сумме заказа (для двухстадийных заказов - общей сумме завершения по заказу). Если в запросе указать amount=0, то будет возвращена вся сумма заказа.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноjsonParamsStringПоля для хранения дополнительных данных необходимо передавать следующим образом: {"param":"value","param2":"value2"}.
paymentInfo - для передачи информации по заказу в Банк и корректного построения Банковских отчётов следует передавать значение paymentInfo с использованием цифр, символов и букв латинского алфавита.
НеобязательноexpectedDepositedAmountInteger [1..12]Параметр служит для определения того, что запрос является повторным. Если параметр передан, его значение сравнивается с текущим значением depositedAmount в заказе. Операция будет выполнена только в том случае, если значения совпадают. Если два возврата приходят с одинаковым expectedDepositedAmount, будет выполнен только один возврат. Этот возврат изменит значение depositedAmount, а затем второй возврат будет отклонен.
НеобязательноexternalRefundIdString [1..36]Идентификатор возврата. При попытке возврата проверяется externalRefundId: если он существует, возвращается успешный ответ с данными о возврате, если нет — осуществляется возврат.
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноrefundItemsObjectОбъект для передачи информации о возвращаемых товарах - номер позиции товара в запросе, название, детали, единица измерения, количество, валюта, код товара, прибыль агента.

Параметр refundItems включает в себя:

ОбязательностьНазваниеТипОписание
НеобязательноitemsObjectЭлемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте items:

ОбязательностьНазваниеТипОписание
ОбязательноpositionIdInteger [1..12]Уникальный идентификатор товарной позиции в корзине.
ОбязательноnameString [1..255]Наименование или описание товарной позиции в свободной форме.
НеобязательноitemDetailsObjectОбъект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже.
ОбязательноquantityObjectЭлемент, описывающий общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже.
НеобязательноitemAmountInteger [1..12]Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice. В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount, то itemAmount должен равняться itemPrice * quantity, в противном случае запрос завершится с ошибкой.
НеобязательноitemPriceInteger [1..18]Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты.
НеобязательноdepositedItemAmountString [1..18]Сумма списания для одного positionId в минимальных единицах валюты (например, в копейках).
НеобязательноitemCurrencyInteger [3]Код валюты ISO 4217. Если не указан, считается равным валюте заказа.
ОбязательноitemCodeString [1..100]Номер (идентификатор) товарной позиции в системе магазина.

Описание параметров в объекте itemAttributes:

Параметр itemAttributes должен содержать массив attributes, а уже в этом массиве расположены атрибуты товарной позиции (см. пример и таблицу ниже).

"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"1"},{"name":"paymentObject","value":"1"}]}
ОбязательностьНазваниеТипОписание
ОбязательноpaymentMethodInteger [1..2]Тип платежа, доступные значения:
  • 1 - полная предоплата;
  • 2 - частичная предоплата;
  • 3 - аванс;
  • 4 - полная оплата;
  • 5 - частичная оплата с последующей оплатой в кредит;
  • 6 - без оплаты с последующей оплатой в кредит;
  • 7 - оплата с последующей оплатой в кредит.
ОбязательноpaymentObjectIntegerОбъект платежа, доступные значения:
  • 1 - товар (значение по умолчанию);
  • 2 - подакцизный товар;
  • 3 - работа;
  • 4 - услуга;
  • 5 - ставка азартной игры;
  • 6 - выигрыш азартной игры;
  • 7 - лотерейный билет;
  • 8 - выигрыш лотереи;
  • 9 - предоставление РИД;
  • 10 - платеж;
  • 11 - агентское вознаграждение;
  • 12 - составной предмет расчета;
  • 13 - иной предмет расчета;
  • 14 - имущественное право;
  • 15 - внереализационный доход;
  • 16 - страховые взносы: о суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации;
  • 17 - торговый сбор: о суммах уплаченного торгового сбора;
  • 18 - курортный сбор.

Указанные выше значения доступны для ФФД 1.05.
Для ФФД 1.2 список доступных значений пополняется также следующими значениями:
  • 30 - подакцизный товар, подлежащий маркировке средством идентификации, не имеющий кода маркировки
  • 31 - подакцизный товар, подлежащий маркировке средством идентификации, имеющий код маркировки
  • 32 - товар, подлежащий маркировке средством идентификации, не имеющий код маркировки, за исключением подакцизного товара
  • 33 - товар, подлежащий маркировке средством идентификации, имеющий код маркировки, за исключением подакцизного товара

Приоритезация передачи значения происходит по следующему принципу (указано в убывающем порядке приоритета): 1) корзина заказа из API-запроса; 2) настройки фискализации в личном кабинете; 3) значения по умолчанию
УсловиеnomenclatureString [1..95]Код товарной номенклатуры в шестнадцатеричном представлении с пробелами. Максимальная длина – 32 байта. Обязательно, если передано markQuantity.
НеобязательноmarkQuantityObjectДробное количество маркируемого товара.
НеобязательноuserDataString [1..64]Значение реквизита пользователя. Можно передавать только после согласования с ФНС.
Необязательноagent_infoObjectОбъект с данными о платежном агенте для товарной позиции. Описание вложенных элементов приведено ниже.
Необязательноsupplier_infoObjectОбъект с данными о поставщике для товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте agent_info:

ОбязательностьНазваниеТипОписание
ОбязательноtypeIntegerТип агента, доступные значения:
  • 1 - банковский платежный агент;
  • 2 - банковский платежный субагент;
  • 3 - платежный агент;
  • 4 - платежный субагент;
  • 5 - поверенный;
  • 6 - комиссионер;
  • 7 - иной агент.
НеобязательноpayingObjectОбъект с данными о платежном агенте. Описание вложенных элементов приведено ниже.
НеобязательноpaymentsOperatorObjectОбъект с информацией об операторе по приему платежей. Описание вложенных элементов приведено ниже.
НеобязательноMTOperatorObjectОбъект с данными об Операторе перевода. Описание вложенных элементов приведено ниже.

Описание параметров в объекте paying:

ОбязательностьНазваниеТипОписание
НеобязательноoperationString [1..24]Название транзакции платежного агента.
НеобязательноphonesArray of stringsМассив телефонных номеров платежного агента в формате +N.

Описание параметров в объекте paymentsOperator:

ОбязательностьНазваниеТипОписание
НеобязательноphonesArray of stringsМассив телефонных номеров платежного агента в формате +N.

Описание параметров в объекте MTOperator:

ОбязательностьНазваниеТипОписание
НеобязательноphonesArray of stringsМассив телефонных номеров оператора перевода в формате +N.
НеобязательноnameString [1..256]Наименование оператора перевода.
НеобязательноaddressString [1..256]Адрес оператора перевода.
НеобязательноinnString [10..12]ИНН оператора перевода.

Описание параметров в объекте supplier_info:

ОбязательностьНазваниеТипОписание
НеобязательноphonesArray of stringsМассив телефонных номеров поставщика в формате +N.
НеобязательноnameString [1..256]Наименование поставщика.
НеобязательноinnInteger [10..12]ИНН поставщика

Описание параметров объекта markQuantity.

ОбязательностьНазваниеТипОписание
ОбязательноnumeratorInteger [1..12]Числитель дробной части объекта платежа.
ОбязательноdenominatorInteger [1..12]Знаменатель дробной части объекта платежа.

Описание параметров в объекте quantity:

ОбязательностьНазваниеТипОписание
ОбязательноvalueNumber [1..18]Количество товарных позиций данного positionId. Для указания дробных чисел используйте десятичную точку. Допускается максимально 3 знака после точки.
ОбязательноmeasureString [1..20]Единица измерения количества по позиции.

Возможные значения параметра measure:

ЗначениеОписание
0Применяется к позициям, которые могут быть реализованы индивидуально или отдельными единицами, а также если объект платежа является предметом, подлежащим обязательной идентификационной маркировке.
10Грамм
11Килограмм
12Тонна
20Сантиметр
21Дециметр
22Метр
30Квадратный сантиметр
31Квадратный дециметр
32Квадратный метр
40Миллилитр
41Литр
42Кубический метр
50Киловатт час
51Гигакалория
70День
71Час
72Минута
73Секунда
80Килобайт
81Мегабайт
82Гигабайт
83Терабайт
255Применяется к другим единицам измерения

Описание параметров в объекте itemDetails:

ОбязательностьНазваниеТипОписание
НеобязательноitemDetailsParamsObjectПараметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже.

Описание параметров в объекте itemDetailsParams:

ОбязательностьНазваниеТипОписание
ОбязательноvalueString [1..2000]Дополнительная информация по товарной позиции.
ОбязательноnameString [1..255]Наименование параметра описания детализации товарной позиции

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/refund.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=933 \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data amount=2000 \
  --data language=en

Пример ответа

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Отмена заказа

Чтобы отменить еще не оплаченный заказ, используйте запрос https://abby.rbsuat.com/payment/rest/decline.do. Отклонить можно только заказ, который не был завершен. После успешного выполнения данного запроса заказ переходит в статус DECLINED.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
НеобязательноmerchantLoginString [1..255]Чтобы зарегистрировать заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
ОбязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/decline.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=8cf0409e-857e-7f95-8ab1-b6810009d884 \
  --data orderNumber=12345678 \
  --data merchantLogin=merch_test418 \
  --data language=en

Пример ответа

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Связки

Приведенные ниже запросы API позволяют управлять транзакциями по связкам. Транзакция по связке используется, когда держатель карты разрешает продавцу хранить платежные данные для дальнейших платежей. Узнайте больше о связках здесь.

Оплата по связке

Для оплаты заказа по связке используется запрос https://abby.rbsuat.com/payment/rest/paymentOrderBinding.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноmdOrderString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
УсловиеbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноipString [1..39]IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов).
НеобязательноcvcString [3]Передача параметра определяется типом платежа:
  • передача cvc предусмотрена не для всех токенизированных платежей;
  • передача cvc не предусмотрена для MIT платежей;
  • передача cvc обязательна по умолчанию для всех других типов платежей; но если для мерчанта выбрано разрешение Может проводить оплату без подтверждения CVC, то в таком случае передача cvc становится необязательной.
    Допускаются только цифры.
НеобязательноthreeDSSDKBooleanВозможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS SDK.
ОбязательноtiiStringИдентификатор инициатора транзакции. Параметр, указывающий, какой тип операции будет выполнять инициатор (Клиент или Мерчант). Возможные значения: F, U. См. описание значений.
УсловиеemailString [1..64]Электронная почта для отображения на платежной странице. Если для продавца настроены уведомления клиента, электронную почту необходимо указать. Пример: client_mail@email.com.
Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты.
НеобязательноthreeDSProtocolVersionStringВерсия протокола 3DS. Возможные значения: "2.1.0", "2.2.0" для 3DS2.
Если в запросе не передается threeDSProtocolVersion, то для авторизации 3D Secure будет использоваться значение по умолчанию (2.1.0 - для 3DS 2).
НеобязательноexternalScaExemptionIndicatorStringТип исключения SCA (Strong Customer Authentication). Если указан этот параметр, транзакция будет обработана в зависимости от ваших настроек в платежном шлюзе: либо будет выполнена принудительная операция SSL, либо банк-эмитент получит информацию об исключении SCA и примет решение о проведении операции с 3DS-аутентификацией или без нее (для получения подробной информации свяжитесь с нашей службой поддержки). Допустимые значения:
  • LVP – транзакция типа Low Value Payments. Транзакция может быть отнесена к транзакциям с низким уровнем риска на основе суммы транзакции, количества транзакций клиента в день или общей дневной суммы платежей клиента.
  • TRA – транзакция типа Transaction Risk Analysis, т.е. транзакция, прошедшая успешную антифрод-проверку.

Для передачи этого параметра у вас должны быть достаточные права в платежном шлюзе.
УсловиеseTokenString [1..8192]Зашифрованные данные карты. Используйте этот параметр, если вы не уверены в надежности канала взаимодействия и не хотите скомпрометировать платежные данные клиентов.
Обязательные параметры для строки seToken: timestamp, UUID, bindingId, MDORDER. Подробнее о генерации seToken см. здесь.
В запросе необходимо передать или bindingId, или seToken.
OptionalclientBrowserInfoObjectБлок данных о браузере клиента, который отправляется на ACS во время 3DS аутентификации. Этот блок можно передавать, только если включена специальная настройка (обратитесь в команду поддержки). См. вложенные параметры.
НеобязательноacsInIFrameBooleanФлаг, показывающий, что для финишного URL будет возвращаться iFrame версия. Возможные значения true или false. Для подключения данной функциональности обратитесь в службу поддержки.

Возможные значения tii (Подробнее о типах связок, поддерживаемых платежным шлюзом, читайте здесь).

Значение tiiОписаниеТип транзакцииИнициатор транзакцииДанные карты для транзакцииСохранение данных карты после транзакцииПримечание
FВнеплановый платеж (CIT)ПоследующаяПокупательКлиент выбирает карту вместо ручного вводаНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку.
UВнеплановый платеж (MIT)ПоследующаяПродавецНет ручного ввода, продавец передает данныеНетТранзакция электронной коммерции, использующая ранее сохраненную обычную связку. Используется только для одностадийных платежей.

Ниже приведены параметры блока clientBrowserInfo (данные о браузере клиента).

ОбязательностьНазваниеТипОписание
НеобязательноuserAgentString [1..2048]Агент браузера.
НеобязательноOSStringОперационная система.
НеобязательноOSVersionStringВерсия операционной системы.
НеобязательноbrowserAcceptHeaderString [1..2048]Заголовок Accept, который сообщает серверу, какие форматы (или MIME-типы) поддерживает браузер.
НеобязательноbrowserIpAddressString [1..45]IP-адрес браузера.
НеобязательноbrowserLanguageString [1..8]Язык браузера.
НеобязательноbrowserTimeZoneStringЧасовой пояс браузера.
НеобязательноbrowserTimeZoneOffsetString [1..5]Смещение часового пояса в минутах между локальным временем пользователя и UTC.
НеобязательноcolorDepthString [1..2]Глубина цвета экрана, в битах.
НеобязательноfingerprintStringОтпечаток браузера - уникальный цифровой идентификатор браузера.
НеобязательноisMobileBooleanВозможные значения: true или false. Флаг, указывающий на то, что используется мобильное устройство.
НеобязательноjavaEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка java.
НеобязательноjavascriptEnabledBooleanВозможные значения: true или false. Флаг, указывающий на то, что в браузере включена поддержка javascript.
НеобязательноpluginsStringСписок плагинов, используемых в браузере, через запятую.
НеобязательноscreenHeightInteger [1..6]Высота экрана в пикселях.
НеобязательноscreenWidthInteger [1..6]Ширина экрана в пикселях.
НеобязательноscreenPrintStringДанные о параметрах печати браузера, включая разрешение, глубину цвета, плотность пикселей.

Пример блока clientBrowserInfo:

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноredirectString [1..512]Этот параметр возвращается, если платеж прошел успешно и для платежа не проводилась проверка карты на вовлеченность в 3-D Secure. Продавцы могут использовать его, если хотят перенаправить пользователя на страницу платежного шлюза. Если продавец использует собственную страницу, это значение можно игнорировать.
НеобязательноinfoStringВ случае успешного ответа. Результат попытки оплаты. Ниже приведены возможные значения.
  • Ваш платеж обработан, происходит переадресация...
  • Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию. Происходит переадресация...
  • Извините, платеж не может быть совершен. Происходит переадресация...
  • Операция отклонена. Обратитесь в магазин. Происходит переадресация...
  • Операция отклонена. Обратитесь в банк, выпустивший карту. Происходит переадресация...
  • Операция невозможна. Аутентификация держателя карты завершена неуспешно. Происходит переадресация...
  • Нет связи с банком. Повторите позже. Происходит переадресация...
  • Истек срок ожидания ввода данных. Происходит переадресация...
  • Не получен ответ от банка. Повторите позже. Происходит переадресация...
НеобязательноerrorString [1..512]Сообщение об ошибке (если в ответе вернулась ошибка) на языке, переданном в запросе.
НеобязательноprocessingErrorTypeStringТип ошибки процессинга. Передается, если ошибка возникает на стороне процессинга, а не в платежном шлюзе, при этом число попыток оплаты не превышено и еще не было перенаправления на финальную страницу.
НеобязательноdisplayErrorMessageStringОтображаемое сообщение об ошибке.
Необязательно*errorTypeNameStringПараметр, необходимый фронтенд странице для определения типа ошибки. Обязательно для неудачных платежей.
НеобязательноacsUrlString [1..512]URL-адрес для редиректа на ACS. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Подробнее см. Редирект на ACS.
НеобязательноpaReqString [1..255]PAReq (Payment Authentication Request) — сообщение, которое необходимо отправить в ACS вместе с редиректом. Возвращается при успешном ответе в случае оплаты 3D-Secure, если необходим редирект на ACS. Это сообщение содержит данные в кодировке Base64, необходимые для аутентификации держателя карты. Подробнее см. Редирект на ACS.
НеобязательноtermUrlString [1..512]При успешном ответе в случае оплаты 3D-Secure. Это URL-адрес, на который ACS перенаправляет владельца карты после аутентификации. Подробнее см. Редирект на ACS.
НеобязательноbindingIdString [1..255]Идентификатор связки, созданной ранее или использованной для оплаты. Присутствует, только если у мерчанта есть разрешение на работу со связками.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/paymentOrderBinding.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data bindingId=01491394-63a6-7d45-a88f-7bce00a7d8c0 \
  --data cvc=123 \
  --data tii=F \
  --data language=en

Пример успешного ответа для SSL-платежа (без 3-D Secure)

{
  "redirect": "https://abby.rbsuat.com/payment/merchants/temp/finish.html?orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0&lang=en",
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0
}

Пример успешного ответа на для платежа 3D-Secure

{
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0,
  "acsUrl": "https://theacsserver.com/acs/auth/start.do",
  "paReq": "eJxVUu9vgjAQ/...4BaHYvAI=",
  "termUrl": "https://abby.rbsuat.com/payment/rest/finish3ds.do?lang=en"
}

Пример ответа с ошибкой

{
  "error": "[clientId] is empty",
  "errorCode": 5,
  "is3DSVer2": false,
  "errorMessage": "[clientId] is empty"
}

Получение связок

Для получения списка клиентских привязок используется запрос https://abby.rbsuat.com/payment/rest/getBindings.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
ОбязательноuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
НеобязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноbindingTypeStringТип связки, который ожидается в ответе (если он не указан, возвращаются все типы). Возможные значения:
  • C – обычная связка.
  • R – рекуррентная связка.
НеобязательноshowExpiredBooleantrue/false параметр, определяющий, показывать ли связки с просроченными картами. Значение по умолчанию: false.
НеобязательноmerchantLoginString [1..255]Чтобы получить список сохраненных клиентом учетных данных другого мерчанта, укажите в этом параметре логин мерчанта (для API-аккаунта).
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом. И вы, и указанный продавец должны иметь разрешение на работу с сохраненными учетными данными (связками).

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноbindingsObjectЭлемент с блоками, содержащими параметры связок. См. описание ниже.

Элемент bindings содержит следующие параметры.

ОбязательностьНазваниеТипОписание
НеобязательноmaskedPanString [1..19]Маскированный номер карты, использованной для платежа. Cодержит реальные первые 6 и последние 4 цифры номера карты в формате XXXXXX**XXXX.
НеобязательноpaymentWayStringСпособ совершения платежа (платеж с вводом карточных данных, оплата по связке и т.п.). Дополнительные возможные значения параметра приведены ниже
ОбязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
ОбязательноexpiryDateString [6]Срок действия карты в следующем формате: YYYYMM.
НеобязательноbindingCategoryStringНазначение связки, ожидаемой в ответе. Возможные значения: COMMON, RECURRENT.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноdisplayLabelString [1..16]Последние 4 цифры исходного PAN перед токенизацией.
НеобязательноpaymentSystemStringНаименование платежной системы. Возможны следующие значения:
  • VISA
  • MASTERCARD
  • MIR
  • BELCARD

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/getBindings.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data clientId=dos-clientos \
  --data bindingType=C

Пример успешного ответа

{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
    {
            "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
            "maskedPan": "411111**1111",
            "expiryDate": "203412",
            "paymentWay": "TOKEN_PAY",
            "paymentSystem": "CARD",
            "displayLabel": "XXXXXXXXXXXX1111",
            "bindingCategory": "COMMON"
        }
    ]
 }

Пример ответа для токенизированной оплаты

{
    "errorCode": "0",
    "errorMessage": "Success",
    "bindings": [
        {
            "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
            "maskedPan": "411111**1111",
            "expiryDate": "203412",
            "paymentWay": "TOKEN_PAY",
            "paymentSystem": "VISA",
            "displayLabel": "XXXXXXXXXXXX1111",
            "bindingCategory": "COMMON"
        }
    ]
}

Получение связок по номеру карты

Для получения списка всех связок банковской карты используется запрос https://abby.rbsuat.com/payment/rest/getBindingsByCardOrId.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
УсловиеpanString [1..19]Номер платежной карты (обязательно, если если bindinId не передается). Значение pan заменяет собой значение bindingId.
УсловиеbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноshowExpiredBooleantrue/false параметр, определяющий, показывать ли связки с просроченными картами. Значение по умолчанию: false.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноbindingsObjectЭлемент с блоками, содержащими параметры связок: bindingId, maskedPan, expiryDate, clientId
НеобязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
НеобязательноmaskedPanString [1..19]Маскированный номер карты, использованной для платежа. Cодержит реальные первые 6 и последние 4 цифры номера карты в формате XXXXXX**XXXX.
НеобязательноexpiryDateString [6]Срок действия карты в следующем формате: YYYYMM.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/getBindingsByCardOrId.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data pan=4000001111111118

Пример успешного запроса

{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
    {
        "bindingId":"69d6a793-afb5-79be-8ce7-63ff00a8656a",
        "maskedPan":"400000**1118",
        "expiryDate":"203012",
        "clientId":"12"
        }
    {
        "bindingId":"6a8c0738-cc88-4200-acf6-afc264d66cb0",
        "maskedPan":"400000**1118",
        "expiryDate":"203012",
        "clientId":"13"
        }
    ]
 }

Деактивация связки

Для деактивации существующей связки используется запрос https://abby.rbsuat.com/payment/rest/unBindCard.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/unBindCard.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc

Пример ответа (ошибка)

{
"errorCode":"2",
"errorMessage":"Связка не активна",
}

Активация связки

Запрос, используемый для активации существующей связки, которая была деактивирована, называется https://abby.rbsuat.com/payment/rest/bindCard.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/bindCard.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc

Пример ответа (ошибка)

{
  "errorCode":"2",
  "errorMessage":"Binging is active",
}

Продление срока действия связки

Запрос, используемый для продления срока действия существующей привязки, называется https://abby.rbsuat.com/payment/rest/extendBinding.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
ОбязательноnewExpiryInteger [6]Новая дата (год и месяц) окончания срока действия в формате YYYYMM.
ОбязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/extendBinding.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc
  --data newExpiry=202212
  --data language=en

Пример ответа

{
"errorCode":"0",
"errorMessage":"Success",
}

Рекуррентный платеж

Для проведения рекуррентного платежа используется запрос https://abby.rbsuat.com/payment/recurrentPayment.do. Запрос используется для регистрации и оплаты заказа.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноfeeInputInteger [0..8]Размер комиссии в минимальных единицах валюты. Функциональность должна быть включена на уровне продавца в шлюзе.
ОбязательноbindingIdString [1..255]Идентификатор уже существующей связки (идентификатор карты, токенизированной шлюзом). Его можно использовать, только если у мерчанта есть разрешение на работу со связками. Если этот параметр передается в этом запросе, это означает, что:
  • Этот заказ можно оплатить только с помощью связки;
  • Плательщик будет перенаправлен на страницу оплаты, где требуется только ввод CVC.
В запросе необходимо передать или bindingId, или seToken.
ОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноpreAuthBooleanПараметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
  • true - включена двухстадийная оплата;
  • false - включена одностадийная оплата (деньги списываются сразу).
Если параметр отсутствует, производится одностадийная оплата.
НеобязательноautocompletionDateString [19]Дата и время автоматического завершения двухстадийного платежа в следующем формате: 2025-12-29T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноautoReverseDateString [19]Дата и время автоматического отмены двухстадийного платежа в следующем формате: 2025-06-23T13:02:51. Используемый часовой пояс: UTC+3. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
НеобязательноfeaturesStringФункции заказа. Чтобы указать несколько функций, используйте этот параметр несколько раз в одном запросе. Ниже приведены возможные значения.
  • AUTO_PAYMENT - платеж проводится без проверки подлинности владельца карты (без CVC и 3D-Secure). Чтобы проводить подобные платежи у мерчанта должны быть соответствующие разрешения. Это устаревшее значение, не рекомендуем использовать его для новых интеграций.
  • VERIFY - если передать это значение в запросе на оформление заказа, владелец карты будет верифицирован, однако никакого списания средств не произойдет, так что в этом случае параметр amount может иметь значение 0. Верификация позволяет убедиться, что карта находится в руках владельца, и впоследствии списывать с этой карты средства, не прибегая к проверке аутентификационных данных (CVC, 3D-Secure) при совершении последующих платежей. Даже если сумма платежа будет передана в запросе, она не будет списана со счета клиента при передаче значения VERIFY. Это значение также можно использовать для создания cвязки — в этом случае параметр clientId также должен быть передан. Подробнее читайте здесь.
  • FORCE_TDS - Принудительное проведение платежа с использованием 3-D Secure. Если карта не поддерживает 3-D Secure, транзакция не пройдет.
  • FORCE_SSL - Принудительное проведение платежа через SSL (без использования 3-D Secure).
  • FORCE_FULL_TDS - После проведения аутентификации с помощью 3-D Secure статус PaRes должен быть только Y, что гарантирует успешную аутентификацию пользователя. В противном случае транзакция не пройдет.
  • FORCE_CREATE_BINDING - передача этого значения в запросе на оформление заказа принудительно создает связку. Эта функциональность должна быть включена на уровне продавца в шлюзе. Это значение нельзя передать в запросе с существующим bindingId или же bindingNotNeeded = true (вызовет ошибку проверки). Когда эта функция передается, параметр clientId также должен быть передан. Если в блоке features переданы оба значения FORCE_CREATE_BINDING и VERIFY, то заказ будет создан ТОЛЬКО для создания связки (без оплаты).
НеобязательноadditionalParametersObjectДополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanОсновной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
  • true - запрос успешно обработан;
  • false - запрос не прошел.

Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.
Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь.
УсловиеdataN/AЭтот параметр возвращается только в случае успешной обработки платежа. См. описание ниже.
УсловиеerrorN/AЭтот параметр возвращается только в случае ошибки платежа. См. описание ниже.

Блок data содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Блок error содержит следующие элементы.

ОбязательностьНазваниеТипОписание
ОбязательноcodeString [1..3]Код как информационный параметр, сообщающий об ошибке.
ОбязательноdescriptionString [1..598]Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.
ОбязательноmessageString [1..512]Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.

Примеры

Пример запроса

curl --request POST \
--url https://abby.rbsuat.com/payment/recurrentPayment.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "userName" : "test_user",
  "password" : "test_user_password",
  "orderNumber" : "UAF-203974-DE-12",
  "language" : "EN",
  "bindingId": "bindingId",
  "amount" : 1200,
  "currency" : "933",
  "description" : "Test description",
  "additionalParameters" : {
    "firstParamName" : "firstParamValue",
    "secondParamName" : "secondParamValue"
    "email" : "email@email.com"
  }
}'

Пример ответа - Успешно

{
    "success": true,
    "data": {
        "orderId": "f7beebe4-7c9a-43cf-8e26-67ab741f9b9e"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "UAF-203974-DE-12",
        "orderStatus": 2,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 12300,
        "currency": "933",
        "date": 1491333938243,
        "orderDescription": "Test description",
        "merchantOrderParams": [
            {
                "name": "firstParamName",
                "value": "firstParamValue"
            },
            {
                "name": "secondParamName",
                "value": "secondParamValue"
            }
        ],
        "attributes": [],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "12345678",
            "paymentSystem": "VISA",
            "pan": "6777770000**0006"
        },
        "authDateTime": 1491333939454,
        "terminalId": "11111",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "DEPOSITED",
            "approvedAmount": 12300,
            "depositedAmount": 12300,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<unknown>"
        },
        "operations": [
            {
                "amount": 12300,
                "cardHolder": "TEST CARDHOLDER",
                "authCode": "123456"
            }
        ]
    }
}

Ошибка

{
  "error": {
    "code": "10",
    "description": "Order with this number is already registered in the system.",
    "message": "Order with this number is already registered in the system."
  },
  "success": false
}

Создание связки без оплаты

Для создания связки без проведения платежа используется запрос https://abby.rbsuat.com/payment/rest/createBindingNoPayment.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта. Используется для реализации функциональности связок.
ОбязательноcardholderNameString [1..26]Имя держателя карты латинскими буквами. Допустимые символы: латинские буквы, точка, пробел.
ОбязательноexpiryDateString [6]Срок действия карты в следующем формате: YYYYMM.
ОбязательноpanString [1..19]Номер платежной карты
НеобязательноadditionalParametersObjectДополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
НеобязательноmerchantLoginString [1..255]Чтобы создать связку для другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре.
Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом.
НеобязательноemailString [1..64]Электронная почта плательщика.
НеобязательноphoneString [7..15]Номер телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноerrorBooleanФлаг, показывающий, что в ответе вернулась ошибка. Допустимые значения: true или false. Принимает значение true, если errorCode содержит значение, отличное от 0.
НеобязательноbindingIdString [1..255]Идентификатор связки, созданной ранее или использованной для оплаты. Присутствует, только если у мерчанта есть разрешение на работу со связками.
НеобязательноclientIdString [0..255]Номер клиента (ID) в системе мерчанта — до 255 символов. Используется для реализации функциональности связок. Может возвращаться в ответе, если мерчанту разрешено создавать связки.
Указание этого параметра при обработке платежей по связке обязательно. В противном случае платеж будет невозможен.
НеобязательноcardholderNameString [1..26]Имя держателя карты латинскими буквами. Допустимые символы: латинские буквы, точка, пробел.
НеобязательноexpiryDateString [6]Срок действия карты в следующем формате: YYYYMM.
НеобязательноmaskedPanString [1..19]Маскированный номер карты, использованной для платежа. Cодержит реальные первые 6 и последние 4 цифры номера карты в формате XXXXXX**XXXX.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/createBindingNoPayment.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data clientId=159753456
  --data pan=5555555555555599
  --data expiryDate=203412
  --data cardholderName=TEST CARDHOLDER

Пример ответа

{
  "maskedPan": "555555**5599",
  "expiryDate": "203412",
  "cardholderName": "TEST CARDHOLDER",
  "clientId": "159753456",
  "bindingId": "47dbe208-e531-4997-9c36-25a5707d3cb9",
  "errorCode": 0,
  "error": false
}

3DS

Завершение платежа 3DS2 через API

Для завершения заказа 3DS2 через API используется метод https://abby.rbsuat.com/payment/rest/finish3dsVer2Payment.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноthreeDSServerTransIdString [1..36]Идентификатор транзакции, созданный на сервере 3DS. Обязателен для аутентификации 3DS.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
ОбязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноredirectString [1..512]Этот параметр возвращается, если платеж прошел успешно и для платежа не проводилась проверка карты на вовлеченность в 3-D Secure. Продавцы могут использовать его, если хотят перенаправить пользователя на страницу платежного шлюза. Если продавец использует собственную страницу, это значение можно игнорировать.
Необязательноis3DSVer2BooleanВозможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS2.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/finish3dsVer2Payment.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data threeDSServerTransId=33b17cb5-b4a5-48ac-a3b8-bc8d6d979a46 \
  --data userName=test_user \
  --data password=test_user_password \

Пример ответа

{
    "redirect": "http://test.com?orderId=f61e2a41-34b9-7a2d-b4d6-83ac00c305c8&lang=en",
    "errorCode": 0,
    "is3DSVer2": true
}

Продолжение оплаты для 3DS2

Для продолжения оплаты с 3DS2 авторизацией используется запрос https://abby.rbsuat.com/payment/rest/3ds/continue.do.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
УсловиеuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
УсловиеtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
ОбязательноmdOrderString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноinfoStringВ случае успешного ответа. Результат попытки оплаты. Ниже приведены возможные значения.
  • Ваш платеж обработан, происходит переадресация...
  • Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию. Происходит переадресация...
  • Извините, платеж не может быть совершен. Происходит переадресация...
  • Операция отклонена. Обратитесь в магазин. Происходит переадресация...
  • Операция отклонена. Обратитесь в банк, выпустивший карту. Происходит переадресация...
  • Операция невозможна. Аутентификация держателя карты завершена неуспешно. Происходит переадресация...
  • Нет связи с банком. Повторите позже. Происходит переадресация...
  • Истек срок ожидания ввода данных. Происходит переадресация...
  • Не получен ответ от банка. Повторите позже. Происходит переадресация...
НеобязательноredirectString [1..512]Этот параметр возвращается, если платеж прошел успешно и для платежа не проводилась проверка карты на вовлеченность в 3-D Secure. Продавцы могут использовать его, если хотят перенаправить пользователя на страницу платежного шлюза. Если продавец использует собственную страницу, это значение можно игнорировать.
УсловиеacsUrlString [1..512]URL-адрес для редиректа на ACS. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Подробнее см. Редирект на ACS.
УсловиеpackedCReqStringЗапакованные данные challenge request. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Это значение следует использовать как значение параметра creq ссылки на ACS (acsUrl), для перенаправления клиента на ACS. Подробнее см. Редирект на ACS.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/3ds/continue.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data mdOrder=eb708f0a-2683-7437-b458-f80400b40dc0 \
  --data userName=test-user \
  --data password=test-password

Пример ответа (полный 3DS2, успешный запрос)

{
	"info": "Your order is proceeded, redirecting...",
	"errorCode": 0,
	"acsUrl": "https://bestbank.com/acs2/acs/creq",
	"is3DSVer2": true,
	"packedCReq": "eyJ0aHJlZURTU...6IjA1In0"
}

Пример ответа (frictionless 3DS2, успешный запрос)

{
	"redirect": "https://merchant.com/returnUrl?orderId=9666296c-e4f1-7285-a57c-20eb00b40dc1&lang=en",
	"info": "Your order is proceeded, redirecting...",
	"errorCode": 0,
	"is3DSVer2": true
}

Пример ответа (ошибка - неизвестный статус в ARes)

{
	"redirect": "https://merchant.com/failUrl?orderId=b69ac21f-6cd3-7e06-931d-d90100b40dc1&lang=en",
	"error": "Error 3-D Secure authorization.",
	"errorCode": 0,
	"is3DSVer2": true,
	"errorTypeName": "TDS_UNKNOWN_ARES_STATUS",
	"processingErrorType": "MANDATORY_3DSECURE",
	"errorMessage": "Error 3-D Secure authorization."
}

Пример ответа (ошибка авторизации)

{
	"redirect": "https://merchant.com/failUrl?orderId=de056d10-f91d-7c91-a3de-559800b40dc1&lang=en",
	"error": "Operation declined. Please check the data and available balance of the account.",
	"errorCode": 0,
	"is3DSVer2": true,
	"errorTypeName": "DATA_INPUT_ERROR",
	"processingErrorType": "CLIENT_ERROR",
	"errorMessage": "Operation declined. Please check the data and available balance of the account."
}

Разное

Верификация карты

Метод https://abby.rbsuat.com/payment/rest/verifyCard.do используется для проверки карты. Оплата не производится, и заказ сразу переходит в статус REVERSED.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/x-www-form-urlencoded

Параметры запроса

ОбязательностьНазваниеТипОписание
НеобязательноuserNameString [1..50]Логин учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
НеобязательноpasswordString [1..30]Пароль учетной записи API продавца. Если для аутентификации при регистрации вместо логина и пароля используется открытый токен (параметр token), пароль передавать не нужно.
НеобязательноtokenString [1..256]Значение, используемое для аутентификации продавца при отправке запросов платежному шлюзу. Если вы передаете этот параметр, то не передавайте userName и password.
ОбязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноpanString [1..19]Номер платежной карты
НеобязательноcvcString [3]Передача параметра определяется типом платежа:
  • передача cvc предусмотрена не для всех токенизированных платежей;
  • передача cvc не предусмотрена для MIT платежей;
  • передача cvc обязательна по умолчанию для всех других типов платежей; но если для мерчанта выбрано разрешение Может проводить оплату без подтверждения CVC, то в таком случае передача cvc становится необязательной.

Допускаются только цифры.
НеобязательноexpiryInteger [6]Срок действия карты в следующем формате: YYYYMM. Обязательно, если не переданы ни seToken, ни bindingId.
НеобязательноcardholderNameString [1..26]Имя держателя карты латинскими буквами. Допустимые символы: латинские буквы, точка, пробел.
НеобязательноbackUrlString [1..512]URL-адрес, на который будет перенаправлен пользователь в случае успешной оплаты.
Используйте полный путь с указанием протокола, например https://test.com (а не test.com).
В противном случае пользователь будет перенаправлен на URL-адрес следующего вида: http://paymentGatewayURL/merchantURL
НеобязательноfailUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноdescriptionString [1..598]Описание заказа в любом формате.
Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки.
В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется.
НеобязательноlanguageString [2]Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию, указанный в настройках магазина.
Поддерживаемые языки: ru,en,by,pl.
НеобязательноreturnUrlString [1..512]Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://abby.rbsuat.com/payment/<merchant_address>.
НеобязательноthreeDSServerTransIdString [1..36]Идентификатор транзакции, созданный на сервере 3DS. Обязателен для аутентификации 3DS.
НеобязательноthreeDSVer2FinishUrlString [1..512]URL-адрес, по которому клиент должен быть перенаправлен после аутентификации на сервере ACS.
УсловиеthreeDSVer2MdOrderString [1..36]Номер заказа, который был зарегистрирован в первой части запроса в рамках 3DS2 операции. Обязателен для аутентификации 3DS.
Если данный параметр присутствует в запросе, то используется mdOrder, который передается в настоящем параметре. В таком случае регистрация заказа не происходит, а происходит сразу оплата заказа.
Этот параметр передается только при использовании методов мгновенной оплаты, т.е., когда заказ регистрируется и оплачивается в рамках одного запроса.
НеобязательноthreeDSSDKBooleanВозможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS SDK.
НеобязательноbillingPayerDataObjectБлок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры.
НеобязательноshippingPayerDataObjectОбъект, содержащий данные о доставке клиенту. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноpreOrderPayerDataObjectОбъект, содержащий данные предварительного заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноorderPayerDataObjectОбъект, содержащий данные о плательщике заказа. Этот параметр используется для дальнейшей 3DS-аутентификации клиента. См. вложенные параметры.
НеобязательноbillingAndShippingAddressMatchIndicatorString [1]Индикатор соответствия платежного адреса владельца карты и адреса доставки. Этот параметр используется для дальнейшей 3DS-аутентификации клиента.
Возможные значения:
  • Y - совпадение платежного адреса держателя карты и адреса доставки;
  • N - платежный адрес владельца карты и адрес доставки не совпадают.

Ниже приведены параметры блока billingPayerData (данные об адресе регистрации клиента).

ОбязательностьНазваниеТипОписание
НеобязательноbillingCityString [0..50]Город, зарегистрированный по конкретной карте у Банка Эмитента.
НеобязательноbillingCountryString [0..50]Страна, зарегистрированная по конкретной карте банка-эмитента. Формат: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) или наименование страны. Рекомендуем передавать двух/трехбуквенный ISO код страны.
НеобязательноbillingAddressLine1String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента (адрес плательщика). Строка 1. Обязательно к передаче для AVS-проверки.
НеобязательноbillingAddressLine2String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2.
НеобязательноbillingAddressLine3String [0..50]Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3.
НеобязательноbillingPostalCodeString [0..9]Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки.
НеобязательноbillingStateString [0..50]Штат, зарегистрированный по конкретной карте у Банка Эмитента. Формат: полное значение кода ISO 3166-2, его часть или наименование штата/региона. Может содержать буквы только латинского алфавита. Рекомендуем передавать двухбуквенный ISO код штата/региона.

Описание параметров объекта shippingPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноshippingCityString [1..50]Город заказчика (из адреса доставки)
НеобязательноshippingCountryString [1..50]Страна заказчика
НеобязательноshippingAddressLine1String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine2String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingAddressLine3String [1..50]Основной адрес клиента (из адреса доставки)
НеобязательноshippingPostalCodeString [1..16]Почтовый индекс клиента для доставки
НеобязательноshippingStateString [1..50]Штат/регион покупателя (из адреса доставки)
НеобязательноshippingMethodIndicatorInteger [2]Индикатор способа доставки.
Возможные значения:
  • 01 - доставка на платежный адрес держателя карты.
  • 02 - доставка на другой адрес, проверенный Мерчантом.
  • 03 - доставка по адресу, отличному от основного адреса держателя карты.
  • 04 - отправка в магазин/самовывоз (адрес магазина должен быть указан в соответствующих параметрах доставки)
  • 05 - Цифровое распространение (включает онлайн-сервисы и электронные подарочные карты)
  • 06 - билеты на путешествия и мероприятия, которые нельзя доставить.
  • 07 - Прочее (например, игры, цифровые товары, не подлежащие доставке, цифровые подписки и т. д.)
НеобязательноdeliveryTimeframeInteger [2]Срок поставки товара.
Возможные значения:
  • 01 - цифровая дистрибуция
  • 02 - доставка в тот же день
  • 03 - доставка на следующий день
  • 04 - доставка в течение 2-х дней после оплаты и позже.
НеобязательноdeliveryEmail String [1..254]Целевой адрес электронной почты для доставки цифрового распространения. Предпочтительно передавать электронную почту в самостоятельном параметре запроса email (но если вы передадите его в этом блоке, к нему применятся те же правила).

Описание параметров объекта preOrderPayerData:

ОбязательностьНазваниеТипОписание
НеобязательноpreOrderDateString [10]Ожидаемая дата доставки (для предзаказанных покупок) в формате ГГГГММДД.
НеобязательноpreOrderPurchaseIndInteger [2]Индикатор размещения клиентом заказа на доступную или будущую доставку.
Возможные значения:
  • 01 - возможна доставка;
  • 02 - будущая доставка
НеобязательноreorderItemsIndInteger [2]Индикатор того, что клиент перебронирует ранее оплаченную доставку в составе нового заказа.
Возможные значения:
  • 01 - заказ размещается впервые;
  • 02 - повторный заказ

Описание параметров объекта orderPayerData.

ОбязательностьНазваниеТипОписание
НеобязательноhomePhoneString [7..15]Домашний телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноworkPhoneString [7..15]Рабочий телефон владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
НеобязательноmobilePhoneString [7..15]Номер мобильного телефона владельца карты. Необходимо всегда указывать код страны, но знак + или 00 в начале можно указать или опустить. Номер должен иметь длину от 7 до 15 цифр. Таким образом, возможны следующие значения:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

Для платежей по VISA с 3DS авторизацией необходимо указать либо электронную почту, либо номер телефона владельца карты. Если у вас настроено отображение номера телефона на платежной странице и вы указали неверный номер телефона, клиент сможет исправить его на платежной странице.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeString [1..2]Информационный параметр в случае ошибки, который может иметь разные кодовые значения:
  • значение 0 - указывает на успех обработки запроса;
  • другое числовое значение (1-99) - указывает на ошибку, для получения более подробной информации о которой необходимо проверить параметр errorMessage.
Может отсутствовать, если результат не вызвал ошибки.
НеобязательноerrorMessageString [1..512]Информационный параметр, являющийся описанием ошибки в случае возникновения ошибки. Значение errorMessage может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде.
Язык описания задается в параметре language запроса.
НеобязательноorderIdString [1..36]Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
НеобязательноorderNumberString [1..36]Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа.
НеобязательноauthCodeInteger [6]Устаревший параметр (не используется). Его значение всегда 2 независимо от статуса заказа и кода авторизации процессинговой системы.
НеобязательноactionCodeStringКод ответа от процессинга банка. Содержит числовое значение. См. список кодов ответа здесь.
НеобязательноactionCodeDescriptionString [1..512]Описание actionCode, возвращаемое процессингом банка.
НеобязательноtimeIntegerВремя совершения транзакции как количество миллисекунд, прошедших с 00:00 GMT 1 января 1970 года (время Unix). Пример: 1740392720718 (соответствует времени 24 февраля 2025 года, 10:25:20 (UTC)).
НеобязательноeciInteger [1..4]Электронный коммерческий индикатор. Указан только после оплаты заказа и в случае наличия соответствующего разрешения. Ниже приводится расшифровка ECI-кодов.
  • ECI=01 или ECI=06 - мерчант поддерживает 3-D Secure, платежная карта не поддерживает 3-D Secure, платеж обрабатывается на основе кода CVV2/CVC.
  • ECI=02 или ECI=05 - и мерчант, и платежная карта поддерживают 3-D Secure;
  • ECI=07 - мерчант не поддерживает 3-D Secure, платеж обрабатывается на основе кода CVV2/CVC.
НеобязательноamountInteger [0..12]Сумма платежа в минимальных единицах валюты (например, в копейках).
НеобязательноcurrencyString [3]Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию. Допускаются только цифры.
НеобязательноrrnInteger [1..12]Reference Retrieval Number - идентификатор транзакции, присвоенный банком-эквайером.
НеобязательноacsUrlString [1..512]URL-адрес для редиректа на ACS. Возвращается при успешном ответе в случае оплаты 3D-Secure, если требуется редирект на ACS. Подробнее см. Редирект на ACS.
НеобязательноtermUrlString [1..512]При успешном ответе в случае оплаты 3D-Secure. Это URL-адрес, на который ACS перенаправляет владельца карты после аутентификации. Подробнее см. Редирект на ACS.
НеобязательноpaReqString [1..255]PAReq (Payment Authentication Request) — сообщение, которое необходимо отправить в ACS вместе с редиректом. Возвращается при успешном ответе в случае оплаты 3D-Secure, если необходим редирект на ACS. Это сообщение содержит данные в кодировке Base64, необходимые для аутентификации держателя карты. Подробнее см. Редирект на ACS.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/verifyCard.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data pan=4000001111111118 \
  --data cvc=123 \
  --data expiry=203012

Пример ответа

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderId": "cfc238ca-68f9-745c-ba7e-eb9100af79e0",
  "orderNumber": "12017",
  "rrn": "111111111115",
  "authCode": "123456",
  "actionCode": 0,
  "actionCodeDescription": "",
  "time": 1595284781180,
  "eci": "07",
  "amount": 0,
  "currency": "933"
}

Выгрузка реестра

Запрос формирования реестра

При наличии соответствующих разрешений магазин может сформировать и выгрузить реестр транзакций за определенный период в виде CSV-файла. Для этого используется специальное приложение Trareg, которое получает от банков выгрузки транзакций, обогащает транзакции данными из шлюза и хранит обогащенные транзакции в своей базе.

Для формирования реестра используется запрос https://abby.rbsuat.com/trareg/registry/create.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноdateFromString [1..10]Дата начала реестра в формате ГГГГ-ММ-ДД.
Если требуется отчёт только за один день, требуется указать дату в dateFrom. Параметр dateTo указывать не требуется.
НеобязательноdateToString [1..10]Дата окончания реестра (включительно) в формате ГГГГ-ММ-ДД.
Дата окончания должна быть не меньше даты начала, указанной в dateFrom.
Если требуется отчёт только за один день, требуется указать дату в dateFrom. Параметр dateTo указывать не требуется.
НеобязательноmerchantLoginString [1..32]Логин мерчанта, по заказам которого требуется сформировать реестр.
Для указания мерчанта допустимо использовать одну из опций:
1. Указать логин мерчанта merchantLogin:
  • логин мерчанта пользователя из userName
  • либо логин дочернего мерчанта.

2. Указать номер терминала terminalId:
  • При указании terminalId реестр формируется по всем доступным мерчантам с указанным terminalId (с учётом "дочерней схемы").

3. НЕ указывать merchantLogin и terminalId. В таком случае:
  • если мерчант пользователя из userName является родителем в "дочерней схеме", то должен быть сформирован реестр по всем дочерним мерчантам;
  • если мерчант пользователя из userName НЕ является родителем в "дочерней схеме" или не участвует в "дочерней схеме", то должен быть сформирован реестр только по мерчанту пользователя из userName.
НеобязательноterminalIdString [1..600]Номер терминала, по заказам которого требуется сформировать реестр.
Для указания мерчанта допустимо использовать одну из следующих опций:
1. Указать логин мерчанта merchantLogin:
  • логин мерчанта пользователя из userName
    либо
    логин дочернего мерчанта.

2. Указать номер терминала terminalId:
  • При указании terminalId реестр формируется по всем доступным мерчантам с указанным terminalId (с учётом "дочерней схемы").

3. НЕ указывать merchantLogin и terminalId. В таком случае:
  • если мерчант пользователя из userName является родителем в "дочерней схеме", то должен быть сформирован реестр "по родителю" + "по всем дочерним мерчантам";
  • если мерчант пользователя из userName НЕ является родителем в "дочерней схеме" или не участвует в "дочерней схеме", то должен быть сформирован реестр только по мерчанту пользователя из userName.
НеобязательноexpireAfterDaysInteger [1..2]Количество дней после генерации реестра, в течении которого реестр хранится в Trareg.
По умолчанию выставляется значение "1". Допустимо указание не более 10 дней.
НеобязательноbankAliasString [1..10]Алиас Банка, в рамках которого требуется провести формирование отчёта.
НеобязательноparamsJSON ArrayДополнительные параметры, используемые при формировании отчёта.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanВозможные значения:
  • true - запрос успешный, отображается массив registry.
  • false - запрос неуспешный, отображается код ошибки errorCode и описание errorMessage.
НеобязательноregistryJSON arrayМассив параметров с информацией по реестру. См. вложенные параметры.
НеобязательноerrorCodeInteger [1..2]Код ошибки. См. описание кодов.
НеобязательноerrorMesageString [1..512]Описание ошибки.

Параметры блока registry

ОбязательностьНазваниеТипОписание
НеобязательноidString [1..32]Уникальный номер реестра в Trareg из запроса /trareg/registry/create.
НеобязательноstatusString [1..32]Статус реестра. Возможные значения:
  • COMPLETE - реестр успешно сформирован.
  • PROCESSING - процесс формирования реестра не завершён на данный момент.
  • FAILED - ошибка формирования реестра.
  • REMOVED - реестр удалён.
  • QUEUED - реестр находится в очереди на формирование.
НеобязательноmerchantLoginString [1..32]Логин мерчанта, по которому формируется реестр.
НеобязательноterminalIdString [1..12]Терминал, по которому формируется реестр.
НеобязательноmerchantListBlockСписок логинов мерчантов, по которым формируется реестр.
Пример отображения:
"merchantList":["TEST1","TEST2","TESTN"]
НеобязательноdateFromString [10]Дата начала реестра в формате ГГГГ-ММ-ДД, полученная в запросе registry/create.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.
НеобязательноdateToString [10]Дата окончания реестра (включительно) в формате ГГГГ-ММ-ДД, полученная в запросе registry/create.
Присутствует, только если был указан в запросе registry/create, и если запрос прошёл успешно с errorCode=0.
НеобязательноcompleteDateString [20]Дата формирования реестра в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.
НеобязательноremoveDateString [20]Дата удаления реестра в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС с учётом количества дней из expireAfterDays из запроса registry/create.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.

Примеры

Пример запроса

curl -X POST 'https://abby.rbsuat.com/trareg/registry/create'
  -H 'Content-Type: application/json' --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "dateFrom" : "2024-06-01",
  "dateTo" : "2024-08-19"
}'

Пример ответа

{
    "success": true,
    "registry": {
        "id": "11446",
        "merchantLogin": "Test",
        "merchantList": [
            "Test"
        ],
        "terminalId": "27070103",
        "dateFrom": "2024-06-01",
        "dateTo": "2024-08-19",
        "createDate": "2024-09-02 19:05:30",
        "removeDate": "2024-09-03 19:05:30",
        "status": "QUEUED"
    }
}

Коды ошибок

ЗначениеСообщениеОписание
0УспешноОбработка запроса прошла без ошибок. Реестр добавлен в очередь на формирование.
5Доступ запрещёнВ настройках пользователя не установлено разрешение на обработку файлов биллинга.
5Доступ запрещёнНет доступа к реестрам мерчанта.
5Пользователь должен сменить свой парольВ настройках пользователя установлена принудительная смена пароля.
5Пароль введён неверно.Например, пользователь допустил ошибку при вводе пароля или пароль был сменён в результате действий технической поддержки.
7Системная ошибкаОбщая ошибка системы.
14[dateFrom] не заданНе указан параметр dateFrom.
14[dateFrom] неверный форматДата указана в неверном формате.
14[dateTo] меньше [dateFrom]Дата окончания реестра не может быть меньше даты начала реестра.
14[dateTo] неверный форматДата указана в неверном формате.
14[expireAfterDays] неверный форматДопустимые значения от 1 до 10.

Запрос статуса реестра

При наличии соответствующих разрешений магазин может сформировать и выгрузить реестр транзакций за определенный период в виде CSV-файла. Для этого используется специальное приложение Trareg, которое получает от банков выгрузки транзакций, обогащает транзакции данными из шлюза и хранит обогащенные транзакции в своей базе.

Для запроса статуса реестра используется POST-запрос https://abby.rbsuat.com/trareg/registry/getStatus.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноregistryIdString [1..32]Уникальный номер реестра в Trareg - параметр id из массива registry. Возвращается в ответе /trareg/registry/create.
НеобязательноrequestIdString [1..32]Аналог registryId.
НеобязательноbankAliasStringПсевдоним банка.

Параметры ответа

ОбязательностьНазваниеТипОписание
ОбязательноsuccessBooleanВозможные значения:
  • true - запрос успешный, отображается массив registry.
  • false - запрос неуспешный, отображается код ошибки errorCode и описание errorMessage.
НеобязательноregistryJSON arrayМассив параметров с информацией по реестру. См. вложенные параметры.
НеобязательноerrorCodeInteger [1..2]Код ошибки. См. описание кодов.
НеобязательноerrorMesageString [1..512]Описание ошибки.

Параметры блока registry

ОбязательностьНазваниеТипОписание
НеобязательноidString [1..32]Уникальный номер реестра в Trareg из запроса /trareg/registry/create.
НеобязательноstatusString [1..32]Статус реестра. Возможные значения:
  • COMPLETE - реестр успешно сформирован.
  • PROCESSING - процесс формирования реестра не завершён на данный момент.
  • FAILED - ошибка формирования реестра.
  • REMOVED - реестр удалён.
  • QUEUED - реестр находится в очереди на формирование.
НеобязательноmerchantLoginString [1..32]Логин мерчанта, по которому формируется реестр.
НеобязательноterminalIdString [1..12]Терминал, по которому формируется реестр.
НеобязательноmerchantListBlockСписок логинов мерчантов, по которым формируется реестр.
Пример отображения:
"merchantList":["TEST1","TEST2","TESTN"]
НеобязательноdateFromString [10]Дата начала реестра в формате ГГГГ-ММ-ДД, полученная в запросе registry/create.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.
НеобязательноdateToString [10]Дата окончания реестра (включительно) в формате ГГГГ-ММ-ДД, полученная в запросе registry/create.
Присутствует, только если был указан в запросе registry/create, и если запрос прошёл успешно с errorCode=0.
НеобязательноcompleteDateString [20]Дата формирования реестра в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.
НеобязательноremoveDateString [20]Дата удаления реестра в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС с учётом количества дней из expireAfterDays из запроса registry/create.
Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.
НеобязательноfilenamesStringНаименование сформированного файла реестра (zip-архив). Присутствует, если реестр уже был сформирован на момент запроса registry/getStatus, то есть status=COMPLETE.

Примеры

Пример запроса

curl -X POST 'https://abby.rbsuat.com/trareg/registry/getStatus'
  -H 'Content-Type: application/json' --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "requestId" : "11446"
}'

Пример ответа

{
    "success": true,
    "registry": {
        "id": "11446",
        "merchantLogin": "Test",
        "merchantList": [
            "Test"
        ],
        "terminalId": "27070103",
        "dateFrom": "2024-06-01",
        "dateTo": "2024-08-19",
        "createDate": "2024-09-02 19:05:30",
        "removeDate": "2024-09-03 19:05:30",
        "status": "COMPLETE",
        "filenames": [
            "archive.zip"
        ]
    }
}

Коды ошибок

ЗначениеСообщениеОписание
0УспешноОбработка запроса прошла без ошибок.
1Процесс формирования реестра не завершёнРеестр не готов к выгрузке в данный момент. Пожалуйста, повторите попытку позже.
5Доступ запрещёнВ настройках пользователя не установлено разрешение на обработку файлов биллинга.
5Доступ запрещёнНет доступа к реестрам мерчанта.
5Пользователь должен сменить свой парольВ настройках пользователя установлена принудительная смена пароля.
5Пароль введён неверно.Например, пользователь допустил ошибку при вводе пароля или пароль был сменён в результате действий технической поддержки.
7Системная ошибкаОбщая ошибка системы.
14[registryId] не заданНе указан идентификатор реестра.
14[registryId] неверный форматИдентификатор реестра указан в неверном формате.
15registryId не найденУказан некорректный идентификатор реестра.

Запрос выгрузки реестра

При наличии соответствующих разрешений магазин может сформировать и выгрузить реестр транзакций за определенный период в виде CSV-файла. Для этого используется специальное приложение Trareg, которое получает от банков выгрузки транзакций, обогащает транзакции данными из шлюза и хранит обогащенные транзакции в своей базе.

Для выгрузки реестра используется POST-запрос https://abby.rbsuat.com/trareg/registry/download.


При выполнении запроса необходимо использовать заголовок: Content-Type: application/json

Параметры запроса

ОбязательностьНазваниеТипОписание
ОбязательноuserNameString [1..50]Логин учетной записи API продавца.
ОбязательноpasswordString [1..30]Пароль учетной записи API продавца.
ОбязательноregistryIdString [1..32]Уникальный номер реестра в Trareg - параметр id из массива registry. Возвращается в ответе /trareg/registry/create.

Параметры ответа

ОбязательностьНазваниеТипОписание
НеобязательноerrorCodeInteger [1..2]Код ошибки. Присутствует в ответе только в случае неуспешного запроса. См. описание кодов.
НеобязательноerrorMesageString [1..512]Описание ошибки. Присутствует в ответе только в случае неуспешного запроса.

При успешном выполнении запроса скачивается ZIP-архив с подготовленными реестрами для скачивания.

Примеры

Пример запроса

curl -X POST 'https://abby.rbsuat.com/trareg/registry/download'
  -H 'Content-Type: application/json' --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "requestId" : "11446"
}'

Пример ответа - неуспешный запрос

{
  "errorCode":5,
  "errorMesage":"Доступ запрещён"
}

Коды ошибок

ЗначениеСообщениеОписание
0УспешноОбработка запроса прошла без ошибок.
1Процесс формирования реестра не завершёнРеестр не готов к выгрузке в данный момент. Пожалуйста, повторите попытку позже.
5Доступ запрещёнВ настройках пользователя не установлено разрешение на обработку файлов биллинга.
5Доступ запрещёнНет доступа к реестрам мерчанта.
5Пользователь должен сменить свой парольВ настройках пользователя установлена принудительная смена пароля.
5Пароль введён неверно.Например, пользователь допустил ошибку при вводе пароля или пароль был сменён в результате действий технической поддержки.
7Системная ошибкаОбщая ошибка системы.
14[registryId] не заданНе указан идентификатор реестра.
14[registryId] неверный форматИдентификатор реестра указан в неверном формате.
15registryId не найденУказан некорректный идентификатор реестра.

Уведомления обратного вызова

API платежного шлюза позволяет получать уведомления обратного вызова (callback-уведомления) об изменении статусов платежей.

Общая информация

События, о которых могут приходить уведомления

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

Наиболее распространенные уведомления описывают изменения статуса заказа, например:

Более сложные интеграции могут подразумевать дополнительные триггеры обратного вызова, такие как:

Тип триггера передается в параметре operation уведомления обратного вызова (см. подробности ниже). Для удобства уведомления для дополнительных триггеров могут быть направлены на другой URL-адрес с помощью параметра dynamicCallbackUrl в запросах на регистрацию заказа.

Интеграция через уведомления обратного вызова (callback)

Вместо последнего шага интеграции через редирект вы можете выбрать один из следующих подходов.

Использовать returnUrl

Когда код вашего сайта, расположенный по адресу returnUrl (например, https://mybestmerchantreturnurl.com/?back&orderId=61c33664-85a0-7d6b-af26-09ee009c4000&lang=en), идентифицирует перенаправляемого из шлюза держателя карты посде попытки оплаты, вы можете проверить статус заказа с помощью API-запроса getOrderStatusExtended.
Этот вариант является самым простым, но он не совсем надежен, поскольку перенаправление держателя карты может завершиться ошибкой (например, в результате обрыва соединения или закрытия браузера держателем карты), а returnUrl может не получить триггер для вызова getOrderStatusExtended.

getOrderStatusExtended.do

curl --request POST \
  --url https://abby.rbsuat.com/payment/rest/getOrderStatusExtended.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=016b6f47-4628-7ea2-80f5-6c6e00a7d8c0 \
  --data language=en
{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderNumber": "11008",
  "orderStatus": 2,
  "actionCode": 0,
  "actionCodeDescription": "",
  "amount": 2000,
  "currency": "933",
  "date": 1618577250840,
  "orderDescription": "my_first_order",
  "merchantOrderParams": [
    {
      "name": "browser_language_param",
      "value": "en"
    },
    {
      "name": "browser_os_param",
      "value": "UNKNOWN"
    },
    {
      "name": "user_agent",
      "value": "curl/7.75.0"
    },
    {
      "name": "browser_name_param",
      "value": "DOWNLOAD"
    }
  ],
  "transactionAttributes": [],
  "attributes": [
    {
      "name": "mdOrder",
      "value": "016b7747-c4ed-70b3-bc36-fdd400a7d8c0"
    }
  ],
  "cardAuthInfo": {
    "maskedPan": "555555**5599",
    "expiration": "202412",
    "cardholderName": "TEST CARDHOLDER",
    "approvalCode": "123456",
    "pan": "555555**5599"
  },
  "authDateTime": 1618577288377,
  "terminalId": "123456",
  "authRefNum": "931793605827",
  "paymentAmountInfo": {
    "paymentState": "DEPOSITED",
    "approvedAmount": 2000,
    "depositedAmount": 2000,
    "refundedAmount": 0
  },
  "bankInfo": {
    "bankCountryCode": "UNKNOWN",
    "bankCountryName": "&ltUnknown&gt"
  }
}

Использовать подписанный callback шлюза

Если вы знаете, как обращаться с цифровыми сертификатами и подписями, вы можете использовать callback с цифровой подписью и контрольной суммой (шлюз позволяет настроить отправку таких уведомлений). Контрольная сумма используется для проверки и безопасности. После того, как подпись уведомления была проверена, уже нет необходимости отправлять getOrderStatusExtended, потому что уведомление содержит в себе информацию о статусе заказа.

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=1

Типы уведомлений

Уведомления без контрольной суммы

Эти уведомления содержат только информацию о заказе, поэтому потенциально продавец рискует принять уведомление, отправленное злоумышленником, за подлинное.

Уведомления с контрольной суммой

Такие уведомления помимо сведений о заказе содержат аутентификационный код. Аутентификационный код представляет собой контрольную сумму сведений о заказе. Эта контрольная сумма позволяет убедиться, что callback-уведомление действительно было отправлено платежным шлюзом.
Существует два способа реализации callback-уведомлений с контрольной суммой:


Открытый ключ можно выгрузить из личного кабинета платежного шлюза при наличии соответствующих полномочий. Для большей безопасности рекомендуется использовать асимметричную криптографию.
Чтобы включить уведомления с контрольными суммами, а также получить соответствующий криптографический ключ, обратитесь в нашу службу технической поддержки.

Требования к SSL-сертификатам на сайте продавца

Если уведомление о состоянии заказа приходит через HTTPS-соединение, необходимо удостоверить подлинность сайта с помощью SSL-сертификата, выпущенного и подписанного доверенным центром сертификации (см. таблицу ниже). Использование самозаверенных сертификатов не допускается.

ТребованиеОписание
Алгоритм подписи.Не ниже SHA-256.
Поддерживаемые центры сертификации.Ниже приведены примеры организаций, которые регистрируют цифровые сертификаты:

Формат URL-адресов уведомлений

Поддерживаются запросы POST и GET.

Ниже приведен пример GET-запроса по умолчанию, без дополнительных параметров. Параметры получены в запросе.

Уведомление без контрольной суммы (GET)

https://mybestmerchantreturnurl.com/callback/?mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Уведомление с контрольной суммы (GET)

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&
operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Для POST-коллбэков вы получите те же параметры в теле HTTP (вместо параметров запроса).

Уведомление без контрольной суммы (POST)

https://mybestmerchantreturnurl.com/callback/
mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Уведомление с контрольной суммой (POST)

https://mybestmerchantreturnurl.com/callback/
mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Передаваемые параметры представлены в таблице ниже.

В таблице указаны только основные параметры. Вы также можете использовать дополнительные параметры, если они настроены в платежном шлюзе.

ПараметрОписание
mdOrderУникальный номер заказа, хранящийся в платежном шлюзе.
orderNumberУникальный номер заказа (идентификатор) в системе мерчанта.
checksumАутентификационный код или контрольная сумма, полученная из набора параметров.
operationТип события, вызвавшего уведомление:
  • approved - холдирование (удержание) средств на счете покупателя;
  • deposited - операция завершения;
  • reversed - платеж был отменен;
  • refunded - деньги за заказ возвращены;
  • bindingCreated - карта плательщика сохранена (cвязка создана);
  • bindingActivityChanged - существующая связка была отключена/включена.
  • declinedByTimeout - платеж был отклонен из-за истечения времени ожидания;
  • declinedCardPresent - отклоненная транзакция с предъявлением карты (оплата физической картой).
statusИндикатор успешности операции, указанной в параметре operation:
  • 1 - успех;
  • 0 - ошибка.

Пользовательские заголовки callback уведомлений

Пользовательские заголовки callback уведомлений можно задать, обратившись в службу технической поддержки. Например:

'http://mybestmerchantreturnurl.com/callback.php', headers={Authorization=token, Content-type=plain
/text}, params={orderNumber=349002, mdOrder=5ffb1899-cd1e-7c1e-8750-e98500093c43, operation=deposited, status=1}

где {Authorization=token, Content-type=plain/text} – это настраиваемый заголовок.

Примеры

Пример URL-адреса уведомления без контрольной суммы

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0

Пример URL-адреса уведомления с контрольной суммой

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=0

Алгоритм обработки уведомлений о состоянии заказов

В разделах ниже представлен алгоритм обработки уведомлений о состоянии заказов в зависимости от типа таких уведомлений.

Уведомление без контрольной суммы

  1. Платежный шлюз отправляет на сервер продавца следующий запрос.
    https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0
  2. Сервер продавца возвращает HTTP-сообщение 200 OK платежному шлюзу.

Уведомление с контрольной суммой

  1. Платежный шлюз отправляет HTTPS-запрос следующего вида на сервер мерчанта, при этом:

    • при использовании симметричной криптографии контрольная сумма формируется с помощью ключа, общего для платежного шлюза и продавца;
    • при использовании асимметричной криптографии контрольная сумма формируется с помощью закрытого ключа, известного только платежному шлюзу.
      https://mybestmerchantreturnurl.com/path?amount=123456&orderNumber=10747&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&mdOrder=3ff6962a-7dcc-4283-ab50-a6d7dd3386fe&operation=deposited&status=1
      Порядок параметров в уведомлении может быть произвольным.
  2. На стороне продавца из строки параметров уведомления удаляются параметры checksum и sign_alias, а значение параметра checksum (контрольная сумма) сохраняется для проверки подлинности уведомления;

  3. Оставшиеся параметры и их значения используются для создания следующей строки.
    имя_параметра1;значение_параметра1;имя_параметра2;значение_параметра2;…;имя_параметраN;значение_параметраN;
    В этом случае пары имя_параметра;значение_параметра должны быть отсортированы в прямом алфавитном порядке (по возрастанию) по именам параметров.
    Пример сгенерированной строки параметров:
    amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;

  4. Контрольная сумма рассчитывается на стороне мерчанта, способ расчета зависит от способа ее формирования:

    • при использовании симметричной криптографии - с помощью алгоритма HMAC-SHA256 и общего с платежным шлюзом закрытого ключа;
    • при использовании асимметричной криптографии - с помощью алгоритма хеширования, который зависит от способа создания ключевой пары, и открытого ключа, который связан с закрытым ключом, находящимся на стороне платежного шлюза.
  5. В получившейся строке контрольной суммы все буквы нижнего регистра заменяются на буквы верхнего регистра.

  6. Происходит сравнение полученного значения с контрольной суммой, извлеченной ранее из параметра checksum.

  7. Если контрольные суммы совпадают, сервер отправляет в платежный шлюз HTTP-код 200 OK.

Если контрольные суммы совпадают, это уведомление подлинно и было отправлено платежным шлюзом. В противном случае вероятно, что злоумышленник пытается выдать свое уведомление за уведомление платежного шлюза.

Уведомление о статусе платежа

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

  1. Проверить подпись (параметр checksum в уведомлении);
  2. Проверять два параметра уведомления обратного вызова: operation и status.

Если значение параметра operation отличается от approved или deposited, то уведомление обратного вызова относится к статусу оплаты.

Неуспешные уведомления

Если в платежный шлюз возвращается ответ, отличный от HTTP-кода 200 OK, отправка уведомления считается неуспешной. В этом случае платежный шлюз повторяет уведомление с интервалом в 30 секунд до тех пор, пока не будет выполнено одно из следующих условий:

При достижении одного из указанных выше условий попытки отправки callback-уведомлений об операции прекращаются.

Дополнительные параметры уведомлений обратного вызова

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

ПараметрОписаниеТип события
bindingIdUUIID созданных/обновленных сохраненных учетных данных (связки).BINDING_CREATED, BINDING_ACTIVITY_CHANGED
emailЭлектронная почта клиента.BINDING_CREATED
phoneТелефон клиента.BINDING_CREATED
panMaskedМаскированный PAN карты клиента.BINDING_CREATED
panCountryCodeКод страны клиента.BINDING_CREATED
enabledАктивна ли связка (true/false).BINDING_ACTIVITY_CHANGED
currentDepositAmountFormattedОтформатированная сумма операции завершения.DEPOSITED
currentReverseAmountFormattedФорматированная сумма операции отмены.REVERSED
currentRefundAmountFormattedОтформатированная сумма операции возврата.REFUNDED
operationRefundedAmountFormattedОтформатированная сумма операции возврата.REFUNDED
operationRefundedAmountСумма возврата в минимальных денежных единицах (например, в центах).REFUNDED
externalRefundIdВнешний идентификатор операции возврата.REFUNDED
callbackCreationDateДата создания уведомления обратного вызова. Требуется специальная настройка продавца.DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED, DECLINED_CARDPRESENT
statusСтатус операции: 1 - успех, 0 - неудача DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
operation Тип callback-а Possible values: deposited, approved, reversed, refunded, bindingCreated, bindingActivityChanged, declinedByTimeout, declinedCardpresent DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
finishCheckUrlURL для генерации чека DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
sign_aliasИмя ключа, используемого для подписи. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
checksumКонтрольная сумма уведомления обратного вызова (используется для уведомлений обратного вызова с контрольной суммой). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
cardholderNameИмя держателя карты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
amountСумма зарегистрированного заказа в минимальных денежных единицах. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentAmountСумма зарегистрированного заказа в минимальных денежных единицах. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
amountFormattedОтформатированная сумма зарегистрированного заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
feeAmountСумма комиссии в минимальных единицах валюты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvedAmountПредварительно авторизованная сумма в минимальных денежных единицах. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedAmountСумма завершения в минимальных денежных единицах. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refundedAmountСумма возмещения в минимальных единицах валюты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvedAmountFormattedОтформатированная предварительно авторизованная сумма. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedAmountFormattedОтформатированная сумма зачисления. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refundedAmountFormattedОтформатированная сумма возврата. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
totalAmountFormattedОтформатированная общая сумма заказа (зарегистрированная сумма + комиссия). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedTotalAmountFormattedОтформатированная общая сумма завершения (все суммы завершения + все суммы возврата + комиссия). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvalCodeКод авторизации платежа, полученный от процессинга. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
authCodeКод авторизации DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
bankNameНаименование банка, выпустившего карту клиента. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
currencyВалюта заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositFlagФлаг, указывающий тип операции.
  • 1 - покупка
  • 2 - преавторизация
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
eciЭлектронный коммерческий индикатор. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
ipIP адрес плательщика. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
ipCountryCodeКод страны банка-эмитента. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
maskedPanМаскированный номер карты клиента. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
mdOrderНомер заказа в платежном шлюзе. Уникален в пределах платежного шлюза. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
mdorderНомер заказа в платежном шлюзе. Уникален в пределах платежного шлюза. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
merchantFullNameФИО продавца. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
merchantLoginЛогин продавца. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
orderDescriptionОписание заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
orderNumberНомер заказа (ID) в системе мерчанта. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
threeDSTypeВид транзакции (3DS). Возможные значения: SSL, THREE_DS1_FULL, THREE_DS1_ATTEMPT, THREE_DS2_FULL, THREE_DS2_FRICTIONLESS, THREE_DS2_ATTEMPT, THREE_DS2_EXEMPTION_GRANTED, THREE_DS2_3RI, THREE_DS2_3RI_ATTEMPT DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
dateДата создания заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
clientIdНомер клиента (ID) в системе мерчанта. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT,BINDING_CREATED, BINDING_ACTIVITY_CHANGED
actionCodeКод результата выполнения операции. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
actionCodeDescriptionОписание кода результата выполнения операции. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentRefNumReference Retrieval Number - идентификатор транзакции, присвоенный банком-эквайером. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentStateСтатус заказа. Possible values: started, payment_approved, payment_declined, payment_void, payment_deposited, refunded, pending, partly_deposited DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentWayСпособ оплаты заказа. Дополнительные возможные значения параметра приведены здесь. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
processingIdИдентификатор клиента в процессинге. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refNumReference Retrieval Number - идентификатор транзакции, присвоенный банком-эквайером. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refnumReference Retrieval Number - идентификатор транзакции, присвоенный банком-эквайером. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
terminalIdИдентификатор терминала в системе, обрабатывающей платеж. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentSystemНаименование платежной системы. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
currencyNameТрехбуквенный ISO-код валюты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
transactionAttributesАтрибуты заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentDateДата оплаты заказа.DEPOSITED, APPROVED, REVERSED, REFUNDED
depositedDateДата операции завершения по заказу.DEPOSITED, APPROVED, REVERSED, REFUNDED
refundedDateДата операции возврата по заказу.REFUNDED
reversedDateДата операции отмены заказа.DEPOSITED, REVERSED, REFUNDED
declineDateДата отмены заказа. DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
xidИндикатор электронной коммерции транзакции, определяемый продавцом. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
cavvЗначение проверки аутентификации владельца карты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
authValueЗначение проверки аутентификации владельца карты. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
sessionExpiredDateДата и время истечения срока действия заказа. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
tokenizeCryptogramТокенизированная криптограмма. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
creditBankNameНазвание банка, выпустившего карту для зачисления (в P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
creditPanCountryCodeКод страны карты получателя (в P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
isInternationalP2PЯвляется ли P2P-транзакция межстрановой.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
recipientDataИнформация о получателе P2P.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
transactionTypeIndicatorИнформация о получателе P2P. Возможные значения:
  • A - Перевод с карты на карту одного владельца (со счета на счет)
  • B - Перевод с целью приобретения криптовалюты
  • C - Перевод для целей покупки криптовалюты
  • D - Выплата средств
  • F - Перевод для ставок по азартным играм
  • G - Выплата в азартных играх онлайн
  • L - Перевод для целей погашения счетов по кредитной карте
  • O - Перевод для целей оплаты задолженности
  • P - Перевод с карты на карту разных владельцев
  • W - Перевод на собственный счет поэтапного цифрового кошелька для оплаты
DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
operationTypeТип операции P2P: AFT/OCT.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
debitBankNameНазвание банка, выпустившего карту для списания (в P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
debitPanCountryCodeКод страны карты для списания (в P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
p2pDebitRrnRRN (Reference Retrieval Number) операции списания P2P.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
avsCodeКод ответа верификации AVS (проверка адреса и почтового индекса держателя карты). Возможные значения:
  • -1 – почтовый индекс и адрес совпадают.
  • 1 – адрес совпадает, почтовый индекс не совпадает.
  • 2 - почтовый индекс совпадает, адрес не совпадает.
  • 3 - почтовый индекс и адрес не совпадают.
  • 50 - запрошена проверка данных, но результат неуспешен.
  • 51 - некорректный формат запроса AVS/AVV проверки.
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT

Примеры кода

Симметричная криптография

Java
package net.payrdr.test;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;

public class SymmetricCryptographyExample {

    private static final String secretToken = "ooc7slpvc61k7sf7ma7p4hrefr";
    private static final Map<String, String> callbackParams = Map.of(
            "checksum", "EAF2FB72CAB99FD5067F4BA493DD84F4D79C1589FDE8ED29622F0F07215AA972",
            "mdOrder", "06cf5599-3f17-7c86-bdbc-bd7d00a8b38b",
            "operation", "approved",
            "orderNumber", "2003",
            "status", "1"
    );

    public static void main(String[] args) throws Exception {
        String signedString = callbackParams.entrySet().stream()
                .filter(entry -> !entry.getKey().equals("checksum"))
                .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
                .collect(Collector.of(
                        StringBuilder::new,
                        (accumulator, element) -> accumulator
                                .append(element.getKey()).append(";")
                                .append(element.getValue()).append(";"),
                        StringBuilder::append,
                        StringBuilder::toString
                ));

        byte[] mac = generateHMacSHA256(secretToken.getBytes(), signedString.getBytes());
        String signature = callbackParams.get("checksum");

        boolean verified = verifyMac(signature, mac);
        System.out.println("signature verification result: " + verified);
    }

    private static boolean verifyMac(String signature, byte[] mac) {
        return signature.equals(bytesToHex(mac));
    }

    public static byte[] generateHMacSHA256(byte[] hmacKeyBytes, byte[] dataBytes) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(hmacKeyBytes, "HmacSHA256");

        Mac hMacSHA256 = Mac.getInstance("HmacSHA256");
        hMacSHA256.init(secretKey);

        return hMacSHA256.doFinal(dataBytes);
    }

    private static String bytesToHex(byte[] bytes) {
        final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
        byte[] hexChars = new byte[bytes.length * 2];
        for (int j = 0; j < bytes.length; j++) {
            int v = bytes[j] & 0xFF;
            hexChars[j * 2] = HEX_ARRAY[v >>> 4];
            hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
        }
        return new String(hexChars, StandardCharsets.UTF_8);
    }
}

Асимметричная криптография

Java
package net.payrdr.test;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.Signature;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;

public class AsymmetricCryptographyExample {

    private static final Map<String, String> callbackParams = Map.of(
            "amount", "35000099",
            "sign_alias", "SHA-256 with RSA",
            "checksum", "163BD9FAE437B5DCDAAC4EB5ECEE5E533DAC7BD2C8947B0719F7A8BD17C101EBDBEACDB295C10BF041E903AF3FF1E6101FF7DB9BD024C6272912D86382090D5A7614E174DC034EBBB541435C80869CEED1F1E1710B71D6EE7F52AE354505A83A1E279FBA02572DC4661C1D75ABF5A7130B70306CAFA69DABC2F6200A698198F8",
            "mdOrder", "12b59da8-f68f-7c8d-12b5-9da8000826ea",
            "operation", "deposited",
            "status", "1");

    private static final String certificate =
            "MIICcTCCAdqgAwIBAgIGAWAnZt3aMA0GCSqGSIb3DQEBCwUAMHwxIDAeBgkqhkiG9w0BCQEWEWt6" +
                    "bnRlc3RAeWFuZGV4LnJ1MQswCQYDVQQGEwJSVTESMBAGA1UECBMJVGF0YXJzdGFuMQ4wDAYDVQQH" +
                    "EwVLYXphbjEMMAoGA1UEChMDUkJTMQswCQYDVQQLEwJRQTEMMAoGA1UEAxMDUkJTMB4XDTE3MTIw" +
                    "NTE2MDEyMFoXDTE4MTIwNTE2MDExOVowfDEgMB4GCSqGSIb3DQEJARYRa3pudGVzdEB5YW5kZXgu" +
                    "cnUxCzAJBgNVBAYTAlJVMRIwEAYDVQQIEwlUYXRhcnN0YW4xDjAMBgNVBAcTBUthemFuMQwwCgYD" +
                    "VQQKEwNSQlMxCzAJBgNVBAsTAlFBMQwwCgYDVQQDEwNSQlMwgZ8wDQYJKoZIhvcNAQEBBQADgY0A" +
                    "MIGJAoGBAJNgxgtWRFe8zhF6FE1C8s1t/dnnC8qzNN+uuUOQ3hBx1CHKQTEtZFTiCbNLMNkgWtJ/" +
                    "CRBBiFXQbyza0/Ks7FRgSD52qFYUV05zRjLLoEyzG6LAfihJwTEPddNxBNvCxqdBeVdDThG81zC0" +
                    "DiAhMeSwvcPCtejaDDSEYcQBLLhDAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAfRP54xwuGLW/Cg08" +
                    "ar6YqhdFNGq5TgXMBvQGQfRvL7W6oH67PcvzgvzN8XCL56dcpB7S8ek6NGYfPQ4K2zhgxhxpFEDH" +
                    "PcgU4vswnhhWbGVMoVgmTA0hEkwq86CA5ZXJkJm6f3E/J6lYoPQaKatKF24706T6iH2htG4Bkjre" +
                    "gUA=";

    public static void main(String[] args) throws Exception {

        String signedString = callbackParams.entrySet().stream()
                .filter(entry -> !entry.getKey().equals("checksum") && !entry.getKey().equals("sign_alias"))
                .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
                .collect(Collector.of(
                        StringBuilder::new,
                        (accumulator, element) -> accumulator
                                .append(element.getKey()).append(";")
                                .append(element.getValue()).append(";"),
                        StringBuilder::append,
                        StringBuilder::toString
                ));

        InputStream publicCertificate = new ByteArrayInputStream(Base64.getDecoder().decode(certificate));
        String signature = callbackParams.get("checksum");

        boolean verified = checkSignature(signedString.getBytes(), signature.getBytes(), publicCertificate);
        System.out.println("signature verification result: " + verified);
    }

    private static boolean checkSignature(byte[] signedString, byte[] signature, InputStream publicCertificate) throws Exception {
        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(publicCertificate);

        Signature signatureAlgorithm = Signature.getInstance("SHA512withRSA");
        signatureAlgorithm.initVerify(x509Cert.getPublicKey());
        signatureAlgorithm.update(signedString);

        return signatureAlgorithm.verify(decodeHex(new String(signature)));
    }

    private static byte[] decodeHex(String hex) {
        int l = hex.length();
        byte[] data = new byte[l / 2];
        for (int i = 0; i < l; i += 2) {
            data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                    + Character.digit(hex.charAt(i + 1), 16));
        }
        return data;
    }
}

Симметричная криптография

PHP
<?php

$data = 'amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;';
$key = 'yourSecretToken';
$hmac = hash_hmac ( 'sha256' , $data , $key);

echo "[$hmac]\n";
?>
  1. Присвойте строковое значение переменной data.
  2. Присвойте значение закрытого ключа переменной key.
  3. Функция hash_hmac ( 'sha256', $data, $key) вычисляет контрольную сумму от переданной строки, с помощью закрытого ключа по алгоритму SHA-256.
  4. Сохраните результат работы функции в переменной hmac.
  5. Выведите результат работы функции командой echo.
  6. Сравните это значение с тем, что передано в уведомлении о состоянии заказа.

Асимметричная криптография

PHP
<?php
// data from response
$data = 'amount;35000099;mdOrder;12b59da8-f68f-7c8d-12b5-9da8000826ea;operation;deposited;status;1;';
$checksum = '9524FD765FB1BABFB1F42E4BC6EF5A4B07BAA3F9C809098ACBB462618A9327539F975FEDB4CF6EC1556FF88BA74774342AF4F5B51BA63903BE9647C670EBD962467282955BD1D57B16935C956864526810870CD32967845EBABE1C6565C03F94FF66907CEDB54669A1C74AC1AD6E39B67FA7EF6D305A007A474F03B80FD6C965656BEAA74E09BB1189F4B32E622C903DC52843C454B7ACF76D6F76324C27767DE2FF6E7217716C19C530CA7551DB58268CC815638C30F3BCA3270E1FD44F63C14974B108E65C20638ECE2F2D752F32742FFC5077415102706FA5235D310D4948A780B08D1B75C8983F22F211DFCBF14435F262ADDA6A97BFEB6D332C3D51010B';

// your public key (e.g. SHA-512 with RSA)
// if you have a CERT, please see openssl_get_publickey()
$publicKey = <<<EOD
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtuGKbQ4WmfdV1gjWWys
5jyHKTWXnxX3zVa5/Cx5aKwJpOsjrXnHh6l8bOPQ6Sgj3iSeKJ9plZ3i7rPjkfmw
qUOJ1eLU5NvGkVjOgyi11aUKgEKwS5Iq5HZvXmPLzu+U22EUCTQwjBqnE/Wf0hnI
wYABDgc0fJeJJAHYHMBcJXTuxF8DmDf4DpbLrQ2bpGaCPKcX+04POS4zVLVCHF6N
6gYtM7U2QXYcTMTGsAvmIqSj1vddGwvNGeeUVoPbo6enMBbvZgjN5p6j3ItTziMb
Vba3m/u7bU1dOG2/79UpGAGR10qEFHiOqS6WpO7CuIR2tL9EznXRc7D9JZKwGfoY
/QIDAQAB
-----END PUBLIC KEY-----
EOD;

$binarySignature = hex2bin(strtolower($checksum));
$isVerify = openssl_verify($data, $binarySignature, $publicKey, OPENSSL_ALGO_SHA512);
if ($isVerify == 1) {
    echo "signature ok\n";
} elseif ($isVerify == 0) {
    echo "bad (there's something wrong)\n";
} else {
    echo "error checking signature\n";
}
?>
Категории:
eCommerceAPI V1
Beta
Категории
Результаты поиска