Управление денежными средствами на расчетных счетах клиентов
Перевод денежных средств клиентов в Федеральное Казначейство

Протокол C2B. Оплата товаров и услуг по QR

Оплата по QR — это оплата от физического лица в пользу ЮЛ/ИП путем считывания QR-кода мобильным приложением банка.

Список банков-участников СБП с поддержкой оплаты по QR: https://sbp.nspk.ru/participants/

Типы QR:

1. Динамический или QR на кассе: QR-код с обязательным указанием суммы платежа. 2. Статический или QR-наклейка, может быть с суммой или без. Если сумма не прописана, то плательщик должен указать её после договорённости с продавцом.

Выставление счета (InvoiceRequest) для оплаты по динамическому QR.

Для выставления счёта на оплату используется метод InvoiceRequest. Счет (Invoice) выставляется Получателем (ЮЛ/ИП) для оплаты за товары или услуги.

Чтобы сформировать invoice для оплаты по QR, счёт получателя обязательно должен быть настроен для работы с СБП: этот способ должен быть активен для счёта в личном кабинете moneta.ru или payanyway.ru. Проверить это можно в личном кабинете moneta.ru: «Рабочий кабинет» → «Способы оплаты»; или в личном кабинете payanyway.ru: «Способы оплаты».

В поле CUSTOMFIELD:QRTTL можно передать период в минутах, в течение которого будет возможна оплата по платёжной ссылке (QR-коду). Минимальное значение — одна минута, максимальное значение – 129600 (90 дней в минутах). Если поле CUSTOMFIELD:QRTTL не передано, за период использования динамической платёжной ссылки берётся значение 4320 минут (три дня).

Ответом на InvoiceRequest будет InvoiceResponse, в котором содержится:

  • transactionId – номер операции;

  • qrlink — ссылка на графическое отображение QR;

  • qrpayload — платёжная ссылка СБП, закодированная в QR. Если разместить её в мобильном приложении или мобильной версии сайта, то при нажатии откроется установленное на телефоне приложение банка-участника СБП C2B с возможностью оплатить по данному коду.

  • externaltransaction — идентификатор динамического QR-кода.

SOAP запрос:

<SOAP-ENV:Envelope xmlns:SOAP-ENV ="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:InvoiceRequest xmlns:ns2="http://www.moneta.ru/schemas/messages.xsd" ns2:version="VERSION_2">
<ns2:payer>364</ns2:payer>
<ns2:payee>10481430</ns2:payee>
<ns2:amount>100</ns2:amount>
<ns2:clientTransaction>12229</ns2:clientTransaction>
<ns2:description>Test</ns2:description>
<ns2:operationInfo>
<ns2:attribute>
<ns2:key>CUSTOMFIELD:QRTTL</ns2:key>
<ns2:value>11</ns2:value>
</ns2:attribute>
</ns2:operationInfo>
</ns2:InvoiceRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP ответ:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:InvoiceResponse xmlns:ns2="http://www.moneta.ru/schemas/messages.xsd">
<ns2:status>CREATED</ns2:status>
<ns2:dateTime>2021-03-30T11:38:45.000+03:00</ns2:dateTime>
<ns2:transaction>1001657743</ns2:transaction>
<ns2:clientTransaction>12229</ns2:clientTransaction>
<ns2:operationInfo>
<ns2:id>1001657743</ns2:id>
<ns2:attribute>
<ns2:key>targetcurrencycode</ns2:key>
<ns2:value>RUB</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>description</ns2:key>
<ns2:value>Test</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>typeid</ns2:key>
<ns2:value>3</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>sourceamount</ns2:key>
<ns2:value>100</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>targetalias</ns2:key>
<ns2:value>Система Быстрых Платежей C2B (СБП)</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>clienttransaction</ns2:key>
<ns2:value>12229</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>customfield:qrttl</ns2:key>
<ns2:value>11</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>qrpayload</ns2:key>
<ns2:value>https://qr.nspk.ru/AD100023V96ORJUR98CRVT2RR91R3UNA?type=02&amp;bank=100000000061&amp;sum=10000&amp;cur=RUB&amp;crc=D2E1</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>statusid</ns2:key>
<ns2:value>CREATED</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>qrlink</ns2:key>
<ns2:value>https://payanyway.ru/qrcode.htm?value=https%3A%2F%2Fqr.nspk.ru%2FAD100023V96ORJUR98CRVT2RR91R3UNA%3Ftype%3D02%26bank%3D100000000061%26sum%3D10000%26cur%3DRUB%26crc%3DD2E1&amp;w=256&amp;h=256</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>haschildren</ns2:key>
<ns2:value>0</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>modified</ns2:key>
<ns2:value>2021-03-30T11:38:45.000+03:00</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>targetaccountid</ns2:key>
<ns2:value>364</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>category</ns2:key>
<ns2:value>BUSINESS</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>externaltransaction</ns2:key>
<ns2:value>AD100023V96ORJUR98CRVT2RR91R3UNA</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>sourceamounttotal</ns2:key>
<ns2:value>100</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>sourcecurrencycode</ns2:key>
<ns2:value>RUB</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>isinvoice</ns2:key>
<ns2:value>1</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>sourceaccounttotal</ns2:key>
<ns2:value>100</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>sourceaccountid</ns2:key>
<ns2:value>10481430</ns2:value>
</ns2:attribute>
<ns2:attribute>
<ns2:key>isreversed</ns2:key>
<ns2:value>true</ns2:value>
</ns2:attribute>
</ns2:operationInfo>
</ns2:InvoiceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

JSON запрос:

{
"Envelope": {
"Header": {
"Security": {
"UsernameToken": {
"Username": "username",
"Password": "password"
}
}
},
"Body": {
"InvoiceRequest": {
"version": "VERSION_2",
"payer": "364",
"payee": "10481430",
"amount": "100",
"clientTransaction": "12229",
"description": "Test",
"operationInfo": {
"attribute": [
{
"key": "CUSTOMFIELD:QRTTL",
"value": "11"
}
]
}
}
}
}
}

JSON ответ:

{
"Envelope":{
"Body":{
"InvoiceResponse":{
"dateTime":"2021-03-30T11:38:45.000+03:00",
"operationInfo":{
"id":1001657743,
"attribute":[
{
"value":"RUB",
"key":"targetcurrencycode"
},
{
"value":"Test",
"key":"description"
},
{
"value":"3",
"key":"typeid"
},
{
"value":"100",
"key":"sourceamount"
},
{
"value":"Система Быстрых Платежей C2B (СБП)",
"key":"targetalias"
},
{
"value":"12229",
"key":"clienttransaction"
},
{
"value": "11",
"key": "customfield:qrttl"
},
{
"value":"https:\/\/qr.nspk.ru\/AD100023V96ORJUR98CRVT2RR91R3UNA?type=02&bank=100000000061&sum=10000&acur=RUB&crc=D2E1",
"key":"qrpayload"
},
{
"value":"CREATED",
"key":"statusid"
},
{
"value":"https:\/\/payanyway.ru\/qrcode.htm?value=https%3A%2F%2Fqr.nspk.ru%2FAD100023V96ORJUR98CRVT2RR91R3UNA%3Ftype%3D02%26bank%3D100000000061%26sum%3D10000%26cur%3DRUB%26crc%3DD2E1&w=256&h=256",
"key":"qrlink"
},
{
"value":"0",
"key":"haschildren"
},
{
"value":"2021-03-30T11:38:45.000+03:00",
"key":"modified"
},
{
"value":"364",
"key":"targetaccountid"
},
{
"value":"BUSINESS",
"key":"category"
},
{
"value":"AD100023V96ORJUR98CRVT2RR91R3UNA",
"key":"externaltransaction"
},
{
"value":"100",
"key":"sourceamounttotal"
},
{
"value":"RUB",
"key":"sourcecurrencycode"
},
{
"value":"1",
"key":"isinvoice"
},
{
"value":"100",
"key":"sourceaccounttotal"
},
{
"value":"10481430",
"key":"sourceaccountid"
},
{
"value":"true",
"key":"isreversed"
}
]
},
"clientTransaction":"12229",
"transaction":1001657743,
"status":"CREATED"
}
}
}
}

Для оплаты Invoice можно:

  1. Использовать qrlink для графического отображения QR — кода плательщику, например, на сайте получателя, и последующего сканирования устройством плательщика;

  2. Использовать qrpayload, например, в мобильной версии сайта или мобильном приложении получателя, чтобы плательщик мог проводить оплату с одного устройства (смартфона)