API Система Быстрых Платежей
Примеры требуют исправления и проверки. В статье есть ошибки в XML и несогласованность заголовков с форматом тела запроса. До использования в интеграции необходимо исправить примеры и подтвердить поддерживаемую версию протокола и поведение адаптера на целевой установке.
Задача синхронного HTTP-адаптера для Системы Быстрых Платежей заключается в приеме входящих сообщений, обработки по правилам Online Engine и возврата ответа в зависимости от типа запроса.
Взаимодействие шлюза и адаптера осуществляется по протоколу HTTP/HTTPS.
Перечень обрабатываемых запросов
REQC01
Запрос осуществляется перед отправкой в ОПКЦ СБП запроса C01-pacs.008.001.07. В результате система выдает решение о продолжении транзакции.
Пример запроса
<c01AF>
<password>superpassword</password>
<!-- пароль для аутентификации шлюза в антифрод-системе -->
<messageId>20200521100020200000000000000237</messageId>
<!-- Идентификатор сообщения, Уникальный Номер Сообщения от Банка Отправителя, ЭБД
{79}-->
<messageType>C01</messageType>
<!-- Тип Сообщения СБП, ЭБД {98}-->
<operation>C2CPush</operation>
<!-- Тип Операции СБП, ЭБД {48}-->
<timeLabel>2020-05-21T10:52:25.202Z</timeLabel>
<!-- Метка времени Операции СБП, ЭБД {99}-->
<amount>1000000</amount>
<!-- Сумма операции СБП, ЭБД {44}-->
<currency>RUB</currency>
<!-- Валюта операции СБП, ЭБД {9}-->
<payer>
<!-- Плательщик -->
<id>
<!-- Идентификатор плательщика -->
<type>MTEL</type>
<!-- Тип идентификатора Плательщика, ЭБД {46} — MTEL — мобильный телефон -->
<value>0070005210202</value>
<!—Идентификатор Плательщика, ЭБД {21} — значение -->
</id>
<inn/>
<!-- ИНН плательщика, ЭБД {96} -->
<bankBic>043304728</bankBic>
<!-- БИК банка плательщика, ЭБД {94} -->
<accountNumber>40817810800008107721</accountNumber>
<!-- Р/с плательщика, ЭБД {30} -->
<amountCategory>BnkFulAth</amountCategory>
<!—Категория средств счета Плательщика, ЭБД {125} --><Гю>Иванов|Иван|Иванович
</Гю>
<!-- ФИО плательщика, ЭБД {50} -->
<addressParts>
<!-- Адрес плательщика. Разбивается на строки по 70 символов, ЭБД {1} -->
<addressParts>Кировская область Киров г Динамовский проезд д.26 кв.14</addressParts>
</addressParts>
</payer>
<payeeIdentifier>
<!-- Получатель -->
<type>MTEL</type>
<!-- Тип идентификатора Получателя, ЭБД {47} - MTEL - мобильный телефон -->
<value>0070005210202</value>
<!-- Идентификатор Получателя, ЭБД {20} -->
</payeeIdentifier>
<purpose>За обед</purpose>
<!-- Назначение платежа, ЭБД {32} -->
</c01AF>Ответ
<c01AFResponse>
<status>S</status>
<message>FFFFFFFFFFDDDDDD</message>
</c01AFResponse>Сообщение об ошибке
<c01AFResponse>
<status>error</status>
<message>Field type required</message>
</c01AFResponse>REQC04
Запрос осуществляется при получении платежа перед отправкой в ОПКЦ СБП запроса C04-pacs.002.001.09. В результате система принимает решение о продолжении транзакции.
Пример запроса
<c04AF>
<password>superpassword</password>
<!-- пароль для аутентификации шлюза в антифрод-системе -->
<messageType>C04</messageType>
<!-- Тип Сообщения СБП, ЭБД {98}-->
<operation>C2CPush</operation>
<!-- Тип Операции СБП, ЭБД {48}-->
<businessOperationId>A908808150725100F9wfDh4CFADBC375</businessOperationId>
<!—Идентификатор операции ОПКЦ СБП, ЭБД {27}-->
<timeLabel>2020-05-21T10:52:25.202Z</timeLabel>
<!-- Метка времени Операции СБП, ЭБД {99}-->
<amount>1000000</amount>
<!-- Сумма операции СБП, ЭБД {44}-->
<currency>RUB</currency>
<!-- Валюта операции СБП, ЭБД {9}-->
<payer>
<!-- Плательщик -->
<id>
<!-- Идентификатор плательщика -->
<type>MTEL</type>
<!-- Тип идентификатора Плательщика, ЭБД {46} — MTEL — мобильный телефон -->
<value>0070005210202</value>
<!—Идентификатор Плательщика, ЭБД {21} — значение -->
</id>
<inn>00000000000</inn>
<!-- ИНН плательщика, ЭБД {96}. Необязательное. -->
<bankBic>043304728</bankBic>
<!-- БИК банка плательщика, ЭБД {94} -->
<accountNumber>40817810800008107721</accountNumber>
<!-- Р/с плательщика, ЭБД {30} -->
<amountCategory>BnkFulAth</amountCategory>
<!—Категория средств счета Плательщика, ЭБД {125} --><Гю>Иванов|Иван|Иванович
</Гю>
<!-- ФИО плательщика, ЭБД {50} -->
<addressParts>
<!-- Адрес плательщика. Разбивается на строки по 70 символов, ЭБД {1} -->
<addressParts>Кировская область Киров г Динамовский проезд д.26 ^.M^addressPart^
</addressParts>
</payer>
<payee>
<!-- Получатель -->
<id>
<!-- Идентификатор получателя -->
<type>MTEL</type>
<!-- Тип идентификатора Получателя, ЭБД {47} - MTEL - мобильный телефон -->
<value>0070005210202</value>
<!-- Идентификатор Получателя, ЭБД {20} -->
</id>
<inn>00000000000</inn>
<!-- ИНН получателя, ЭБД {97}. Необязательное. -->
<bankBic>043304728</bankBic>
<!-- БИК банка получателя , ЭБД {95} -->
<accountNumber>40817810800008107721</accountNumber>
<!-- Р/с получателя, ЭБД {31} -->
<amountCategory>BnkFulAth</amountCategory>>
<!—Категория средств счета Получателя, ЭБД {126} --><Гю>Иванов|Иван|Иванович
</Гю>
<!-- ФИО получателя, ЭБД {51} -->
<addressParts>
<!-- Адрес получателя. Разбивается на строки по 70 символов, ЭБД {2} -->
<addressParts>Кировская область Киров г Динамовский проезд д.26 ^.M^addressPart^
</addressParts>
</payee>
<purpose>За обед</purpose>
<!-- Назначение платежа, ЭБД {32} -->
<opkcFraudIndicator>8080000000000000</opkcFraudIndicator>
<!-- Индикатор Подозрительной Операции ОПКЦ СБП, ЭБД {109} -->
<fromBankFraudIndicator>0000000000000000</fromBankFraudIndicator>
<!-- Индикатор Подозрительной Операции Банка Отправителя, ЭБД {107} -->
</c04AF>Ответ
<c04AFResponse>
<status></status> <!-- S — подозрение на кражу средств, G — платеж не подозрительный, F-мошеннический платеж -->
<fraudIndicator>FFFFFFFFFFDDDDDD</fraudIndicator>> <!-- вычисленный Индикатор Подозрительной Операции Банка Отправителя, ЭБД {107} -->
</c04AFResponse>Сообщение об ошибке
<c04AFResponse>
<status>error</status>
<message>Field type required</message>
</c04AFResponse>REQC02
Запрос осуществляется перед отправлением в ОПКЦ СБП запроса C04-pacs.002.001.09. В результате система принимает решение о продолжении транзакции.
Пример запроса
<c02AF>
<password>superpassword</password><!-- пароль для аутентификации шлюза в антифрод-системе --> <requestMsgId>20200521100020200000000000000225</requestMsgId><!-- Идентификатор сообщения из первоначального запроса c01AF , ЭБД {79} --> <messageType>C02</messageType><!-- Тип Сообщения СБП, ЭБД {98}-->
<operation>C2CPush</operation><!-- Тип Операции СБП, ЭБД {48}-->
<businessOperationId>A908808150725100F9wfDh4CFADBC375</businessOperationId><!—- Идентификатор операции ОПКЦ СБП, ЭБД {27}--> <timeLabel>2020-05-21T10:52:25.202Z</timeLabel><!-- Метка времени Операции СБП, ЭБД {99} -->
<responseCode>I00000</responseCode><!-- Код ответа, полученного от ОПКЦ, ЭБД {29} --> <responseCodeDescriptio: OPKC_ОК </responseCodeDescription> <!—Текстовое описание кода ответа, полученного от ОПКЦ -->
<amount>1000000</amount><!-- Сумма операции СБП, ЭБД {44}-->
<currency>RUB</currency><!-- Валюта операции СБП, ЭБД {9}-->
<payer><!-- Плательщик -->
<id><!-- Идентификатор плательщика -->
<type>MTEL</type><!-- Тип идентификатора Плательщика, ЭБД {46} — MTEL — мобильный телефон --> <value>0070005210202</value><!—Идентификатор Плательщика, ЭБД {21} — значение -->
</id>
<inn>00000000000</inn><!-- ИНН плательщика, ЭБД {96}. Необязательное. -->
<bankBic>043304728</bankBic><!-- БИК банка плательщика, ЭБД {94} --> <accountNumber>40817810800008107721</accountNumber><!-- Р/с плательщика, ЭБД {30} --> <amountCategory>BnkFulAth</amountCategory><!—Категория средств счета Плательщика, ЭБД {125} --> <Гю>Иванов|Иван|Иванович</Гю><!-- ФИО плательщика, ЭБД {50} -->
<addressParts><!-- Адрес плательщика. Разбивается на строки по 70 символов, ЭБД {1} -->
<addressParts>Кировская область Киров г Динамовский проезд д.26 кв.14</addressParts>
</addressParts>
</payer>
<payee><!-- Получатель -->
<id><!-- Идентификатор получателя -->
<type>MTEL</type><!-- Тип идентификатора Получателя, ЭБД {47} - MTEL - мобильный телефон --> <value>0070005210202</value><!-- Идентификатор Получателя, ЭБД {20} -->
</id>
<inn>00000000000</inn><!-- ИНН получателя, ЭБД {97}. Необязательное. -->
<bankBic>043304728</bankBic><!-- БИК банка получателя , ЭБД {95} --> <accountNumber>40817810800008107721</accountNumber><!-- Р/с получателя, ЭБД {31} --> <amountCategory>BnkFulAth</amountCategory>><!—Категория средств счета Получателя, ЭБД {126} --> <Гю>Иванов|Иван|Иванович</Гю><!-- ФИО получателя, ЭБД {51} -->
<addressParts><!-- Адрес получателя. Разбивается на строки по 70 символов, ЭБД {2} -->
<addressParts>Кировская область Киров г Динамовский проезд д.26 кв.14</addressParts>
</addressParts>
</payee>
<purpose>За обед</purpose><!-- Назначение платежа, ЭБД {32} --> <opkcFraudIndicator>8080000000000000<!-- Индикатор Подозрительной Операции ОПКЦ СБП, ЭБД {109} --></opkcFraudIndicator> <toBankFraudIndicator>0000000000000000<!-- Индикатор Подозрительной Операции Банка Получателя, ЭБД {108} --></toBankFraudIndicator> </c02AF>Ответ
<c02AFResponse>
<status>S</status><!-- S — подозрение на кражу средств, G — платеж не подозрительный, F-мошеннический платеж --> <fraudIndicator>FFFFFFFFFFDDDDDD<!-- вычисленный Индикатор Подозрительной Операции Банка Отправителя, ЭБД {107} -- ></fraudIndicator>
</c02AFResponse>Сообщение об ошибке
<c02AFResponse>
<status>error</status>
<message>Field type required</message>
</c02AFResponse>Возможные значения поля status:
| status | value |
|---|---|
| S | Подозрение на кражу средств |
| G | Платеж не подозрительный |
| F | Мошеннический платеж |
REQFRAUD
Запрос осуществляется после получения от ОПКС СБП сообщения со статусом Reject и кодом ответа I05035. Данное сообщение информационное и требуется только для дальнейшего информирования ФинЦЕРТ.
Пример запроса
Headers:
{
"Authorization": "api_key LLMQ47A4U6430ACT4XOLRKNNUE908LLU",
"Content-Type": "application/json; charset=utf-8"
}
Body:
<spbFraud>
<password>superpassword</password><!-- пароль для аутентификации шлюза в антифрод-системе --> <operation>C2CPush</operation><!-- Тип Операции СБП, ЭБД {48}--> <requestMsgId>20200521100020200000000000000225</requestMsgId><!-- Идентификатор сообщения из первоначального запроса c01AF , ЭБД {79} --> <businessOperationId>A908808150725100F9wfDh4CFADBC375</businessOperationId><!—Идентификатор операции ОПКЦ СБП, ЭБД {27}--> <timeLabel>2020-05-21T10:52:25.202Z</timeLabel>
<responseCode>I05035</responseCode><!-- Код ответа, полученного от ОПКЦ, ЭБД {29} --> <amount>1000000</amount><!-- Сумма операции СБП, ЭБД {44}--> <currency>RUB</currency><!-- Валюта операции СБП, ЭБД {9}--> <payer><!-- Плательщик -->
<type>MTEL</type><!-- Тип идентификатора Получателя, ЭБД {47} - MTEL - мобильный телефон --> <value>0070005210202</value><!-- Идентификатор Получателя, ЭБД {20} -->
</payee> </spbFraud>Ответ
200 OK
REQPOSTCHECK
Запрос предназначен для двух ситуаций:
- Получения подтверждения ранее подозрительной транзакции (статус confirmed).
- Получения информации об успешном завершении транзакции (статус completed)
Пример запроса
Headers:
{
"Authorization": "api_key LLMQ47A4U6430ACT4XOLRKNNUE908LLU",
"Content-Type": "application/json; charset=utf-8"
}
Body:
<postAFCheckMessage>
<password>superpassword</password><!-- пароль для аутентификации шлюза в антифрод-системе --> <messageId>20200521100020200000000000000237</messageId><!-- Идентификатор сообщения, ЭБД {79} --> <operation>C2CPush</operation><!-- Тип Операции СБП, ЭБД {48}--> <businessOperationId>A908808150725100F9wfDh4CFADBC375</businessOperationId><!—Идентификатор операции ОПКЦ СБП, ЭБД {27}--> <fraudProcessStatus>ConfirmReceived</fraudProcessStatus><!-- Состояние антифрод-процесса по операции: ConfirmReceived, TransactComplete, FraudTransact (опционально) -->
</postAFCheckMessage>