Через СБП по номеру телефона · Documentation

Начало работы

Чтобы начать работу с Протоколом, выполните следующие шаги.

Get →

Выставление счета с передачей суммы платежа

Yandex pay

Оплата покупок с Yandex Pay происходит без ввода данных карты.

Для включения способа оплаты Yandex Pay обратитесь к вашему сопровождающему менеджеру.

Авторизация

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

Авторизация уведомлений

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

Банковская карта

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

Возвраты и отмены

Операции возврата и отмены доступны не для всех способов платежей:

При возврате платежа комиссия QIWI за проведение платежа не возвращается. Исключение — если при возврате платежа выполнена операция отмены. В этом случае финансовой операции (списания средств со счета покупателя) не происходит и комиссия не взимается.

Возвраты по проведенным платежам

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

Чтобы выполнить возврат по платежу, используйте метод API Операция возврата.

Чтобы выполнить возврат по платежу через СБП, используйте метод API Операция возврата по платежу СБП.

Возвраты по сплитованным платежам

После успешной авторизации списания денежных средств доступен возврат средств по операции сплитованного платежа.

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

Возвращает

В случае успеха возвращает JSON-документ со следующим содержимым:

Возмещение

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

КИВИ взимает комиссию за каждую подтвержденную операцию. Если отмена операции была произведена до подтверждения, комиссия не взимается. Если была произведена частичная отмена до подтверждения операции, комиссия будет пересчитана.

Выпуск платежного токена qiwi кошелька

Пример запроса с инициацией выпуска платежного токена QIWI Кошелька

Выпуск платежного токена карты

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

Выпуск токена для оплаты через сбп

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

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

Пример выставления счета с оплатой через холдирование (двухшаговый платеж)

Доступные методы оплаты

МетодПлатежная форма QIWIПлатежная форма мерчанта
Банковская карта*
Оплата платежным токеном
Yandex Pay×
Оплата через СБП
Оплата с баланса КИВИ Кошелька✓**
Оплата с баланса мобильного телефона×

* — метод оплаты доступен по умолчанию, другие методы оплаты подключаются по запросу.

** — посредством выпуска платежного токена для КИВИ кошелька.

Интеграция c платежной формой qiwi без использования api

Это простой способ интеграции с Платежной формой QIWI. При открытии формы покупателю автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке на форму. Покупателю отображается платежная форма с выбором способов оплаты.

Для вызова формы в ссылке необходимо указывать ключ PUBLIC_KEY. Для каждого siteId выпускается уникальный ключ. Ключ можно посмотреть в Личном кабинете в разделе Настройки.

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

По умолчанию сервис QIWI ожидает подтверждения платежа в течение 72 часов. По истечении срока выполняется автоматическое подтверждение платежа.

Интеграция с платежной формой qiwi

Чтобы отправить платеж со сплитованием, передайте в запросе API Создание счета массивsplits c данными поставщиков.

Интеграция с платежной формой мерчанта

Чтобы отправить платеж со сплитованием, передайте в запросе API Платеж JSON-массив paymentSplits с данными поставщиков.

Использование

Для использования SDK необходимо создать объект класса SbpClient, указав в конструкторе URL, на который будут отправляться запросы (SbpClient.PRODUCTION_URL или SbpClient.TEST_URL), id мерчанта в системе СБП и секретный ключ для авторизации.
Этот клиент используется для всех взаимодействий с API.

Все запросы осуществляются классом SbpClient. Посмотреть возвращаемые значения можно по ссылке.

Клиент может вернуть следующие типы исключений:

  • IOException – ошибка сетевого взаимодействия
  • SbpException – логическая ошибка при попытке обработать запрос
  • ContractViolationException – ошибка в обработке ответа от сервера

Как использовать сервис через api

Пример запроса проверки карты

Как использовать сервис через платежную форму qiwi

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

Как отправлять платеж

Пример платежа с данными расшифрованного платежного токена Yandex Pay (метод CLOUD_TOKEN)

Как подключить сервис быстрых платежей для интернет-магазина

Соглашение о конфиденциальности

и обработке персональных данных

1.Общие положения

1.1.Настоящее соглашение о конфиденциальности и обработке персональных данных (далее – Соглашение) принято свободно и своей волей, действует в отношении всей информации, которую ООО «Инсейлс Рус» и/или его аффилированные лица, включая все лица, входящие в одну группу с ООО «Инсейлс Рус» (в том числе ООО «ЕКАМ сервис»), могут получить о Пользователе во время использования им любого из сайтов, сервисов, служб, программ для ЭВМ, продуктов или услуг ООО «Инсейлс Рус» (далее – Сервисы) и в ходе исполнения ООО «Инсейлс Рус» любых соглашений и договоров с Пользователем. Согласие Пользователя с Соглашением, выраженное им в рамках отношений с одним из перечисленных лиц, распространяется на все остальные перечисленные лица.

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

1.3.Сторонами (далее – «Стороны) настоящего Соглашения являются:

«Инсейлс» – Общество с ограниченной ответственностью «Инсейлс Рус», ОГРН 1117746506514, ИНН 7714843760, КПП  771401001, зарегистрированное по адресу: 125319, г.Москва, ул.Академика Ильюшина, д.4, корп.1, офис 11 (далее – «Инсейлс»), с одной стороны, и

«Пользователь»

либо физическое лицо, обладающее дееспособностью и признаваемое участником гражданских правоотношений в соответствии с законодательством Российской Федерации;

либо юридическое лицо, зарегистрированное в соответствии с законодательством государства, резидентом которого является такое лицо;

либо индивидуальный предприниматель, зарегистрированный в соответствии с законодательством государства, резидентом которого является такое лицо;

которое приняло условия настоящего Соглашения.

1.4.Для целей настоящего Соглашения Стороны определили, что конфиденциальная информация – это сведения любого характера (производственные, технические, экономические, организационные и другие), в том числе о результатах интеллектуальной деятельности, а также сведения о способах осуществления профессиональной деятельности (включая, но не ограничиваясь: информацию о продукции, работах и услугах; сведения о технологиях и научно-исследовательских работах; данные о технических системах и оборудовании, включая элементы программного обеспечения; деловые прогнозы и сведения о предполагаемых покупках; требования и спецификации конкретных партнеров и потенциальных партнеров; информацию, относящуюся к интеллектуальной собственности, а также планы и технологии, относящиеся ко всему перечисленному выше), сообщаемые одной стороной другой стороне в письменной и/или электронной форме, явно обозначенные Стороной как ее конфиденциальная информация.

1.5.Целью настоящего Соглашения является защита конфиденциальной информации, которой Стороны будут обмениваться в ходе переговоров, заключения договоров и исполнения обязательств, а равно любого иного взаимодействия (включая, но не ограничиваясь, консультирование, запрос и предоставление информации, и выполнение иных поручений).

2.Обязанности Сторон

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

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

2.3.Обязательство по сохранению в тайне конфиденциальной информации действительно в пределах срока действия настоящего Соглашения, лицензионного договора на программы для ЭВМ от 01.12.2022г., договора присоединения к лицензионному договору на программы для ЭВМ, агентских и иных договоров и в течение пяти лет после прекращения их действия, если Сторонами отдельно не будет оговорено иное.

2.4.Не будут считаться нарушением настоящего Соглашения следующие случаи:

(а)если предоставленная информация стала общедоступной без нарушения обязательств одной из Сторон; 

(б)если предоставленная информация стала известна Стороне в результате ее собственных исследований, систематических наблюдений или иной деятельности, осуществленной без использования конфиденциальной информации, полученной от другой Стороны;

(в)если предоставленная информация правомерно получена от третьей стороны без обязательства о сохранении ее в тайне до ее предоставления одной из Сторон; 

(г)если информация предоставлена по письменному запросу органа государственной власти, иного государственного органа,  или органа местного самоуправления в целях выполнения их функций и ее раскрытие этим органам обязательно для Стороны. При этом Сторона должна незамедлительно известить другую Сторону о поступившем запросе;

(д)если информация предоставлена третьему лицу с согласия той Стороны, информация о которой передается.

2.5.Инсейлс не проверяет достоверность информации, предоставляемой Пользователем, и не имеет возможности оценивать его дееспособность.

2.6.Информация, которую Пользователь предоставляет Инсейлс при регистрации в Сервисах, не является персональными данными, как они определены в Федеральном законе РФ №152-ФЗ от 27.07.2006г. «О персональных данных».

2.7.Инсейлс имеет право вносить изменения в настоящее Соглашение. При внесении изменений в актуальной редакции указывается дата последнего обновления. Новая редакция Соглашения вступает в силу с момента ее размещения, если иное не предусмотрено новой редакцией Соглашения.

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

Пользователь имеет право отказаться от получения вышеуказанной информации, сообщив об этом письменно на адрес электронной почты Инсейлс – contact@nfcexpert.ru.

2.9.Принимая данное Соглашение, Пользователь осознает и соглашается с тем, что Сервисами Инсейлс для обеспечения работоспособности Сервисов в целом или их отдельных функций в частности могут использоваться файлы cookie, счетчики, иные технологии и Пользователь не имеет претензий к Инсейлс в связи с этим.

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

Инсейлс вправе установить, что предоставление определенного Сервиса возможно лишь при условии, что прием и получение файлов cookie разрешены Пользователем.

2.11.Пользователь самостоятельно несет ответственность за безопасность выбранных им средств для доступа к учетной записи, а также самостоятельно обеспечивает их конфиденциальность. Пользователь самостоятельно несет ответственность за все действия (а также их последствия) в рамках или с использованием Сервисов под учетной записью Пользователя, включая случаи добровольной передачи Пользователем данных для доступа к учетной записи Пользователя третьим лицам на любых условиях (в том числе по договорам или соглашениям). При этом все действия в рамках или с использованием Сервисов под учетной записью Пользователя считаются произведенными самим Пользователем, за исключением случаев, когда Пользователь уведомил Инсейлс о несанкционированном доступе к Сервисам с использованием учетной записи Пользователя и/или о любом нарушении (подозрениях о нарушении) конфиденциальности своих средств доступа к учетной записи.

2.12.Пользователь обязан немедленно уведомить Инсейлс о любом случае несанкционированного (не разрешенного Пользователем) доступа к Сервисам с использованием учетной записи Пользователя и/или о любом нарушении (подозрениях о нарушении) конфиденциальности своих средств доступа к учетной записи. В целях безопасности, Пользователь обязан самостоятельно осуществлять безопасное завершение работы под своей учетной записью по окончании каждой сессии работы с Сервисами. Инсейлс не отвечает за возможную потерю или порчу данных, а также другие последствия любого характера, которые могут произойти из-за нарушения Пользователем положений этой части Соглашения.

3.Ответственность Сторон

3.1.Сторона, нарушившая предусмотренные Соглашением обязательства в отношении охраны конфиденциальной информации, переданной по Соглашению, обязана возместить по требованию пострадавшей Стороны реальный ущерб, причиненный таким нарушением условий Соглашения в соответствии с действующим законодательством Российской Федерации.

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

4.Иные положения

4.1.Все уведомления, запросы, требования и иная корреспонденция в рамках настоящего Соглашения, в том числе включающие конфиденциальную информацию, должны оформляться в письменной форме и вручаться лично или через курьера, или направляться по электронной почте адресам, указанным в лицензионном договоре на программы для ЭВМ от 01.12.2022г., договоре присоединения к лицензионному договору на программы для ЭВМ и в настоящем Соглашении или другим адресам, которые могут быть в дальнейшем письменно указаны Стороной.

4.2.Если одно или несколько положений (условий) настоящего Соглашения являются либо становятся недействительными, то это не может служить причиной для прекращения действия других положений (условий).

4.3.К настоящему Соглашению и отношениям между Пользователем и Инсейлс, возникающим в связи с применением Соглашения, подлежит применению право Российской Федерации.

4.3.Все предложения или вопросы по поводу настоящего Соглашения Пользователь вправе направлять в Службу поддержки пользователей Инсейлс www.nfcexpert.ru либо по почтовому адресу: 107078, г. Москва, ул. Новорязанская, 18, стр.11-12 БЦ «Stendhal» ООО «Инсейлс Рус».

Дата публикации: 01.12.2022г.

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

Общество с ограниченной ответственностью «Инсейлс Рус»

Сокращенное наименование на русском языке:

ООО «Инсейлс Рус»

Наименование на английском языке:

InSales Rus Limited Liability Company (InSales Rus LLC)

Юридический адрес:

125319, г. Москва, ул. Академика Ильюшина, д. 4, корп.1, офис 11

Почтовый адрес:

107078, г. Москва, ул. Новорязанская, 18, стр.11-12, БЦ «Stendhal»

ИНН: 7714843760 КПП: 771401001

Банковские реквизиты:

Р/с 40702810600001004854

В ИНГ БАНК (ЕВРАЗИЯ) АО, г.Москва,
к/с 30101810500000000222, БИК 044525222

Электронная почта: contact@nfcexpert.ru

Контактный телефон: 7(495)133-20-43

Как провести выплату

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

Посмотреть сценарий выплат

Назначение документа raiffeisenbank e-commerce api

Это инструмент для интеграции с эквайрингом Райффайзенбанка — для разработчиков. Позволяет принимать платежи и узнавать об их статусе. В этом документе собраны описания основных сценариев с примерами кода, а также вся информация о структуре запросов, объектах и переменных .

Назначение документа сбп api raiffeisenbank

Это инструмент для интеграции с системой быстрых платежей Райффайзенбанка — для разработчиков. Позволяет регистрировать QR-коды для C2B платежей, получать данные о зарегистрированном QR-коде, узнавать информацию по платежу, а также настроить уведомления о статусе платежа.

Назначение документа сбп payout api raiffeisenbank

Это инструмент для интеграции с системой быстрых платежей Райффайзенбанка — для разработчиков. Позволяет проводить выплаты, опрашиваиь статус операций, настроить сервис callback’ов . Помимо основной информации о схеме работы СБП B2C Райффайзенбанка и контактной информаци, документ содержит в себе описания базовых сценариев с примерами кода. Вся информация о структуре запросов, объектах и переменных также находится в протоколе.

Обзор протокола

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

  • Банковские карты Visa, Mastercard, МИР.
  • Yandex Pay.
  • QIWI Кошелек.
  • Система Быстрых Платежей (СБП).
  • Баланс мобильного телефона.

Обработка уведомлений

Для хранения и использования уведомлений существует класс PaymentNotification, экземпляр которого можно получить с помощью статического метода SbpUtil.parseJson(String).

Для проверки подлинности уведомления существуют перегруженные статические методы SbpUtil.checkNotificationSignature. Примеры использования:

Общая схема проведения платежа и взаиморасчетов

sequenceDiagram
participant customer as Покупатель
participant store as Магазин мерчанта
participant ipsstore as Кредитная организация мерчанта
participant qb as QIWI
participant ips as Платежная система
participant ipscust as Кредитная организация Покупателя Эмитент или банк-отправитель
customer->>store:

Старт оплаты
store->>qb:Платеж
qb->>ips:Авторизация платежа
ips->>ipscust:Авторизация платежа
rect rgb(237, 243, 255)
Note over ipsstore, ipscust:Взаиморасчеты
ipscust->>ips:₽₽₽
ips->>qb:₽₽₽
qb->>ipsstore:₽₽₽
end

Ожидание аутентификации покупателя (3-d secure)

Пример ответа с требованием аутентификации покупателя

Оплата картой в тестовом режиме

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

Оплата со счета мобильного телефона

Оплата покупок со счета мобильного телефона происходит без ввода данных карты. Сразу после инициирования платежа покупатель получает SMS-сообщение от своего мобильного оператора с информацией о платеже и подтверждает или отклоняет оплату ответным SMS.

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

Оплата токеном через сбп

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

Оплата через сбп

Протокол приема платежей поддерживает списание средств с покупателя через Систему быстрых платежей (СБП). Через СБП можно выполнять платежи в пользу юридических лиц, в том числе с использованием QR-кодов.

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

Оплата через сбп в тестовом режиме

Для тестирования различных вариантов оплаты и ответов указывайте разные суммы платежа (поле amount):

Особенности

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

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

Оформление возврата по платежу

Для возврата средств необходимо создать объект класса RefundInfo, заполнив необходимые поля, и вызвать метод refundPayment(RefundInfo). Подробности об обязательных полях в документации.

Обязательные параметры:

  • сумма возврата в рублях amount(BigDecimal)
  • идентификатор заказа платежа в Райффайзенбанке, используется для возвратов по динамическому QR order(String)
  • уникальный идентификатор запроса на возвратrefundId(String)

Ответ:

Параметры

В URL указываются параметры счета.

Передача чека (54-фз)

Для работы по 54-ФЗ Протокол приема платежей предоставляет инструмент для взаимодействия с вашей онлайн-кассой. Информация для формирования фискального чека передается в JSON-объекте cheque в операциях API выставления счета и платежа.

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

Если используется Атол, то дополнительно предоставьте сведения:

  • email ТСП для печати в чеке;
  • полное название организации;
  • реквизиты ОФД (название, ИНН, url);
  • login и password для генерации токена;
  • код группы.

Перенаправление на форму qiwi

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

Платеж через форму qiwi

При подключении платежей через форму QIWI покупателю доступен только способ оплаты банковскими картами. Другие способы оплаты включаются по запросу:

Чтобы выполнить платеж через форму QIWI, выставите счет покупателю. Воспользуйтесь выставлением счета через API или перенаправьте покупателя на форму QIWI по прямой ссылке с параметрами счета.

Платеж через форму мерчанта

При подключении платежей через собственную платежную форму по умолчанию сразу доступен способ оплаты Банковские карты. Другие способы оплаты доступны по запросу:

Платежный токен

Выставление счета с оплатой платежным токеном

Подключение

Требования:

Для подключения SDK требуется:

  • Выполнить команды в maven:
    • validate(mvn validate)
    • install(mvn install)

Получение данных

Описание операций описано по ссылке:

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

Необходимо создать объект класса QRId, передав в конструкторе идентификатор QR-кода, и вызвать метод getQRInfo(QRId):

Ответ

Получение информации по возврату

Для выполнения данного запроса необходимо указать уникальный идентификатор запроса на возврат refundId при вызове метода getRefundInfo(refundId):

Ответ:

Получение информации по платежу

Необходимо создать объект класса QRId, передав в конструкторе идентификатор QR-кода, и вызвать метод getPaymentInfo(QRId):

Ответ:

{
  "additionalInfo": "Доп информация",
  "amount": 12399,
  "createDate": "2020-01-31T09:14:38.107227 03:00",
  "currency": "RUB",
  "merchantId": 123,
  "order": "282a60f8-dd75-4286-bde0-af321dd081b3",
  "paymentStatus": "NO_INFO",
  "qrId": "AD100051KNSNR64I98CRUJUASC9M72QT",
  "sbpMerchantId": "MA0000000553",
  "transactionDate": "2022-07-11T17:45:13.109227 03:00",
  "transactionId": 23
}

Получение списка точек продаж

Получение списка точек продаж, зарегистрированных в Системе Быстрых платежей. ID компании можно получить через запрос, который описан по ссылке:

Пример ответа (json)

 [
	{
		"id": "51d693fb-c7f7-48c4-911f-65055203a533",
		"name": "Торговая точка СБП",
		"phone": "3221110189",
		"сity": "Уфа",
		"zip": "450076",
		"address": "г. Уфа, ул. ул Аксакова, 4",
		"type": "QRPay",
		"created": "2021-03-18T03:37:27.036396",
		"hasStaticQrCode": true,
		"binded": false,
		"activationCode": "A79EC1DE",
		"merchantCategoryCode": {
			"code": "5411",
			"name": "Бакалейные магазины, Супермаркеты",
			"category": "Супермаркеты"
		},
		"bankAccount": "40802810570010294158",
		"status": "Registered"
	}
]

Проверка карты покупателя

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

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

Сервис проверки карт по умолчанию отключен. Чтобы подключить его, обратитесь к вашему сопровождающему менеджеру.

Процесс платежа

sequenceDiagram
participant customer as Покупатель
participant store as Магазин
participant qb as QIWI (эквайер)
participant ips as Эмитент
customer->>store:Выбор товаров, Старт оплаты,ввод платежных данных
activate store
store->>qb:

ПлатежОдношаговый платеж — все способы оплатыДвухшаговый платеж — только карты
activate qb
qb->>store:Статус операции, данные для 3DS или QR-код СБП
rect rgb(237, 243, 255)
Note over customer, ips:3-D Secure
store->>customer:

Переадресация покупателя на acsUrl или в приложение банка
activate ips
ips->>customer:Аутентификация покупателя:3DS — карты,СБП — подтверждение операции в интерфейсе эмитента карты
customer->>ips:Аутентификация
ips->>store:

Результат аутентификации (PaRes)
store->>qb:Завершение аутентификации (complete)
end
qb->>ips:Запрос списания денежных средств
activate ips
ips->>qb:Статус операции
qb->>store:Уведомление о статусе операции
rect rgb(237, 243, 255)

Чтобы создать платеж, передайте в запросе API Платеж:

  • ключ API;
  • сумму платежа;
  • метод платежа;
  • другую информацию для создания платежа.

Регистрация qr-кода

Для регистрации кода необходимо создать экземпляр класса QRStatic или QRDynamic. Для разных типов QR-кодов обязательные параметры отличаются.

Обязательные параметры:

  • номер заказа в системе партнера order(String)
  • (QRDynamic) сумма в рублях amount(BigDecimal)

Опциональные параметры могут быть заполнены с помощью set методов.

Для выполнения запроса необходимо вызвать соответствующий метод класса SbpClient, принимающий в качестве аргумента объект класса QR:

Ответ:

Пример с минимальными данными:

Также существует возможность заполнить необязательный параметр qrExpirationDate с помощью сдвига относительно даты создания. Для этого в поле qrExpirationDate следует указать строку вида ” <число1><буква1>”.

  • ‘M’ – месяц
  • ‘d’ – день
  • ‘H’ – час
  • ‘m’ – минута
  • ‘s’ – секунда

Пример:

Реестры

Реестр операций отправляется после 14:00 МСК по рабочим дням, содержит информацию только об успешных платежах, обработанных банком. Реестр полностью соответствует Акту.

Реестр отправляется на email, указанный при регистрации в сервисе, во вложенном в письме zip-архиве.

Серверные уведомления

Пример уведомления

Система быстрых платежей как альтернатива applepay и gpay в онлайне — личный опыт на

Привет! Я продакт в сервисе ParkPass. Наш сервис ускоряет и упрощает взаимодействие с парковкой, в том числе и её оплату.

Как выглядит стандартный процесс оплаты парковки?

  1. Вы берёте на въезде парковочный носитель (карту/билет);
  2. До выезда вам надо оплатить парковку в терминале оплаты парковки;
  3. Вы его ищите;
  4. Находите;
  5. Разбираетесь в устройстве паркомата: куда и что вставлять, сколько платить, как платить и так далее;
  6. И наконец оплачиваете;

Если всё идёт так как надо, вы потратите 5-7 минут на весь процесс оплаты. А может быть так, что терминал не работает, он далеко от вашей машины, нет оплаты банковской картой, нет сдачи, терминал один, а людей много(очередь), вы суперзвезда и не хотите быть среди простых смертных. Или вы просто не можете найти паркомат…

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

Как выглядит процесс оплаты парковки через наш сервис?

Вместо поиска и похода в терминал оплаты парковки, мы предлагаем оплатить парковку по QR-коду на парковочном носителе.

  • Пользователь сканирует QR-код;
  • Ему открывается AppClip (микроприложение для iOS) или Web-приложение/InstantApp (Android);
  • Он подтверждает, что это его парковочная сессия;
  • Оплачивает через ApplePay и GooglePay;
  • Можно выезжать.

Весь процесс занимает до 2 минут. Всегда. Еще и чек на email отправим. В паркомате чеки могут не выдавать. Доказывай как хочешь, что ты оплатил, если что-то пошло не так.

Оплата в AppClip с помощью ApplePay

И тут случилось , то что случилось…

После того как ApplePay и GooglePay по факту перестали работать в России, оплата в нашем сервисе тоже отвалилась. Мы знали, что есть Система Быстрых Платежей. Но принцип работы нужно было изучать. Изучили, решили, что можно использовать, но есть одно но… Процесс инициализации платежа и оплаты через СБП в корне отличается от ApplePay/GooglePay.


Проблема

За что мы так любим ApplePay и GooglePay? Ты нажимаешь кнопку оплатить, светишь лицом или прикладываешь палец и… вуаля. Оплата прошла. С СБП это не так. СБП с точки зрения простого обывателя — это ссылка. Ссылка, которая содержит в себе набор параметров для оплаты. Если вы сканируете QR-код с СБП ссылкой через приложение банка, то всё ок. Приложение банка умеет работать с такими ссылками. Но как сделать так, чтобы по ссылке проходила оплата аналогичная AP и GP?

Решение

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

А вот пример как выглядит ссылки для оплаты в Сбере Android: intent://qr.nspk.ru/BD100047PN1IF5JO8QKAPK0B0TDLIESG?type=02&bank=100000000004∑291600&cur=RUB&crc=FAED#Intent;scheme=bank100000000111;package=ru.sberbankmobile;end;

Вот, например, как выглядит ссылка для оплаты в Альфа-банке для iOS:
bank100000000008://qr.nspk.ru/BD100001O6S8CBS49LFONAU5164BQ5B4?type=02&bank=100000000004∑2700&cur=RUB&crc=D37D

Честно, я так нигде и не нашёл почему ссылки выглядят именно так, что это такое. Я понимаю, что это что-то вроде DeepLink. Раз они кем-то сделаны, значит, кто-то знает их принцип работы. Если вы знаете, где можно почитать, оставьте ссылку в комментарии.

В результате мы решили написать свой виджет для оплаты через СБП для Web и iOS. Схема логики работы выглядит как-то так. Не стремился воспроизвести сверхточную схему работу. Надеюсь из того что есть, в целом принцип вам понятен 🙂

Как в итоге стал выглядеть процесс оплаты после подключения СБП.

  1. Пользователь сканирует QR-код и переходит поссылке;
  2. Ему открывается AppClip (iOS) или Web-приложение/InstantApp (Android);
  3. Он подтверждает, что это его парковочная сессия;
  4. Нажимает Оплатить через СБП;
  5. Выбирает свой банк — иконка каждого банка это ссылка на приложение банка;
  6. Оплачивает в приложении банк;
  7. Можно выезжать.

Оплата в AppClip с помощью СБП

Что в итоге

В текущей ситуации СБП для нас оказалось нормальное альтернативное решение.

  • Наш банк поддерживает генерацию ссылок для СБП через АПИ;
  • Скорость оплаты осталось почти такой же, как и через ApplePay и GooglePay;
  • Оплату по СБП поддерживает порядка 100 банков и их приложения;
  • Комиссия за оплату 0%, Карл! У MasterCard, Visa, ApplePay, GooglePay; комиссия > 2.5%
  • Наш сервис продолжает работать.

Пожелания

На мой взгляд СБП может стать нормальной альтернативой для ApplePay и GooglePay в онлайне. При этом, со стороны СБП и Банков партнёров нужны шаги, по улучшению и упрощению процедуры оплаты. В нашем случае нам самим пришлось реализовывать желаемое поведение, а хотелось, чтобы подобное шло из коробки от разработчиков СБП. И судя по новостям развитие будет, но как скоро https://www.rbc.ru/finances/31/03/2022/624592ec9a7947d36dfa4bc3?from=newsfeed


Бонусные ссылки тем кто дочитал до конца

Спасибо моим коллегам, которые помогли разобраться и вернуть в работу сервис. 💪

Создание платежа

Пример платежа с холдированием (двухшаговый платеж)

Сплитование платежей

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

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

Способы подключения

Протокол приема платежей поддерживает несколько вариантов взаимодействия:

Справочник ошибок api

Ошибки API описывают причину отклонения операции и передаются:

  • в ответах на запросы — в поле status.reason;
  • в уведомлениях — в поле status.reasonCode.
Ошибка APIОписание
INVALID_STATEНекорректный статус транзакции
INVALID_AMOUNTНекорректная сумма
INVALID_RECEIVER_DATAОшибка при передаче данных о получателе
DECLINED_BY_MPIОтклонено MPI
DECLINED_BY_FRAUDОтклонено fraud-мониторингом
REATTEMPT_NOT_PERMITTEDПовторный запрос авторизации запрещен на основании полученного ответа от Платежной системы
GATEWAY_INTEGRATION_ERRORОшибка взаимодействия с банком
GATEWAY_TECHNICAL_ERRORТехническая ошибка на стороне банка
ACQUIRING_MPI_TECH_ERRORТехническая ошибка при проведении 3DS аутентификации
ACQUIRING_GATEWAY_TECH_ERRORТехническая ошибка
ACQUIRING_ACQUIRER_ERRORТехническая ошибка
ACQUIRING_AUTH_TECHNICAL_ERRORОшибка при проведении авторизации средств
ACQUIRING_ISSUER_NOT_AVAILABLEОшибка эмитента. Банк-эмитент не доступен
ACQUIRING_SUSPECTED_FRAUDОшибка эмитента. Подозрение на мошенничество
ACQUIRING_LIMIT_EXCEEDEDОшибка эмитента. Превышен один из лимитов
ACQUIRING_NOT_PERMITTEDОшибка эмитента. Операция не разрешена
ACQUIRING_INCORRECT_CVVОшибка эмитента. Некорректный CVV
ACQUIRING_EXPIRED_CARDОшибка эмитента. Неверный срок действия карты
ACQUIRING_INVALID_CARDОшибка эмитента. Проверьте корректность введенных данных
ACQUIRING_INSUFFICIENT_FUNDSОшибка эмитента. Недостаточно средств
ACQUIRING_UNKNOWNНеизвестная ошибка
BILL_ALREADY_PAIDСчет уже оплачен
PAYIN_PROCESSING_ERRORОшибка при проведении платежа
QW_LIMIT_ERRORОшибка превышения лимита пользователя QIWI Кошелька
QW_IDENTIFICATION_ERRORПользователю необходимо пройти идентификацию в QIWI Кошельке
QW_AUTH_ERRORОшибка авторизации в QIWI Кошельке
QW_INSUFFICIENT_FUNDSНедостаточно средств в QIWI Кошельке
QW_AMOUNT_ERRORНедопустимая сумма платежа
QW_REGISTRATION_ERRORОшибка регистрации пользователя QIWI Кошелька
QW_AGENT_ERRORОшибка при пополнении QIWI Кошелька пользователя
QW_ACCOUNT_ERRORQIWI Кошелек заблокирован
QW_IDENTIFICATION_STATUS_ERRORДостигнут лимит платежей в QIWI Кошельке
QW_CURRENCY_ERRORВалюта QIWI Кошелька не найдена
QW_PAYMENT_ERRORОшибка проведения платежа в QIWI Кошельке
QW_PROVIDER_ERRORПровайдер QIWI Кошелька заблокирован
QW_SMS_CONFIRM_EXPIREDИстекло время СМС-подтверждения платежа в QIWI Кошельке

Статус qr-кода

Пример ответа на запрос статуса QR-кода

Статус платежа через сбп

После оплаты платеж перейдет в финальный статус. Актуальный статус платежа по идентификатору paymentUid можно получить через API.

Статусы операций

Статус операции отражает ее текущее состояние.

API возвращает синхронный статус операции в поле status.value.

В уведомлениях статус помещается в поле {operation}.status.value.

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

Термины и сокращения

Ключ доступа к API — Символьная строка для авторизации мерчанта в API согласно стандарту OAuth 2.0 RFC 6749RFC 6750.

Платежный токен — Символьная строка, созданная по данным карты для безакцептных платежей.

API: Application Programming Interface — набор готовых методов, предоставляемых приложением (системой) для использования во внешних программных продуктах.

REST: Representational State Transfer — архитектурный стиль взаимодействия компонентов распределённого приложения в сети.

JSON: JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript RFC 7159.

3DS: 3-D Secure — протокол защиты карточных данных, используемый для аутентификации держателя банковской карты во время совершения платежной операции через интернет. QIWI поддерживает как версию 3DS 1.0, так и версию 3DS 2.0 протокола.

ТСП, Мерчант — Торгово-сервисное предприятие.

MPI: Merchant Plug-In — модуль, выполняющий 3DS аутентификацию покупателя.

PCI DSS: Payment Card Industry Data Security Standard — стандарт безопасности данных индустрии платёжных карт, учреждённым международными платёжными системами Visa, MasterCard, American Express, JCB и Discover.

Тестовый режим

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

Для тестирования операций оплаты используются URL протокола.

Тестовый режим для метода оплаты с баланса КИВИ Кошелька не предусмотрен.

Когда интеграция на вашей стороне закончена, мы переводим siteId в производственный режим. В этом режиме выполняются реальные списания средств с карт.

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

Типы операций

В Протоколе доступны следующие операции:

  • Счет (Invoice) — электронный документ, выставляемый продавцом покупателю. Содержит информацию о сумме и номере заказа. Не является финансовой сущностью и имеет ограниченный срок жизни. Выставление счета необходимо для получения ссылки на платежную форму QIWI.
  • Платеж (Payment) — операция списания денежных средств от покупателя в пользу продавца. Фактическое списание происходит только после подтверждения (Capture). При работе через платежную форму QIWI, Payment — попытка оплаты счета (Invoice).
  • Завершение (Complete) — завершение 3DS-верификации Покупателя. Используется при работе через Платежную форму мерчанта.
  • Подтверждение (Capture) — операция подтверждения авторизации (списания) средств.
  • Возврат (Refund) — возврат средств покупателю по успешному платежу. Финансовая операция списания денежных средств от продавца в пользу покупателя. Если подтверждения операции Payment не было, то в ответе на операцию Refund вы получите флаг Reversal и деньги со счета Покупателя на счет продавца не перечислятся (комиссия за эквайринг также не удерживается).

Уведомления по сплитованным операциям

Пример уведомления по сплитованным платежам

Удаление платежного токена

Удаление платежного токена

Формат взаимодействия

API Протокола приема платежей основано на принципах REST-архитектуры.

Формат реестра

Пример фрагмента реестра

Формат уведомления capture

ПолеОписаниеТип
captureОписание подтверждения.Object
typeТип операцииString(200)
captureIdУникальный идентификатор подтверждения в системе ТСП.String(200)
createdDatetimeДата создания операцииURL-закодированная строка
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ
amountИнформация о сумме операцииObject
valueСумма операции, округленная до двух десятичных знаков в меньшую сторонуNumber(6.2)
currencyИдентификатор валюты операции (Alpha-3 ISO 4217 код)String(3)
billIdID счета, соответствующего операцииString(200)
statusИнформация о статусе операцииObject
valueСтроковое значение статусаString
changedDatetimeДата обновления статусаURL-закодированная строка
ГГГГ-ММ-ДДTЧЧ:ММ:ССZ
reasonCodeКод причины отклоненияString(200)
reasonMessageОписание причины отклоненияString(200)
errorCodeКод ошибкиNumber
paymentMethodИнформация о средстве платежаObject
typeТип метода оплатыString
maskedPanМаскированный PAN картыString
rrnRRN платежа (по ISO 8583)Number
authCodeAuth-code платежаNumber
customerИнформация о покупателеObject
phoneНомер телефона покупателяString
emailE-mail покупателяString
accountИдентификатор покупателя в системе ТСПString
ipIP адрес покупателяString
countryСтрана адреса покупателяString
customFieldsПоля с произвольной информацией, дополняющей данные по операцииObject
cf1Поле с произвольной информацией, дополняющей данные по операцииString(256)
cf2Поле с произвольной информацией, дополняющей данные по операцииString(256)
cf3Поле с произвольной информацией, дополняющей данные по операцииString(256)
cf4Поле с произвольной информацией, дополняющей данные по операцииString(256)
cf5Поле с произвольной информацией, дополняющей данные по операцииString(256)
FROM_MERCHANT_CONTRACT_IDНомер договораString(256)
FROM_MERCHANT_BOOKING_NUMBERНомер бронированияString(256)
FROM_MERCHANT_PHONEМобильный телефон покупателяString(256)
FROM_MERCHANT_FULL_NAMEФИО покупателяString(256)
flagsДополнительные команды, переданные в APIМассив. Возможные элементы – SALE/REVERSAL
typeТип уведомленияString(200)
versionВерсия уведомленийString

Частота отправки уведомлений

Сервис отправки уведомлений распределяет неуспешные уведомления по очередям:

  • 1 попытка с отложенным временем 5 секунд
  • 1 попытка с отложенным временем 1 минута
  • 3 попытки с отложенным временем по 5 минут

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

Шпаргалка

Тип запросаВызываемый методПринимаемый классВозвращаемый класс
Регистрация QR-кодаregisterQRQRQRUrl
Получение данных по зарегистрированному ранее QR-кодуgetQRInfoQRIdQRUrl
Получение информации по платежуgetPaymentInfoQRIdPaymentInfo
Оформление возврата по платежуrefundPaymentRefundInfoRefundStatus
Получение информации по возвратуgetRefundInfoRefundIdRefundStatus

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *