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

API. Общие сведения

Раздел API документирует реализацию RESTful API для приёма платежей в рамках продукта Интернет-эквайринг.

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

API приёма платежей основан на принципах REST-архитектуры. Данные и методы считаются ресурсами, которые доступны через вызов универсальных идентификаторов ресурсов (URI).

Взаимодействие по API совершается по защищённому протоколу (HTTPS). Поддерживаются только HTTPS-запросы. HTTP-запросы по нешифрованному каналу не поддерживаются. Данные в запросах передаются в формате JSON в кодировке UTF-8. В ответах данные возвращаются также в формате JSON в кодировке UTF-8.

Методы API обеспечивают логическую идемпотентность, т. е. многократный вызов метода эквивалентен однократному. Однако ответ сервера может меняться: например, состояние счёта может меняться от запроса к запросу.

URL для вызовов API

Постоянная часть URL-адреса для вызова методов API:

https://b2b-api.qiwi.com/partner/payin/

Авторизация

Авторизация запросов к API выполняется по стандарту OAuth 2.0 согласно RFC 6750. Указывайте значение ключа доступа к API в HTTP-заголовке Authorization как

Bearer <Ключ API>

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

    curl -X PUT \
    https://b2b-api.qiwi.com/partner/payin/v1/sites/{site_id}/payments/{payment_id} \
    --oauth2-bearer <Ключ API>

Пример заголовка авторизации:

Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9

Формат значений

Адрес

Данные передаются в объекте address.

Параметр Обязательный Тип Описание
country Нет string(1000) Страна
city Нет string(1000) Город
region Нет string(1000) Округ, регион, область, штат
details Нет string(1000) Адрес местонахождения (улица, дом)

Дата и время

API принимает и возвращает значения даты и времени в формате ISO 8601 с временной зоной. Пример: 2023-08-13T14:30:00+03:00

Данные для 3D-Secure

Данные для аутентификации банковских карт по протоколам 3DS и 3DS2.0 передаются в объекте threeDS.

Параметр Обязательный Тип Описание Где используется
pareq Да string Аутентификационное сообщение для передачи в ACS банка-эмитента через браузер покупателя Возвращается в ответах на запросы «Получение информации о счёте», «Создание платежа», «Завершение аутентификации покупателя» и “Проверка карты
acsUrl Да string URL ACS сервера банка-эмитента, куда следует перенаправить покупателя Возвращается в ответах на запросы «Получение информации о счёте», «Создание платежа», «Завершение аутентификации покупателя» и “Проверка карты
pares Да string Результат аутентификации Покупателя, полученный после его возврата с ACS банка-эмитента Передаётся в теле запроса «Завершение аутентификации покупателя», а также возвращается в ответе на запрос «Завершение аутентификации при проверке карты»

Данные для генерации платёжного токена

Данные для генерации платёжного токена передаются в объекте tokenizationData запроса «Проверка карты».

Параметр Обязательный Тип Описание
account Да string(64) Уникальный идентификатор покупателя в системе ТСП. Необходим для генерации платежного токена карты

Информация о возврате по QR-коду

Информация о возврате по QR-коду передаётся в объекте refunds ответа на запрос создания QR-кода СБП (только для type=DYNAMIC).

Параметр Обязательный Тип Описание
refundUid Да string Идентификатор возврата
refundStatus Да string Текущий статус возврата
gatewayRefundId Нет string Идентификатор возврата шлюза
declineReason Нет string Причина отклонения операции

Информация о платеже по QR-коду

Информация о платеже по QR-коду передаётся в объекте payment ответа на запрос создания QR-кода СБП (только для type=DYNAMIC).

Параметр Обязательный Тип Описание
paymentUid Да string Идентификатор платежа. Данный идентификатор используется для возврата по методу API
paymentStatus Да string Текущий статус платежа
declineReason Нет string Причина отклонения операции

Информация о транзакции привязки карты

Сведения об идентификаторе транзакции, в которой была привязана карта. Передаются в объекте paymentMethod.firstTransaction.

Параметр Обязательный Тип Описание
paymentId Нет string Уникальный идентификатор платежа в информационной системе ТСП
trnId Нет string Уникальный идентификатор платежа в информационной системе НСПК

Метод платежа

Метод платежа передаётся в объекте paymentMethod.

Параметр Обязательный Тип Описание
type Да string Тип платежного метода.
  • CARD — Банковская карта
  • TOKENПлатёжный токен
  • pan Нет string(19) Номер банковской карты.
    Только для type=CARD
    maskedPan Нет string(19) Маскированный номер банковской карты.
    Только для type=CARD
    expiryDate Нет string(5) Срок действия банковской карты в формате MM/YY.
    Только для type=CARD
    cvv2 Нет string(4) CVV2/CVC2 на банковской карте.
    Только для type=CARD
    holderName Нет string(26) Имя, указанное на банковской карте (латинские буквы).
    Только для type=CARD
    paymentToken Нет string Платёжный токен.
    Только для type=TOKEN
    cardTokenPaymentType Нет string Параметр для корректной обработки транзакций в платёжных системах для операций с сохраненными картами. Возможные значения
    firstTransaction Нет object Сведения об идентификаторе транзакции, в которой была привязана карта.
    Для type=CARD, TOKEN

    Описание ошибки валидации поля

    Описание ошибки валидации передаётся в объекте cause.

    Параметр Обязательный Тип Описание
    fieldName: [value] Нет array of strings fieldName — название конкретного поля,
    [value] — список ошибок валидации этого поля

    Параметры QR-кода

    Параметры QR-кода передаются в объекте qrCode запроса на создание QR-кода СБП и ответа на этот запрос.

    Параметр Обязательный Тип Описание Где используется
    type Да string Тип QR-кода Запрос, ответ
    status Да string Текущий статус QR-кода Ответ
    payload Нет string Строка данных QR-кода Ответ
    ttl Нет number Срок действия QR-кода в минутах.
    Только для type=DYNAMIC. По умолчанию динамический QR-код активен в течение 72 часов, по истечении срока деактивируется.
    Запрос, ответ
    image Нет object Характеристики изображения QR-кода Запрос, ответ
    declineReason Нет string Причина отклонения операции Ответ

    Платёжная карта

    Информация о банковской карте, с которой совершён платёж.

    Параметр Обязательный Тип Описание
    issuingCountry Нет string(3) Код страны эмитента
    issuingBank Нет string Банк-эмитент
    paymentSystem Нет string Тип платёжной системы
    fundingSource Нет string Тип карты
    paymentSystemProduct Нет string Категория карты

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

    Информация о платёжном токене для банковской карты. Возвращается в объекте createdToken ответа на запросы создания платежа, если запрошен выпуск токена, получения списка платежей по счёту, если токен был использован при оплате, и др.

    Параметр Обязательный Тип Описание
    token Да string Платёжный токен карты
    expiredDate Да string Дата окончания срока действия платёжного токена
    name Нет string Маскированный номер карты, для которой выпущен платёжный токен

    Платёжный токен СБП

    Информация о платёжном токене СБП. Возвращается в объекте token ответа на запрос создания QR-кода, если запрошен выпуск токена СБП.

    Параметр Обязательный Тип Описание
    status Да string Статус выпуска токена (возможные значения: IN_PROGRESS, CREATED, REJECTED)
    expiredDate Да string Дата окончания срока действия платёжного токена
    value Нет string Платёжный токен СБП
    rejectReason Нет string Причина отклонения операции
    bankMemberId Нет string Идентификатор банка плательщика в СБП

    Покупатель

    Информация о покупателе передаётся в объекте customer.

    Параметр Обязательный Тип Описание
    account Да string(64) Идентификатор Покупателя в системе ТСП
    email Нет string(1000) Город
    phone Нет string(1000) Округ, регион, область, штат
    address Нет object Адрес покупателя
    lastName Нет string Фамилия заёмщика (для передачи данных МФО)
    firstName Нет string Имя заёмщика (для передачи данных МФО)
    middleName Нет string Отчество заёмщика (для передачи данных МФО)

    Получатель платежа

    Информация о получателе платежа передаётся в объекте receiverData.

    Параметр Обязательный Тип Описание
    pan Нет string(19) Номер карты получателя денежного перевода. Указывается для операций денежных переводов
    phone Нет string(15) Номер телефона получателя платежа. Указывается при пополнении телефона
    bankAccount Нет string(20) Номер счёта получателя платежа. Указывается для операций денежных переводов
    bic Нет string(9) БИК кредитной организации получателя платежа. Указывается для операций денежных переводов

    Произвольная информация, дополняющая данные по операции

    Информация передаётся в параметрах объекта customFields.

    Параметр Обязательный Тип Описание
    auto_capture Да boolean Показывает, что платёж был выполнен с автоподтверждением.
    Возвращается в ответах на запросы «Получение статуса счёта», «Получение списка платежей по счёту»
    contract_id Нет string Номер договора клиента (для передачи данных МФО).
    Возвращается в ответе на запрос «Создание счёта»
    invoice_callback_url Нет string(256) URL отправки уведомления по операции.
    Возвращается в ответе на запрос «Создание счёта»
    invoice_creation_type Да string Тип интерфейса, использованного для создания счёта.
    Возвращается в ответах на запросы «Получение статуса счёта», «Получение списка платежей по счёту»
    themeCode Нет string(256) Код стиля для применения к платёжной форме.
    Возвращается в ответе на запрос «Создание счёта»
    cf1 Нет string(256) Поле для произвольной информации, дополняющей данные по операции
    cf2 Нет string(256) Поле для произвольной информации, дополняющей данные по операции
    cf3 Нет string(256) Поле для произвольной информации, дополняющей данные по операции
    cf4 Нет string(256) Поле для произвольной информации, дополняющей данные по операции
    cf5 Нет string(256) Поле для произвольной информации, дополняющей данные по операции

    Реквизиты банковской карты

    Реквизиты банковской карты передаются в объекте cardData запроса «Проверка карты».

    Параметр Обязательный Тип Описание
    pan Да string(19) Номер банковской карты
    expiryDate Да string(5) Срок действия банковской карты в формате MM/YY
    cvv2 Да string(4) CVV2/CVC2 на банковской карте
    holderName Нет string(26) Имя держателя карты, как указано на банковской карте (латинские буквы)
    cardTokenPaymentType Нет string Параметр для корректной обработки транзакций в платежных системах для операций с сохраненными картами.
    Возможные значения: FIRST_PAYMENT — если после этой операции вы сохраните карту на своей стороне

    Сведения о сохранённой карте

    Если для платежа используется сохранённая карта, информация о ней передаётся в объекте credentialOnFile.

    Параметр Обязательный Тип Описание
    type Нет string Тип операции платежа с использованием сохранённой карты
    trn Нет string Идентификатор транзакции, в которой была привязана карта

    Список платежей по счёту

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

    Параметр Обязательный Тип Описание
    paymentId Да string Идентификатор платежа
    billId Да string Идентификатор счёта. Такой же, как в запросе
    createdDateTime Да string Дата создания счёта
    amount Да object Сумма операции
    capturedAmount Да object Сумма подтверждений
    refundedAmount Да object Сумма возвратов
    paymentMethod Да object Метод платежа
    status Да object Статус платежа
    customer Нет object Данные покупателя: account, email, phone, address
    requirements Нет object Требования для дополнительной аутентификации покупателя, полученные в операции платежа
    comment Нет string Комментарий к платежу
    customFields Нет object Поля с производной информацией, дополняющей данные по операции: auto_capture, invoice_creation_type и др.

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

    Статус операции передаётся в объекте status.

    Параметр Обязательный Тип Описание
    value Да string Значение статуса операции
    changedDateTime Да string Дата изменения статуса
    reason Нет string Причина отклонения. Список возможных причин указан в разделе Ошибки API
    reasonMessage Нет string Детализация причины отклонения
    psErrorCode Нет string Причина отклонения операции, полученная от платёжной системы. Список возможных причин указан в разделе Справочник кодов детализации ошибки

    Статус счёта

    Статус счёта передаётся в объекте status в ответе на запрос «Получение статуса счёта».

    Параметр Обязательный Тип Описание
    value Да string Значение статуса счёта
    changedDateTime Да string Дата изменения статуса счёта
    reason Нет string Причина отклонения счёта. Список возможных причин указан в разделе Ошибки API
    reasonMessage Нет string Детализация причины отклонения

    Сумма операции

    Сумма операции передаётся в объектах amount, capturedAmount, refundedAmount в зависимости от типа операции.

    Параметр Обязательный Тип Описание
    value Да number(6.2) Сумма операции, округленная до двух десятичных знаков в меньшую сторону
    currency Да string(3) Валюта в буквенном формате согласно ISO 4217.

    Требования для дополнительной аутентификации

    Требования для дополнительной аутентификации покупателя передаются в объекте payments.requirements в ответах на запросы «Получение информации о счёте», «Создание платежа», «Завершение аутентификации покупателя».

    Параметр Обязательный Тип Описание
    threeDS Да object Данные для аутентификации банковских карт по протоколам 3DS и 3DS2.0

    Устройство клиента

    Информация об устройстве клиента передаётся в объекте deviceData.

    Параметр Обязательный Тип Описание
    ip Да string(39) IP-адрес клиента
    userAgent Нет string(256) Браузер клиента
    screenResolution Нет string(64) Разрешение экрана терминала клиента
    fingerprint Нет string(64) Уникальный идентификатор устройства клиента
    datetime Нет string(26) Локальное время клиента
    timeOnPage Нет integer Время просмотра веб-страницы браузера

    Характеристики изображения QR-кода

    Параметры QR-кода передаются в объекте qrCode.image запроса на создание QR-кода СБП и ответа на этот запрос.

    Параметр Обязательный Тип Описание Где используется
    content Да string Изображение QR-кода (Base64-encoded) Ответ
    mediaType Нет string Тип изображения.
    Допустимые значения: image/png, image/svg+xml
    Запрос, ответ
    width Нет number Ширина изображения в пикселях.
    Целое число в диапазоне 200 - 1000
    Запрос, ответ
    height Нет number Высота изображения в пикселях.
    Целое число в диапазоне 200 - 1000
    Запрос, ответ