NAV Navbar

Введение

Процесс интеграции

Общие требования:

Тестовые параметры:

Тестовая карта

Вы можете проверить сценарий оплаты банковской картой ниже

pan (номер карты) срок CVV ожидаемый результат RC Платёжная система Актуальная
5479 2700 0000 0000 03/22 123 Успех с 3ds 12345678 00 MASTER CARD Да
4111 1111 1111 1111 12/24 123 Успех с 3ds 12345678 00 VISA Да
2201 3820 0000 0013 12/24 123 Успех с 3ds 12345678 00 МИР Да
2201 3820 0000 0062 12/24 123 Успех с 3ds 12345678 00 МИР Да
2201 3820 0000 0039 12/24 123 Успех с 3ds 12345678 00 МИР Да
-Для получения RC=05 необходимо ввести неверный код cvc2.

Боевые параметры

Массив реквизитов

Массив реквизитов передается в параметре properties

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

Параметр Обязательность Описание
AGREEMENT_NUMBER + ЛС абонента
COMPANY_ACCOUNT_NUMBER + Счет зачисления
SERVICES_PAYMENT + Абон.плата
BANK_ACCOUNT_NUMBER + Счет_РСК
CREDIT_AGREEMENT_NUMBER + Номер кредитного договора
LOAN_ID + ИД кредитного договора
ACTUAL_PAYMENT + Оплата рассрочки
SURNAME - Фамилия
FIRSTNAME - Имя
PATRONYMIC - Отчество
TELEPHONE - Телефон

Платеж с 3ds

Некоторые рекуррентные платежи невозможны без данной технологии. При этом будет сгенерировано исключение NeedPass3dsException (смотри код 2365 в разделе Разбор ошибок), которое содержит номер платежа regPayNum и securePageURL (URL - тот, на который необходимо перенаправить пользователя для прохождения 3ds методом GET)

Ислючение может быть получено на этапе создания рекуррента (описан в разделе "создание платежа"), а так же на этапе проверки статуса платежа (описан в разделе "Получение статуса платежа")

Параметр payType

Устанавливает тип оплаты. Возможные значения поля:

Параметр payTypeVisible

payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты.Если параметр не будет передан на платежной форме будут отражены все доступные способы оплаты. Возможные значения :

Параметр clientAuInfo

Пример заполнения параметра clientAuInfo


{
   "ipAddress": "xxx.xxx.xxx.xxx",
    "agentName": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0",
    "authenticationInfo": "e2RldmljZS5icm93c2VyQWNjZXB0SGVhZGVyPXRleHQvaHRtbA0KZGV2aWNlLmJyb3dzZXJJUD05NC4xMzguMTQ5LjM0DQpicm93c2VySmF2YUVuYWJsZWQ6IGZhbHNlDQpicm93c2VyTGFuZ3VhZ2U6ICJydS1SVSINCmJyb3dzZXJDb2xvckRlcHRoOiAyNA0KYnJvd3NlclNjcmVlbkhlaWdodDogMTA4MA0KYnJvd3NlclNjcmVlbldpZHRoOiAxOTIwDQpicm93c2VyVFo6IC0zMDANCmJyb3dzZXJVc2VyQWdlbnQ6ICJNb3ppbGxhLzUuMCAoWDExOyBVYnVudHU7IExpbnV4IHg4Nl82NDsgcnY6ODAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC84MC4wIn0="
}

Скрипт получения данных в браузере клиента


function getFingerprint() {
    return btoa(JSON.stringify({
        browserTZ: new Date().getTimezoneOffset(),
        browserColorDepth: window.screen.colorDepth,
        browserScreenHeight:  window.screen.height,
        browserScreenWidth: window.screen.width,
        browserLanguage: navigator.language,
        browserUserAgent: window.navigator.userAgent,
        browserJavaEnabled: window.navigator.javaEnabled()
    }));
}

В параметре clientAuInfo необходимо передавать данные для корректного прохождения 3ds v2.

Применимо только для методов рекуррентного платежа: Cоздание рекуррентного платежа

Описание данных:

Параметр orderBestBefore

Данным параметром можно передать время истечения жизни заказа (в секундах). Время, до которого нужно оплатить заказ.

Значение параметра - абсолютная дата UTC, в секундах (сформировать абсолютную дату). Например:

По умолчанию срок жизни заказа 72 часа

Создание ссылки на платежную форму

Наше API позволят создать платеж с регистрацией карты пользователя на нашу форму оплаты

Пример запроса платежа с оплатой картой


  curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data
'{
    "serviceCode": "18550-18552-1",
    "amount": "7000",
    "comission": "0",
    "shopLogin":"true",
    "orderBestBefore": "1575362617720",
    "login": "1b172bc5-7474-4cd0-bf0e-9e7ea7ea1c23",
    "pfPayLink": "true",
    "invUnic": "INV_SIMPLE",
    "payTypeVisible":["card"],
    "properties": [
        
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }   
       ]
}'

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


{
    "sign": "D745932BC4D62767AD1FD25743CE561F",
    "userToken": "a49b9722-d734-47d3-a9d0-97203e41e140",
    "shopToken": "82531ba2-6e86-4e57-bbcb-53066f8de29a",
    "payUrl": "https://payframe.bisys.ru/?service=100-12865-1&amount=1000&pf_pm=card&%D0%9D%D0%9E%D0%9C%D0%95%D0%A0_%D0%A1%D0%A7%D0%95%D0%A2%D0%90=12356&amount_read_only=true&properties_read_only=true&start_pay_select=true&inv_sign=82531ba2-6e86-4e57-bbcb-53066f8de29a%7Cb4df0ab17c2801379287fae1f1c78ae7f6dd03e8a09aded27dfd2cd9602e8c20%7Cv5%7Cinv%3A63dbc530-ad6b-4e7a-970a-a7ae67f2d199%7Cinv_simple",
    "methodType": "GET",
    "invToken": "63dbc530-ad6b-4e7a-970a-a7ae67f2d199"
}

Пример запроса платежа с оплатой МирPay


curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data 
'{
    "serviceCode": "100-12865-1",
    "amount": "1000",
    "comission": "0",
    "shopLogin":"true",
    "login": "1b172bc5-7474-4cd0-bf0e-9e7ea7ea1c23",
    "orderBestBefore": "1575362617720",
    "pfPayLink": "true",
    "invUnic": "INV_SIMPLE",
    "payTypeVisible":["mirpay"],
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}'

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


{
    "sign": "6ECB956F8F2ED0CD7E6AC59DC1864CAC",
    "userToken": "b32a1945-503c-4e94-abab-87461a3dbea9",
    "shopToken": "5f82c1ad-e545-45c4-b2bc-1cd849e32935",
    "regPayNum": null,
    "payUrl": "https://demo-payframe.bisys.ru/?service=18550-18552-1&amount=8000&pf_pm=mirpay&%D0%94%D0%9E%D0%93_%D0%A0%D0%90%D0%A1%D0%A1%D0%A0%D0%9E%D0%A7%D0%9A%D0%98=%E2%84%963412354-%D0%B0%D0%B1%D0%B2&%D0%9E%D0%A2%D0%A7%D0%95%D0%A1%D0%A2%D0%92%D0%9E=%D0%9C%D0%B8%D1%85%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B8%D1%87&%D0%98%D0%9C%D0%AF=%D0%98%D0%B2%D0%B0%D0%BD&%D0%A1%D0%A3%D0%9C%D0%9C%D0%90_%D0%9A_%D0%9E%D0%9F%D0%9B%D0%90%D0%A2%D0%95=80&%D0%9B_%D0%A1%D0%A7%D0%95%D0%A2=123456789&%D0%A1%D0%A7%D0%95%D0%A2_%D0%A0%D0%A1%D0%9A=12345678901234567890&%D0%A4%D0%90%D0%9C%D0%98%D0%9B%D0%98%D0%AF=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&%D0%A2%D0%95%D0%9B%D0%95%D0%A4%D0%9E%D0%9D=9009998899&%D0%A1%D0%A3%D0%9C%D0%9C%D0%90_%D0%90%D0%91%D0%9E%D0%9D_%D0%9F%D0%9B%D0%90%D0%A2%D0%90=500&amount_read_only=true&properties_read_only=true&start_pay_select=true&inv_sign=5f82c1ad-e545-45c4-b2bc-1cd849e32935%7C9214f5dbada118e7148a00656f00c77ac3223264edf1fd615250d848dcc7df36%7Cv5%7Cinv%3A99728952-1ceb-48d5-b6a7-1560e8e22d96",
    "methodType": "GET",
    "payUrlImg": null
}

Алгоритм создания и оплаты:

  1. Создать платеж с параметрами login, shopLogin: true и pfPayLink: true

  2. Перевести Клиента по ссылке на платежную форму методом GET, полученной в ответе на запрос создания платежа

  3. Перейдя по сслыке клиент перейдет на форму оплаты там ему необходимо выбрать удобный способ оплаты

  4. Оплата платежа одним из доступных методов

  5. Если при оплате необходима регистрация карты, в методе необходимо передать параметр needRegCard: true

Запрос - POST

Метод - /do/payment

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

Параметр Обязательность Описание
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
shopLogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE)
serviceCode + уникальный код услуги
amount + сумма платежа (указывается в копейках)
comission + комиссия платежа (указывается в копейках), если комиссия не задана услугой - передается 0
pfPayLink - Используется для создания ссылки на платежную форму, принимает значение true в ответе получаем ссылку на платежную форму, заместо формы ввода данных карты, по умолчанию false
needRegCard - используется если необходима регистрация карты
payTypeVisible - используется если необходимо скрыть или скорректировать очередность способов оплаты, если не передавать параметр на плетжной форме отображены все доступные способы оплаты
InvUnic* - Следит за уникальностью лицевого счета
properties + массив реквизитов
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее

Параметры ответа (все параметры обязательные):

Получение статуса счета

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


  curl --location 'https://demo-api2.bisys.ru/api-shop/shop/ver3/check/invoice/state' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data {
  invToken: 63dbc530-ad6b-4e7a-970a-a7ae67f2d199
}

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


 {
    "invState": "PAYED",
    "regPayNum": "10009351",
    "payInfo": {
        "sign": null,
        "state": "holded",
        "totalAmount": 1000,
        "createdDate": "2024-04-02 16:47:21",
        "providerServCode": "100-12865-1",
        "providerName": "test",
        "errorCode": null,
        "error": null,
        "message": null,
        "provisionServices": false,
        "procDate": null
    }
}

Для получения статуса счета, вам необходимо отправить запрос с параметром invToken который вы получите в ответе на создание счета.В ответе вам придет номер платежа и его данные. С помощью этого параметра вы сможете сделать возврат платежа

Метод запроса - POST

URL - shop/ver3/check/invoice/state

Параметры запроса (все параметры обязательные):

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

Обязательные Параметры ответа:

Необязательные параметры ответа:

Sber Pay

Пример запроса платежа


curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data 
'{
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "comission": "0",
    "payType": "sberPay",
    "orderBestBefore": "1575362617720",
    "userPhone":"79991234456",
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}'

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


{
    "sign": "383A1ED535B7EA15A6A6B1707D6E1FAA",
    "shopToken": "5f82c1ad-e545-45c4-b2bc-1cd849e32935",
    "regPayNum": "169251641",
    "payUrl": null,
    "methodType": "NONE",
    "payUrlImg": null
}

Пример запроса платежа с параметром "sberPayType": "back2app"


curl --location 'https://api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic' \
--data 
'{
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "comission": "0",
   "payType": "sberPay",
    "userPhone": "79999999999",
    "sberPayInfo": {
        "sberPayType": "back2app"
    },
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}'

Пример запроса платежа с параметром "sberPayType": "app2app"


curl --location 'https://api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic' \
--data 
'{
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "comission": "0",
   "payType": "sberPay",
    "userPhone": "79999999999",
    "sberPayInfo": {
        "sberPayType": "app2app",
        "deepLink": "android-app://ru.testbankmobile/main",
        "sberPayOsType": "android"
    },
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}'

Алгоритм для Магазин.

1. Создаем платеж с параметром payType и типом оплаты SberPay

2. C помощью параметра sberPayInfo выбираем тип оплаты по sberPay

3. В ответ вы получите regpaynum c помощью которого вы сможете посмотреть статус платежа(см. подробнее Получение статуса платежа)

Описание значений для параметра sberPayInfo .

back2app-Ссылка на оплату,придет пуш или sms уведомлении на указанный в запросе номер телефона

app2app-Вызывается в приложение клиента, далее клиент перенаправляемся в мобильное приложение "Сбербанк-Онлайн"

web2app-Вызывается в браузере клиента, далее клиент перенаправляемся в мобильное приложение "Сбербанк-Онлайн"(Пока не поддерживается)

Запрос - POST

Метод запроса - /do/payment

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

Параметр Обязательный Описание
serviceCode + код провайдера
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
shopLogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE)
amount + сумма платежа в копейках
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
payType + способ оплаты подробнее в п. Параметр payType
userPhone - Телефон клиента(обязателен только для back2App)
properties + массив реквизитов.
sberPayInfo - Дополнительная информация.По умолчанию используется sberPayInfo со значением back2app.
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее

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

Параметры ответа (все параметры обязательные):

СБП

Пример запроса платежа


curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data 
{
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "orderBestBefore": "1575362617720",
    "comission": "0",
    "payType": "sbp",
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}

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


{
    "sign": "3AC08C44A6FD2BDAB0867CF98B0F66A3",
    "userToken": "b32a1945-503c-4e94-abab-87461a3dbea9",
    "shopToken": "5f82c1ad-e545-45c4-b2bc-1cd849e32935",
    "regPayNum": "519796",
    "payUrl": "https://qr.nspk.ru/AD10002IFESR6KOL88IPDACFE9BU0LTG",
    "methodType": "QR",
    "payUrlImg": "iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoAQAAAABl2OlJAAADxElEQVR42u3dTW4iMRAGUKNZsOQIHIWj0UfjKBwhSxYonigg3P5rkZloJm1ebVi426+3pbI/QvyfFeh0Op1Op9PpdDqdTqfT6XQ6nU6n0+l0Op1Op9PpdDqdTqfT6XQ6nU6n0+l0Ov2b9bfQrmO51HrrcN8xhH2M185OezqdTqfT6XQ6nU4fT9+Uvdb1pn/U+22D7Y1IH3av0/zDrtlSnH8YnU6n0+l0Op1Op4+on+ZtV64fHs+eQ/j18TN9Prfp6Kn729LpdDqdTqfT6XT6K+r3Zm2bvfKh77IWj06n0+l0Op1Op9Pp1WzrcmvWzvOJ2L3Fu5Rv0el0Op1Op9PpdPqr6AtnCzMivRU6fdw3n2yk0+l0Op1Op9Pp9B+pL+RdbNJErGzWmkvfm7ZBp9PpdDqdTqfT6T9TX6g8HjA+bmlVc7T4haLT6XQ6nU6n0+n09euJuPTzLi6NFm9Wfz0Ro9PpdDqdTqfT6fRV6fdKoRbnRzzgrlxaqPNiqCCdTqfT6XQ6nU6nD6y3mrWqxcvqq99Mp9PpdDqdTqfT6evXW/etYtaRxTLvYmpksKdjhzH7D6zwbG4hnU6n0+l0Op1Op69KD9nDvYr9W1pZi7fLMTqdTqfT6XQ6nU4fT08TsVR5R1bVcZ7cnv/RVavodDqdTqfT6XQ6fVA97RPLoPVUidj1P6w6rEin0+l0Op1Op9Ppo+nVVawwT67Ir2LF+S2tKtQin4jR6XQ6nU6n0+l0+tD67JZW2azF2M0AzOPZ78T0aPEOnW6RTqfT6XQ6nU6n00fSQ2OfaliWV/VhU7vFo9PpdDqdTqfT6fTR9FC2XXnQ+qH8X+CqYpHB/qfJgXQ6nU6n0+l0Op2+Kj000tSXjx028y6OjQ0jnU6n0+l0Op1Opw+thyJN/T1bCuWxw/hMi0en0+l0Op1Op9Ppo+kLVV3gip28i2zs1Rqx0el0Op1Op9PpdPpQ+lunATt+rr6XBwh7fdx+ntxOp9PpdDqdTqfT6cPrm/KJa0vPhmVV7RsbXsKzaRt0Op1Op9PpdDqdvkb9VBLH/gWuaR5q0TtbeCjj2el0Op1Op9PpdDr9tfRqWPbWCVqf2sMyOp1Op9PpdDqdTn8VPTb+4ffaOluYtXihf4GLTqfT6XQ6nU6n04fSW2cLe0vhQXT02RyNTqfT6XQ6nU6n08fUnxt7pX2mxgHC1tnCZtHpdDqdTqfT6XT6+vV/XXQ6nU6n0+l0Op1Op9PpdDqdTqfT6XQ6nU6n0+l0Op1Op9PpdDqdTqfT6XQ6nb52/Tfgrydky7vxVAAAAABJRU5ErkJg"
  }

Алгоритм для Магазин:

1. Создаем платеж с параметром payType и типом оплаты sbp

2. В ответе придут параметры payUrlImg QR код на оплату в Base64 и payurl где будет ссылка на оплату, для оплаты клиента можно перенаправить на ссылку пришедшей в параметре payurl либо показать qr-код пришедший в параметре payUrlImg

3. В ответ вы получите regpaynum c помощью которого вы сможете посмотреть статус платежа(см. подробнее Получение статуса платежа)

Запрос - POST

Метод запроса - /do/payment

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

Параметр Обязательный Описание
serviceCode + код провайдера
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
shopLogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE)
amount + сумма платежа в копейках
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
payType + способ оплаты подробнее в п. Параметр payType
properties + массив реквизитов.
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее

Параметры ответа (все параметры обязательные):

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

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

Алгоритм работы

img_rek

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

Пример запроса на регистрацию карты


  curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data {
    "serviceCode": "100-7462-1",
    "amount": "100",
    "comission": "0",
    "shopLogin":"true",
    "login": "1b172bc5-7474-4cd0-bf0e-9e7ea7ea1c23",
    "pfPayLink": "true",
    needRegCard" : "true",
    "payTypeVisible":["card"],
    "properties": [
        {
            "name": "N_ТЕЛЕФОНА",
            "value": "9992233322"
        }
    ]
}

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

{
    "sign": "DE71B534B913D0555E4AF4C3A2D5568B",
    "userToken": "6b9de487-b04d-4383-92ee-73d18768dd5f",
    "shopToken": "4eb6d7a4-8e41-4e33-8f37-8f84cbd8982b",
    "regPayNum": null,
    "payUrl": "https://demo-payframe.bisys.ru/?service=100-7462-1&amount=100&pf_pm=card&N_%D0%A2%D0%95%D0%9B%D0%95%D0%A4%D0%9E%D0%9D%D0%90=9992233322&amount_read_only=true&properties_read_only=true&start_pay_select=true&inv_sign=4eb6d7a4-8e41-4e33-8f37-8f84cbd8982b%7Cf44ecac83faf192c9945e4ea8a736c281ec1b8f62351a4a484b6ae7da1c80fbb%7Cv5%7Cinv%3A16123adf-8f83-419d-abe6-11cf98109848",
    "methodType": "GET",
    "payUrlImg": null
}

Метод регистрации карты не отличается от метода создания счета, в параметр servicecode cледует передать номер услуги 100-12865-1, сумму для холдирования можете передавать любую.Для регистрации карты необходимо передавать значение paytypevisible:["card"]

После подтверждения оплаты карта появится в списке и станет доступной для создания рекуррентных платежей, см. пункт Получение списка карт.

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

В ответ на запрос приходит номер платежа, url регистрации и способ перехода.

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

Параметр Обязательный Описание
serviceCode + уникальный код услуги
amount + сумма платежа (указывается в копейках)
comission + комиссия платежа (указывается в копейках), если комиссия не задана услугой - передается 0
shopLogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE)
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
payType - способ оплаты
needRegCard + необходим для привязки карты к пользователю после успешной оплаты
paytypevisible + используется если необходимо скрыть или скорректировать очередность способов оплаты
properties + массив реквизитов
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее

Параметры ответа (все параметры обязательные):

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

Пример запроса списка привязанных банковских карт

curl --location 'https://demo-api2.bisys.ru/api-shop/ver3/get/cards' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data {
    "shopLogin":"true",
    "login": "1b172bc5-7474-4cd0-bf0e-9e7ea7ea1c23"
}

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

{
"userToken":"USER_TOKEN",
"cards":[{"cardMask":"123456******1234","cardToken":"CARD_TOKEN","cardType":"master_card","state":"active"}]
}

Запрос - POST

Метод - ver3/get/cards

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

Параметр Обязательность Описание
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50})
shoplogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE))

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

Параметр Обязательность Описание
sign + подпись
userToken + уникальный идентификатор пользователя
shopToken + токен Вашего магазина
cards + список привязанных банковских карт
Параметр Обязательность Описание
cardMask + номер банковских карты в маскированом виде
exp + срок действия карты mmyyyy
cardToken + токен привязанной банковской карты (используется для создания платежа с холдированием или резервированием)
cardType + платежная система, которой принадлежит банковская карта*
rectype + тип привязки

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

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


  curl --location 'https://demo-api2.bisys.ru/api-shop/ver2/create/refund/ask' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data{
    "shopLogin":"true",
    "cardToken": "718d33b0-92f2-4f94-89b8-b9e9d7c7962e",
    "login": "1b172bc5-7474-4cd0-bf0e-9e7ea7ea1c23"
}

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

{
"resultState":"success",
"desc":"Success deactivate card with token(cardToken)",
"userToken":"USER_TOKEN"
"shopToken":"SHOP_TOKEN"
}

После получения success на удаление карты, карта больше не будет активна на пользователе. Чтобы вновь начать использовать эту же карту - необходимо повторно ее привязать, токен при этом изменится

Запрос - POST

Метод - /card/deactivation/

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

Параметр Обязательность Описание
cardToken + идентификатор карты
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
shopLogin + используется если Вы хотите использовать свой абстрактный логин Клиента, а не номер телефона, передать TRUE (по умолчанию FALSE)

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

Параметр Обязательность Описание
resultState + результат операции
desс + описания результата операции
userToken + уникальный идентификатор пользователя
shopToken + токен Вашего магазина

Создание рекуррентного платежа

Пример запроса создания рекуррентного платежа без 3ds

curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data {
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "orderBestBefore": "1575362617720",
    "cardToken": "48a8f636-58db-4ef6-a66e-e51cd390408e",
    "comission": "0",
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}

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

{
    "sign": "736856F096B0D8E7C3383C7473E0942D",
    "userToken": "b32a1945-503c-4e94-abab-87461a3dbea9",
    "shopToken": "5f82c1ad-e545-45c4-b2bc-1cd849e32935",
    "regPayNum": "13308162",
    "payUrl": "https://demo.bisys.ru/ticket/TzctVrmb-ZXOFVe4nweN1YaIkikRkvZeLyI1zgT_jYVJWIedkiSLYdndVEVqs3wJ?shop_token=5f82c1ad-e545-45c4-b2bc-1cd849e32935",
    "methodType": "GET",
    "payUrlImg": null
}

Пример запроса создания рекуррентного платежа c 3ds

curl --location 'https://demo-api2.bisys.ru/api-shop/do/payment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic NWY4MmMxYWQtZTU0NS00NWM0LWIyYmMtMWNkODQ5ZTMyOTM1OjFlYjMwNTE1LTQ2ZWItNGQ0OS1hNWVjLTZjZWMwN2IwNWQyMA==' \
--data{
    "serviceCode": "18550-18552-1",
    "amount": "8000",
    "shopLogin": "true",
    "login": "123456789",
    "orderBestBefore": "1575362617720",
    "cardToken": "48a8f636-58db-4ef6-a66e-e51cd390408e",
    "comission": "0",
    "enableSMSConfirm": "true",
    "properties": [
        {
            "name": "AGREEMENT_NUMBER",
            "value": "1234444422"
        },
        {
            "name": "COMPANY_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "SERICES_PAYMENT",
            "value": "200"
        },
        {
            "name": "CREDIT_AGREEMENT_NUMBER",
            "value": "12345"
        },
        {
            "name": "BANK_ACCOUNT_NUMBER",
            "value": "12345678901234567891"
        },
        {
            "name": "LOAN_ID",
            "value": "1234567"
        },
        {
            "name": "ACTUAL_PAYMENT",
            "value": "100"
        },
        {
            "name": "SURNAME",
            "value": "Иванов"
        },
        {
            "name": "FIRSTNAME",
            "value": "Сергей"
        },
        {
            "name": "PATRONYMIC",
            "value": "Степанович"
        },
        {
            "name": "TELEPHONE",
            "value": "9504442314"
        }
    ]
}'

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

{
    "sign": "5F91002BFE4E8E5EA7203BCDEA3C146B",
    "message": "For recurrent need pass 3ds",
    "userMessage": "Необходимо ввести 3ds код",
    "code": 2365,
    "regPayNum": "13308194",
    "securePageURL": "https://acq-demo.bisys.ru/secure/redirect/e0f77fc7-9260-42a1-9f13-cbb544c5555c"
}

В ответе на запрос рекуррентного платежа Вы получите ссылку на чек

Запрос - POST

Метод запроса - /do/payment

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

Параметр Обязательный Описание
serviceCode + код провайдера
login + логин плательщика, по умолчанию - номер телефона 79XXXXXXXXX, с параметром shopLogin может принимать любые значения, входящие в regex: [0-9a-zA-z]{3,50}
shoplogin + идентификатор пользователя
amount + сумма платежа в копейках
comission + комиссия платежа в копейках (при отсутствии комиссии передается 0)
cardToken - идентификатор карты (для рекуррентного платежа)
clientAuInfo + Параметры браузера для прохождения 3ds v2. Подробнее
properties + массив реквизитов.
orderBestBefore - Время истечения срока жизни заказа в секундах. Подробнее

Параметры ответа (все параметры обязательные):

Возврат платежа

Пример запроса возврата платежа

curl --location 'https://tst2.autopays.ru/api-shop/ver2/create/refund/ask' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic MWRkYzM5YzgtN2NmOC00NzgyLWJmM2UtZTdkOWU4OGI0NjE0OmE4MjRjMGRhLTA2NzAtNGM5ZC1iZGI1LTU0ZmUyODAzNmU0ZQ==' \
--data ''{
    "regPayNum": "131009063835",
    "note": "ref test",
    "refundAmount": "8000",
    "remainingAmount": "0"
}''

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


{
    "sign": "408CCF81277FFB470EFC0CEF4416459F",
    "resultState": "success",
    "desc": "Success created refund ask, please wait execution",
    "shopToken": "a4725b61-94b2-47a6-a8ed-281187ae5c8c"
}

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

Запрос - POST

Метод - ver2/create/refund/ask

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

Параметр Обязательность Описание
regPayNum + Номер платежа
note + Причина возврата
refundAmount + Возвращаемая сумма
refundAmount + Сумма остатка

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

Параметр Обязательность Описание
resultState + Результат
desc + Описание ответа
shopToken + Токен Вашего магазина

Получение статуса платежа для рекуррентного платежа, СБП , сберпей

Пример запроса статуса платежа

curl --location 'https://tst2.autopays.ru/api-shop/rs/shop/check/payment/state' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic MWRkYzM5YzgtN2NmOC00NzgyLWJmM2UtZTdkOWU4OGI0NjE0OmE4MjRjMGRhLTA2NzAtNGM5ZC1iZGI1LTU0ZmUyODAzNmU0ZQ==' \
--data '{
    "regPayNum": "10009438"
}'

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

{
    "sign": "977341472EE62E6328D865D4C085E21C",
    "state": "processed",
    "totalAmount": 2000,
    "createdDate": "2024-04-03 16:49:06",
    "providerServCode": "100-12865-1",
    "providerName": "test",
    "errorCode": null,
    "error": null,
    "message": null,
    "provisionServices": false,
    "procDate": null
}
}

При оплате рекуррентом с обязательным вводом 3ds в ответе будет получено исключение:NeedPass3dsException

Для прохождения 3ds проверки необходимо перенаправить пользователя по ссылке в параметре securePageURL методом GET

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

Обязательные Параметры ответа:

Необязательные параметры ответа:

Разбор ошибок

Ошибки, сигнализирующие о том, что необходимо заново регистрировать карту:

Ошибки, связанные со сложностями в авторизации:

Не удалось получить список услуг:

Сложности с регистрацией:

Сложности с активацией:

Проблемы со статусом платежа:

Трудности в создании платежа:

Общее:

Коды ошибок проводки платежа

Общие ошибки: