Перейти к содержанию

СБП


Сценарий использования

1. Создаем СКО (CreateInvoice)

2. Инициализируем оплату СБП (SbpPayment)

3. Получаем QR-код (GetBankCardPaymentState)

Перезапрашиваем пока не получим статус PaymentStep, отличный от Created или InProcess.

JSON
{
  "OperationState": {
    "Code": 0,
    "Desc": "Успешно обработана"
  },
  "EshopId": 459299,
  "Result": {
    "PaymentStep": "SendTo3DS",
    "Form3DS": "{
        "SbpQrCodeUrl": "https://qr.nspk.ru/AD20004F1OJUPGMM8AE8M52AAGC3C6DO?type=02&bank=100000000014&sum=1000&cur=RUB&crc=4FA0",
        "SbpQrCodeImage": "iVBORw0KGgoAAAANtVg..."
        }",
    "State": {
      "Code": 0,
      "Desc": "Успешно обработан"
    }
  }
}
4. Отслеживаем статус платежа (доступны 2 способа)

4.1. Перезапрашиваем GetBankCardPaymentState ожидая получения статуса отличного от: Created, InProcess, SendTo3DS:

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

JSON
{
  "OperationState": {
    "Code": 0,
    "Desc": "Успешно обработана"
  },
  "EshopId": 459299,
  "Result": {
    "PaymentStep": "OK",
    "State": {
      "Code": 0,
      "Desc": "Успешно обработан"
    }
  }
}
JSON
{
 "OperationState": {
   "Code": 0,
   "Desc": "Успешно обработана"
 },
 "EshopId": 459299,
 "Result": {
   "PaymentStep": "Error",
   "State": {
     "Code": 0,
     "Desc": "Успешно обработан"
   }
 }
}

4.2. Ожидаем вебхук на адрес, указанный при создании счёта (CreateInvoice) в параметре ResultUrl или в расширенных настройках магазина на вкладке "Подключение магазина".


Описание

Используется для оплаты СКО через СБП.

POST (Уровень доступа: Базовый)

https://api.intellectmoney.ru/merchant/sbpPayment

Заголовки запроса

Параметр Свойства Описание
Accept STRING OPTIONAL application/json Заголовок, указывающий формат данных, которые клиент хочет получить от сервера.
Content-Type STRING OPTIONAL application/json application/xml Заголовок, указывающий формат данных в теле запроса.
Authorization STRING REQUIRED Bearer {token} Заголовок, используемый для аутентификации клиента с помощью Bearer токена.
Подробнее об использование Bearer токена.
Sign STRING REQUIRED Заголовок с подписью для аутентификации запроса.

Сигнатура подписи:
EshopId::InvoiceId::SuccessUrl::FailUrl::AdditionalParams::IpAddress::SignSecretKey

Тело запроса

Параметр Свойства Описание
EshopId INT REQUIRED max 6 Номер магазина.
Можно найти в личном кабинете, в разделе магазины.
InvoiceId STRING REQUIRED 3xxxxxxxxx Номер СКО.
SuccessUrl STRING REQUIRED max 512 Адрес успешного платежа.
URL адрес, на который происходит перенаправление плательщика с платежной страницы после успешной оплаты.
FailUrl STRING OPTIONAL max 512 Адрес неуспешного платежа.
URL адрес, на который происходит перенаправление плательщика с платежной страницы после неуспешной оплаты.
AdditionalParams STRING OPTIONAL Дополнительные параметры.
Параметр не используется и зарезервирован под изменения.
IpAddress STRING REQUIRED 0.0.0.0/0 IP адрес.
IP адрес сайта, с которого выставляется платеж.
Hash STRING REQUIRED Подпись данных запроса.
Выполняет две ключевые функции:
  1. Целостность данных - защиту от изменений: подпись гарантирует, что информация в запросе не была модифицирована при передаче.
  2. Аутентификацию отправителя - подтверждение, что запрос создан доверенным сервисом (используется секретный ключ магазина, доступный только отправителю).
Подробнее о формирование и проверки подписи.

Сигнатура подписи:
EshopId::InvoiceId::SuccessUrl::FailUrl::AdditionalParams::IpAddress::SecretKey

Тело ответа

Поле Тип Описание
OperationState OperationState Статус выполнения операции.
OperationId GUID Идентификатор операции.
EshopId INT Номер магазина.
Result BankCardData Результат выполнения запроса.
Примеры кода
C#
var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, "https://api.intellectmoney.ru/merchant/sbpPayment");

request.Headers.Add("Accept", "application/json");
request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("Authorization", "Bearer 9d97820c61424eb6ac0db414ccb7ac60");
request.Headers.Add("Sign", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("EshopId", "450000"));
collection.Add(new("InvoiceId", "3000000000"));
collection.Add(new("SuccessUrl", "https://shop.ru"));
collection.Add(new("IpAddress", "127.0.0.1"));
collection.Add(new("Hash", "d41d8cd98f00b204e9800998ecf8427e"));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.intellectmoney.ru/merchant/sbpPayment',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => 'EshopId=450000&InvoiceId=3000000000&SuccessUrl=https://shop.ru&IpAddress=127.0.0.1&Hash=d41d8cd98f00b204e9800998ecf8427e',
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/json',
        'Authorization: Bearer 9d97820c61424eb6ac0db414ccb7ac60',
        'Sign: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Пример ответов
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "EshopId": 459299,
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        }
    }
}
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "Result": {
        "State": {
            "ErrorSourceParam": "successUrl",
            "Code": 166,
            "Desc": "Параметр successUrl передан неверно."
        }
    }
}