Вопросы
baas_support@qiwi.com
NAV Navbar
Примеры

CARDS-LIFECYCLE API

Последнее обновление: 12-05-2022

Интерфейс предназначен для управления жизненным циклом карты с помощью сервиса Cards-lifecycle.

Взаимодействие между сервером Cards-lifecycle и сервером партнера происходит по защищенному сетевому протоколу (HTTPS).

Данные при запросах на сервер Cards-lifecycle передаются в формате параметров HTTP-запроса в кодировке UTF-8. В ответе данные возвращаются в формате JSON.

Авторизация

Поддерживаются только HTTPS-запросы. HTTP-запросы по нешифрованному каналу не поддерживаются.

Схема аутентификации - Bearer.

В HTTP-заголовке запроса Authorization передаётся bearer-токен.

--header "Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******"

Bearer-токен выдается партнеру при интеграции.

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

Взаимодействие через API

Создать заказ на выпуск карты

Метод можно использовать для выпуска как виртуальной, так и физической карты.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders/1ab
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
"clientId": "1",
"accountId": "Account1"
"cardType": "VIRTUAL",
"personPhone": "9515485777"
}'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого происходит выпуск карты: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
orderId Обязательный параметр URL запроса. Уникальный идентификатор заказа карты в системе партнера ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
clientId string
Обязательный параметр. Уникальный идентификатор клиента в системе партнера: партнер передает id клиента, созданного по Clients API, для которого выпускается карта
^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456
accountId string
Обязательный параметр. Идентификатор счета в системе партнера: партнер передает id конкретного счета клиента, созданного по Clients API, к которому привязывается карта
^[A-Za-z0-9-]{1,100}$ Acc-123-DEF-456
cardType string
Обязательный параметр. Тип карты
  VIRTUAL
personPhone string
Обязательный параметр. Телефон пользователя, привязывается к карте. Используется для 3DS авторизации. Только цифры (от 11 до 16) с указанием кода страны.
^\d{11,16}$ 79261234567

Ответ ←

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

{
    "orderId": "1ab",
    "productId": "best-partner",
    "clientId": "1",
    "orderStatus": "DELIVERED",
    "cardType": "VIRTUAL",
    "cardInsensitiveInfo": {
        "cardTokenId": "100000000001",
        "cardType": "VIRTUAL",
        "maskedPan": "4153****4697",
        "expiryDate": "04/2024",
        "status": "ACTIVE"
    },
    "personPhone": "9515485777",
    "accountId": "Account1"
}
Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
orderStatus string Статус заказа
cardType string Тип карты
cardInsensitiveInfo Object Нечувствительные данные карты
cardTokenId string Уникальный идентификатор (токен) карты
maskedPan string Маскированный PAN. Пример: 4153****4697
expiryDate string Дата окончания действия карты. Пример: 04/2024
status string Статус карты. Для виртуальной карты возвращается ACTIVE.
personPhone string Телефон пользователя, используется для 3DS авторизации
accountId string Идентификатор счета карты

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders/1ab
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "clientId": "1",
  "accountId": "Account1",
  "personPhone": "9515485777",
  "cardType": "PHYSICAL",
  "design": {
    "code": "D1"
  },
  "cardHolder": {
      "embossedName" : "IVAN LOMONOSOV",
      "firstName" : "Иван",
      "lastName" : "Ломоносов",
      "middleName" : "Васильевич"
    },
  "delivery": {
    "methodId": "33",
    "address": {
      "postCode": "117525",
      "countryCode": "RU",
      "regionName": "Moscow",
      "cityName": "Moscow",
      "address": "Yuzhnoe Chertanovo",
      "address2": "ul.Bolshaya Dvoryanskaya 140A 43",
      "countryPhoneCode": "+7",
      "phone": "9515485777"
    }
  }
}'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого происходит выпуск карты: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
orderId Обязательный параметр URL запроса. Уникальный идентификатор заказа карты в системе партнера ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
clientId string
Обязательный параметр. Уникальный идентификатор клиента в системе партнера: партнер передает id клиента, созданного по Clients API, для которого выпускается карта
^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456
accountId string
Обязательный параметр. Идентификатор счета в системе партнера: партнер передает id конкретного счета клиента, созданного по Clients API, к которому привязывается карта
^[A-Za-z0-9-]{1,100}$ Acc-123-DEF-456
cardType string
Обязательный параметр. Тип карты
  PHYSICAL
personPhone string
Обязательный параметр. Телефон пользователя, используется для 3DS авторизации. Только цифры (от 11 до 16) с указанием кода страны.
^\d{11,16}$ 79261234567
design object
Обязательный параметр. Информация о дизайне карты
   
code string
Обязательный параметр. Код дизайна карты
   
cardHolder object
Обязательный параметр для персонифицированных карт, необязательный — для анонимных. Информация о владельце карты.
   
embossedName string
Имя владельца карты: отображается на карте. Обязательно, если заполняется cardHolder
   
firstName string
Имя владельца карты. Используется для доставки карты. Обязательно, если заполняется cardHolder
   
lastName string
Фамилия владельца карты. Используется для доставки карты. Обязательно, если заполняется cardHolder
   
middleName string
Отчество владельца карты или доп. имя. Используется для доставки карты. Обязательно, если заполняется cardHolder
   
delivery object
Обязательный параметр. Информация о доставке
   
methodId string
Обязательный параметр. Способ доставки
   
address object
Обязательный параметр. Информация об адресе
   
postCode string
Обязательный параметр. Почтовый индекс
   
countryCode string
Обязательный параметр. Код страны в соответствии со стандартом ISO 3166-1 (alpha-2). Строго 2 символа.
   
regionName string
Регион. Не допускается использование символа #.
   
cityName string
Обязательный параметр. Город. Не допускается использование символа #.
   
address string
Обязательный параметр. Адрес получателя. Не допускается использование символа #.
   
address2 string
Дополнительный адрес получателя или вторая строка адреса. Не допускается использование символа #. Важно! Поле address2 сейчас не передается в службу доставки. Необходимо использовать поле address.
   
countryPhoneCode string
Телефонный код страны. Может состоять не более чем из 10 цифр.
  +7, 44
phone string
Обязательный параметр. Номер телефона получателя. Используется для связи курьера с получателем.
   

Ответ ←

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

{
    "orderId": "1ab",
    "productId": "best-partner",
    "clientId": "1",
    "accountId": "Account1",
    "orderStatus": "ORDERED",
    "cardHolder": {
        "embossedName": "IVAN LOMONOSOV",
        "firstName": "Иван",
        "lastName": "Ломоносов",
        "middleName": "Васильевич"
    },
    "design": {
        "code": "D1"
    },
    "delivery": {
        "methodId": "33",
        "address": {
            "postCode": "117525",
            "countryCode": "RU",
            "regionName": "Moscow",
            "cityName": "Moscow",
            "address": "Yuzhnoe Chertanovo",
            "address2": "ul.Bolshaya Dvoryanskaya 140A 43",
            "countryPhoneCode": "+7",
            "phone": "9515485777"
        }
    },
    "cardType": "PHYSICAL",
    "cardInsensitiveInfo": {
        "cardTokenId": "",
        "cardType": "PHYSICAL",
        "maskedPan": "",
        "expiryDate": "08/2019",
        "embossedName": "M.LOMONOSOV",
        "status": "IN_PROGRESS_OF_CREATION"
    }
}
Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
accountId string Идентификатор счета
orderStatus string Cтатус заказа
cardType string Тип карты
cardHolder string Информация о владельце карты
embossedName string Имя владельца карты (отображается на карте)
firstName string Имя владельца карты
lastName string Фамилия владельца карты
middleName string Отчество владельца карты (или доп. имя)
design object Информация о дизайне карты
code string Код дизайна карты
delivery object Информация о доставке
methodId string Способ доставки
address object Информация об адресе доставки
postCode string Почтовый индекс
countryCode string Код страны
regionName string Регион
cityName string Город
address string Адрес получателя
address2 string Дополнительный адрес получателя
countryPhoneCode string Tелефонный код страны
phone string Номер телефона получателя
cardType string Тип карты

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить номер телефона, привязанного к карте

В запросе на выпуск карты указывается номер телефона клиента для 3DS авторизации при покупках с карты. Для успешной покупки по карте в сервисе Cards-lifecycle должен храниться актуальный номер телефона клиента, привязанный к этой карте.

Метод возвращает номер телефона, привязанный к карте клиента на момент запроса.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/phone
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта, выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001

Ответ ←

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

{
  "personPhone" : "9515485777"
}
Параметр Описание
personPhone string
Номер телефона получателя, привязанный к карте.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Сменить номер телефона

В запросе на выпуск карты указывается номер телефона клиента для 3DS авторизации при покупках с карты. Для успешной покупки по карте в сервисе Cards-lifecycle должен храниться актуальный номер телефона клиента, привязанный к этой карте.

Метод позволяет сменить номер телефона клиента для его карты в сервисе на актуальный.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/phone
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "personPhone" : "9515485777"
}'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001
personPhone string
Обязательный параметр. Номер телефона получателя, привязанный к карте.
^\d{11,16}$ 79261234567

Ответ ←

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

{
  "personPhone" : "9515485777"
}
Параметр Тип Описание
personPhone string Новый номер телефона получателя, привязанный к карте.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить информацию о всех заказах клиента на выпуск карты

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders?clientId=1
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
clientId Обязательный параметр URL запроса. Уникальный идентификатор клиента в системе партнера: партнер передает id клиента, для которого были выпущены карты согласно данному разделу ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456

Ответ ←

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

[
    {
        "orderId": "1ab",
        "productId": "best-partner",
        "clientId": "1",
        "orderStatus": "DELIVERED",
        "cardType": "VIRTUAL",
        "cardInsensitiveInfo": {
            "cardTokenId": "100000000001",
            "cardType": "VIRTUAL",
            "maskedPan": "4153****4697",
            "expiryDate": "04/2024",
            "status": "ACTIVE"
        },
        "personPhone": "9515485777",
        "accountId": "Account1"
    }, 
    {
        "orderId": "1ab",
        "productId": "best-partner",
        "clientId": "1",
        "accountId": "Account1",
        "orderStatus": "ORDERED",
        "cardHolder": {
            "embossedName": "IVAN LOMONOSOV",
            "firstName": "Иван",
            "lastName": "Ломоносов",
            "middleName": "Васильевич"
        },
        "design": {
            "code": "D1"
        },
        "delivery": {
            "methodId": "33",
            "address": {
                "postCode": "117525",
                "countryCode": "RU",
                "regionName": "Moscow",
                "cityName": "Moscow",
                "address": "Yuzhnoe Chertanovo",
                "address2": "ul.Bolshaya Dvoryanskaya 140A 43",
                "countryPhoneCode": "+7",
                "phone": "9515485777"
            }
        },
        "cardType": "PHYSICAL",
        "cardInsensitiveInfo": {
            "cardTokenId": "",
            "cardType": "PHYSICAL",
            "maskedPan": "",
            "expiryDate": "08/2019",
            "embossedName": "M.LOMONOSOV",
            "status": "IN_PROGRESS_OF_CREATION"
        }
    }   
]

В ответе возвращается массив объектов.

Формат объекта с информацией о заказе виртуальной карты:

Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
orderStatus string Статус заказа
cardType string Тип карты
cardInsensitiveInfo Object Нечувствительные данные карты
cardTokenId string Уникальный идентификатор (токен) карты
maskedPan string Маскированный PAN. Пример: 4153****4697
expiryDate string Дата окончания действия карты. Пример: 04/2024
status string Статус карты. Для виртуальной карты возвращается ACTIVE.
personPhone string Телефон пользователя, используется для 3DS авторизации
accountId string Идентификатор счета карты

Формат объекта с информацией о заказе физической карты:

Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
accountId string Идентификатор счета
orderStatus string Статус заказа
cardType string Тип карты
cardHolder string Информация о владельце карты
embossedName string Имя владельца карты (отображается на карте)
firstName string Имя владельца карты
lastName string Фамилия владельца карты
middleName string Отчество владельца карты (или доп. имя)
design object Информация о дизайне карты
code string Код дизайна карты
delivery object Информация о доставке
methodId string Способ доставки
address object Информация об адресе доставки
postCode string Почтовый индекс
countryCode string Код страны
regionName string Регион
cityName string Город
address string Адрес получателя
address2 string Дополнительный адрес получателя
countryPhoneCode string Tелефонный код страны
phone string Номер телефона получателя
cardType string Тип карты

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить информацию о заказе на выпуск карты

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders/1ab
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
orderId Обязательный параметр URL запроса. Уникальный идентификатор заказа карты в системе партнера: партнер передает id заказа, в котором была выпущена карта согласно данному разделу ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456

Ответ ←

Пример ответа для виртуальной карты

    {
        "orderId": "1ab",
        "productId": "best-partner",
        "clientId": "1",
        "orderStatus": "DELIVERED",
        "cardType": "VIRTUAL",
        "cardInsensitiveInfo": {
            "cardTokenId": "100000000001",
            "cardType": "VIRTUAL",
            "maskedPan": "4153****8641",
            "expiryDate": "04/2024",
            "status": "ACTIVE"
        },
        "personPhone": "9515485777",
        "accountId": "Account1"
    }

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

{
    "orderId": "1ab",
    "productId": "best-partner",
    "clientId": "1",
    "accountId": "Account1",
    "orderStatus": "ORDERED",
    "cardHolder": {
        "embossedName": "IVAN LOMONOSOV",
        "firstName": "Иван",
        "lastName": "Ломоносов",
        "middleName": "Васильевич"
    },
    "design": {
        "code": "D42"
    },
    "delivery": {
        "methodId": "33",
        "address": {
            "postCode": "117525",
            "countryCode": "RU",
            "regionName": "Moscow",
            "cityName": "Moscow",
            "address": "Yuzhnoe Chertanovo",
            "address2": "ul.Bolshaya Dvoryanskaya 140A 43",
            "countryPhoneCode": "+7",
            "phone": "9515485777"
        }
    },
    "cardType": "PHYSICAL",
    "cardInsensitiveInfo": {
        "cardTokenId": "",
        "cardType": "PHYSICAL",
        "maskedPan": "",
        "expiryDate": "08/2019",
        "embossedName": "IVAN LOMONOSOV",
        "status": "IN_PROGRESS_OF_CREATION"
    }
}

Структура возвращаемого объекта зависит от типа заказанной карты.

Формат объекта с информацией о заказе виртуальной карты:

Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
orderStatus string Cтатус заказа
cardType string Тип карты
cardInsensitiveInfo Object Нечувствительные данные карты
cardTokenId string Уникальный идентификатор (токен) карты
maskedPan string Маскированный PAN. Пример: 4153****4697
expiryDate string Дата окончания действия карты. Пример: 04/2024
status string Статус карты. Для виртуальной карты возвращается ACTIVE.
personPhone string Телефон пользователя, используется для 3DS авторизации
accountId string Идентификатор счета карты

Формат объекта с информацией о заказе физической карты:

Параметр Тип Описание
orderId string Уникальный идентификатор заказа карты в системе партнера
productId string Идентификатор продукта
clientId string Уникальный идентификатор клиента в системе партнера
accountId string Идентификатор счета
orderStatus string Cтатус заказа
cardType string Тип карты
cardHolder string Информация о владельце карты
embossedName string Имя владельца карты (отображается на карте)
firstName string Имя владельца карты
lastName string Фамилия владельца карты
middleName string Отчество владельца карты (или доп. имя)
design object Информация о дизайне карты
code string Код дизайна карты
delivery object Информация о доставке
methodId string Способ доставки
address object Информация об адресе доставки
postCode string Почтовый индекс
countryCode string Код страны
regionName string Регион
cityName string Город
address string Адрес получателя
address2 string Дополнительный адрес получателя
countryPhoneCode string Tелефонный код страны
phone string Номер телефона получателя
cardType string Тип карты

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить информацию по всем картам клиента

Метод возвращает следующую информацию по всем картам клиента с указанным идентификатором:

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/client/1/cards
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
clientId Обязательный параметр URL запроса. Уникальный идентификатор клиента в системе партнера: партнер передает id клиента, для которого были выпущены карты согласно данному разделу ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456

Ответ ←

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

[
    {
        "cardTokenId": "100000000001",
        "cardType": "VIRTUAL",
        "maskedPan": "4153****6977",
        "expiryDate": "04/2024",
        "status": "ACTIVE"
    },
    {
        "cardTokenId": "",
        "cardType": "PHYSICAL",
        "maskedPan": "",
        "expiryDate": "08/2019",
        "embossedName": "IVAN LOMONOSOV",
        "status": "ACTIVE"
    }
]

В ответе возвращается массив объектов со следующей структурой:

Параметр Тип Описание
cardTokenId string Уникальный идентификатор (токен) карты
cardType string Тип карты
maskedPan string Маскированный PAN. Пример: 4153****4697
expiryDate string Дата окончания действия карты. Пример: 04/2024
embossedName string Имя владельца карты (отображается на карте)
status string Статус карты. Для виртуальной карты возвращается ACTIVE.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить информацию по карте

Метод возвращает следующую информацию по карте с указанным идентификатором:

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001

Ответ ←

Пример ответа для виртуальной карты

{
    "cardTokenId": "100000000001",
    "cardType": "VIRTUAL",
    "maskedPan": "4153****8641",
    "expiryDate": "04/2024",
    "status": "ACTIVE"
}
Параметр Тип Описание
cardTokenId string Уникальный идентификатор (токен) карты
cardType string Тип карты
maskedPan string Маскированный PAN. Пример: 4153****4697
expiryDate string Дата окончания действия карты. Пример: 04/2024
status string Статус карты. Для виртуальной карты возвращается ACTIVE.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить PAN и CVV карты

Метод возвращает PAN и CVV только для виртуальной карты.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/sensitive?encryptionSpec=RSA_4096_X509&publicKey=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhq7i9suuLXC%2Bww1YKT44NehX1TMcrYkYTSXDkGCV%2BDEKtmU686alatDsCtF0OAeyB9xLsCmAIs8UxEZz0ok5hYCG4%2BiJJ3ateOPPiroMasIcbvxCO%2B7VdWLOs5d2J%2Bhms4h507V0e7xl/iscIHPHQDHCqRNMrJ2ER0L0TOK8WOhRofc6op9ABqySp57GEW6YLm/lqnhSyslejtciFu1qmIC1weo%2BY2UrDofRAIrIxPGeH9wRfNjgp02FnXuhuxupajUKHzZmqqDTFCKlZcpwDKrqIhC4XUjudmy7tuJnAATLgiksd1tTdlZP0sJPhbeHfST8wddqGfyDqmTyaQT8Hqio3zLe63PhFZ8siHyT1AwcvYsCIuFOGuY29Nu3XowKTjnNcTOym4odrot5PRHKOgIVVjV/CDHHsgFlIRxAEaNAjCv7T2c98OgI7ZVHt3mfe8S0iQFRUpesl0bmSM8KKJnfvfVljVnzv8juDVnKNWuAIKpg7%2BNNDAqhuofozeTg/SBpltPAq5lXW52CqWjS7W0kkCq1lDMGzIShOPptnJ9bnhuggWaKb%2B/Mh07cxmZebuwFclWbd%2BjLJMMLDDf0G3tl8pPr33O4Y/YwyJ54YBTjzl%2BB0O4OF1o03T1w%2BaKkvteftArFTLvgKZQo8DO93d6VKhcpMYvRhYuo3nwy0ssCAwEAAQ%3D%3D
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001
encryptionSpec Обязательный параметр URL запроса. Алгоритм шифрования.   RSA_4096_X509
publicKey Обязательный параметр URL запроса. RSA X509 public key длиной 4096 бит, закодированный в base64 формате. Достаточно один раз выпустить приватный и публичный ключи и передавать один и тот же публичный ключ в каждом новом запросе. Свой публичный ключ выпускается и передается для каждого отдельного клиента: для мобильного приложения, для web и т.д.   См. пример запроса

Ответ ←

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

{
    "encryptedPan": "A5NKL6tKtx+/xjbuQMgHpWhWLqHZjDLO80BsSv5I8apcKKpSr2n8X9X3EiznpPUtM9f1SmcjEMYMqouqQ/i7P1PTw/a+3nAFyQFDGh8B0mqdlwg9K/FiRgqPb31o7CRou5BK36VwToyZ936y1XKjHcD8dHoNYvsKtU2e2HJMfhaZBac6Lr/bkPsXNgOBhboMgsert1Z+3RUuJVIqMn8XwyxiymCnIwmGOXqzjjmVBhGgwqf+rYdVFhCFG8OfdktwxSssKMak7BuFfKjdWJdxeO6svhh/opgJ2ag70T1kEn7ryppjC+/fGYrBzR1g24qU2oJ5Nh2djjRB1W3rYWCzywNFv72yhQOpb5wMNzICg4OXvyJgoBHe1wONmYCgwG9mcn44gnOXIWoeF0uhx4y9qCh28re5J5rmBjEWG37A7eEOZpxQww1j2cH9ZBOLt36+wsUjMoCLzZV0YFi9m8wVMoW54WRM0SCKJ/UsX28uS5A5GXAhGYf/bbq+ysio65FIw7qGL3lmOrZPruUXgS0S6jfO0kla2iqprz5En/FucmeAxHDHi8KRtoos4ZdGDCCFqzCTvpPa/yjg1PrtrO2GEOlH1H6JmI85xUNWdoWQKCJW+ep8OpftVLEt8ozlqx9GREMlxa6+cuWTnYXg0OF4DOAji1FxPhkuJwuak9iRNd4=",
    "encryptedCvv": "f5mhzunv8C71s96oAbjpXZwvvPaGkK3hskDogxFbK8gDd2hpgvBTjqPlUgGQqe6EJCWzDAAM3nXrDUfFFA44Vtcg+sGN05yn/nufkDjt0bxryBrFy5Y4pnbLyG0XtQX5YdWtzBaVvH5+rcHTv8EyrBi00Rs8qaIHrCIo1YGr3IWPJ6Mr/PKu1xfpeKtBOuAJEX/nBL94fK8Rx+ZtFZGN7bu22IFdHLQT0D7H8FkGhN9ejTLlb8pFWoos5+Hze3ipp8y1jjgAK5hM6NzWMPYzHBcAJXXd/w8TfT21EHnQDZCPJJ1jEzMLjz53s19lrv5tCXylCEnWaS6KvqJgmTNgZfF1E0Bx2XdlOK3H1GJwumTB7r8kYApamy1sObIBwqvLSKK8SWeUh8Zsg/PiJqkgcd+ixrazTob2wQ7mP+ylwggkc4t5HRoj7owIve8m38WY3uTZjPwSI+1jX+Ju6xukgtiY9VJ9R+5Xr6YxYu+F2MIYOKHGRPb4kHwrT08l/eYRS4mNtCXa+B9ddk3P6JRe6z7geMClmkxPq1rY32b6k0TJP7BIb/+fiFUfWXAbOl9tDTOzkMWYAS/OLnJYit599rLO79FLmxeuJyVyfrIH35mRwTnxr3zGla1UrIK4HDeJgVgcGXg+/iCeO3XCKyyXSBDJRJtuHzLkML7m7pJK7Y4="
}
Параметр Тип Описание
encryptedPan string шифрованный PAN карты (RSA)
encryptedCvv string шифрованный CVV-код (RSA)

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Сгенерировать платежный токен карты

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

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/paymenttoken
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001

Ответ ←

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

{
  "paymentTokenId" : "a2232f25-f224-4087-96d0-be2c6b440b12",
  "validTill" : "2026-09-30T00:00:00+03:00"
}
Параметр Тип Описание
paymentTokenId string Уникальный платежный токен
validTill URL-закодированная строка ГГГГ-ММ-ДДTЧЧ:ММ:ССZ Дата и время окончания действия платежного токена

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить шифрованные данные при токенизации карты в ApplePay

Запрос → POST

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/112345678910/bind-apple-pay \
 -X POST \
 -H 'Content-Type: application/json;charset=UTF-8' \
 -H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******' \
 -H 'User-Agent-Origin: ios' \
 -d '{ \
  "nonce": "9c023092", \
  "nonceSignature" : \ "4082f883ae62d0700c283e225ee9d286713ef74456ba1f07376cf17d71bf0be013f926d486619394060ced56030f41f84df916eaab5504e456a8530dc9c821f6ed3e3af62b5d8f3e4a22ca2018670fee4e", \
  "publicCerts" : ["base64appleCertstring"] \
  }'

Поля, получаемые в iOS приложении от Apple Wallet в процессе токенизации:

См. шаг 4 главы "V. In-App Provisioning Flow" документации "Getting Started with Apple Pay In-App Provisioning".

Ответ

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

  {
    "activationDataBase64" : "base64string",
    "encryptedDataBase64" : "base64string",
    "ephemeralPublicKeyBase64" : "base64string"
  }

Поля ответа соответствуют спецификации Apple (7 шаг главы "V. In-App Provisioning Flow" документации "Getting Started with Apple Pay In-App Provisioning") для дальнейшей передачи в Apple Wallet.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Активировать карту

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/asd/activationstatus
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId string
Обязательный параметр. Идентификатор продукта: выдается партнеру при интеграции
^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId string
Обязательный параметр. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты
^[A-Za-z0-9-]{1,100}$ 100000000001

Ответ ←

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

HTTP/1.1 200 OK

ACTIVATED_BY_AGENT

Возможные значения ответа:

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить статус активации карты

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/asd/activationstatus
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'

Описание параметров запроса см. в данном разделе.

Ответ ←

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

HTTP/1.1 200 OK

ACTIVATED_BY_AGENT

Возможные значения ответа:

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Сменить PIN карты

Передаваемый PIN-код должен быть зашифрован на устройстве пользователя и передан в параметре encryptedPin запроса. Для шифрования необходимо использовать публичный ключ (RSA, 4096 бит). Чтобы получить ключ, отправьте запрос Получить публичный ключ. В качестве алгоритма шифрования PIN-кода используется OpenPGP.

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

Не допускается долгосрочное кеширование полученного публичного ключа.

Для подготовки и отправки запроса на смену PIN-кода рекомендуется использовать следующий алгоритм:

  1. Пользователь приложения (сайта) выбирает функцию "Сменить PIN-код".
  2. Приложение (сайт) отправляет запрос на сервер партнера.
  3. Сервер партнера отправляет запрос на получение публичного ключа (и его версии) на сервер банковской платформы.
  4. Сервер банковской платформы в ответ на запрос возвращает публичный ключ (и его версию).
  5. Сервер партнера передает эту информацию приложению (сайту) в ответ на его запрос.
  6. Приложение (сайт) шифрует PIN-код с помощью полученного публичного ключа.
  7. Приложение (сайт) передает зашифрованный PIN-код и версию публичного ключа на сервер партнера.
  8. Сервер партнера отправляет запрос на смену PIN-кода на сервер банковской платформы.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/pin
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "encryptedPin" : "hQIMA6gqMockrlJ2ARAAjFevJDZFIeOITUENZtGGimV/aPc/CH5Ezul96rlom0vadqVlhOq09LV4hW8ek3Z9LnRU6xFEAJ6O/NozuMNSIGnTEA4rxsmp6gMTVEeaLeeoX4zqBvKdUwvKN/AgQUysH8pSd2rN63Ou/Fj9CLN3Xeu/PRiYICUflXeKZYbzOKZkY7KIrLVlmx2HypzY/SPQLeLzE9sN1IQz+JhWfre10LLS9GEwgk56dWbHhUws1BO05OS+orRJd3Pcmb+6KLCQO+6sFzGoua2PuZhSu6tgtAhE6nbv0DRG3f4aUKl9t6NUDFfID28mOcTKWFYVwnih5IYRVB7KOK5SOB5TxWTWXR8d3l6RJ476jnIE3e3+iWp25Ki46qt4NYi2NHYIpslHc5kBs2oa4DvE6NG66dL0Vw1hFznX0vH9Bn0O+SCWtsPOqu+0FHLiumPUvpBwgozOVs7IcuI3Q5jfYq6fDxVl2R4Sq22WmvZbcj227WUHxYqp1BT7aIm5mM6VPIFRDV/LarVghYGG8O0gfnuC8Z+V8owkUMZWwK0/uf9wj7I1OYHrpYAVHyOOLXS0kRGsxt5Tz6aXkyMLoaFomHH+ihHsgysYwFFAO5f0HABochP6Mg70EMVxsRs2JuMNMMj5THOPOYPtH4X0fk10YvfgoWwku+AekqV2vLaPN01y/U491+HSPwENiBVPyvTnD+fXsuvZawVwECPLCMuJULjH1Nd0rqdDKxFQvyukubZ4Q4o2fNDOwGQsuJU7BGrN/PyMDx5JWw==",
  "publicKeyVersion" : "20200614"
}'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
cardTokenId Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты: партнер передает id карты, который получил в ответе на запрос выпуска карты ^[A-Za-z0-9-]{1,100}$ 100000000001
encryptedPin string
Обязательный параметр. Зашифрованный PIN-код карты (^\d{4}|$), который задал пользователь. Шифруется ключом при помощи алгоритма OpenPGP
  См. пример запроса
publicKeyVersion string
Обязательный параметр. Версия публичного ключа.
  См. пример запроса

Ответ ←

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

HTTP/1.1 204 No Content

При успешном выполнении запроса в ответе необходимо ожидать HTTP Status: 204 No Content.

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить публичный ключ

Публичный ключ необходим для шифрования PIN-кода карты.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/encryption/publickey
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456

Ответ ←

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

{
    "publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF2l91YBEADY7stigMDgCFaOSEHo4eXbX73wWB3vGhBNC0yGGlrv7ip1IAn+\nGomTBS2aKU1/hzoSyUfHQdgcMzY5VsU6wqeTpYGh1dDluX3+9bG9fn/spYUzChHu\nRz8Jb4QgYwyj4BDX9VNYE92ZKyQ7oYx5cnp9xYxXqTw/rLL7RblTnccB8AyWjfZe\nbqyNbJZsgWPGqNl955XwTz5SXsLpMrzJAbGUslz+tLdRMJhCeGaPsajS5WuWPuxQ\nGUwbzZEkyNKYlHWca6KD2zCEROi0G0sZXSaY8VCgKOVLFUoteUNGIbBKZBCENbcB\n9myI54W9ATUOi23xELsDchGSOWFqqLanRpVa4OIYRHZtIcDYbUoSSoU1ynanZvFP\nF+ycZa2xgwyKpwc5YL1BkxmUl1mn6Wm6fbMWf7PpmOXpFkoFnZu35WkGBtWkuLX2\nd3LtPFtW7MOby7+fgMc2WawVsLpaLXpwstQhurGNTYmsod1wuvhDrmM5oK806VtX\nprTXaklD2A/EOe/ZyUvlTNewOTbBMcuOPO3K5mSIdntLACClpUSFSaUlzHl1b4sc\nJzLh5KshghImfw9tIRDQavPriF5chbp048P7ismd2t24k1ef5ynCq34GWeD1LIEc\n16UzB8YE5UhSaFCNrCg7AvTyp4xtIQqp+pqR0pMdWhHgIDmj31/1T1lMIQARAQAB\n=AVgg\n-----END PGP PUBLIC KEY BLOCK-----\n",
    "version": "20200614"
}
Параметр Тип Описание
publicKey string Ключ, с помощью которого шифруется PIN
version string Версия ключа, которую необходимо передавать в параметре publicKeyVersion запроса "Сменить PIN-код"

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

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Блокировать карту

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/blockedstatus 
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '
{
  "comment" : "Потерял карту",
  "blockSource" : "PARTNER_API"
}
'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
comment string
Комментарий к блокировке: например, причина блокировки.
   
blockSource string
Обязательный параметр. Источник блокировки: необходимо передавать PARTNER_API
  PARTNER_API

Ответ ←

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

{
  "comment" : "Потерял карту",
  "blockSource" : "PARTNER_API"
}
Параметр Тип Описание
comment string Комментарий
blockSource string Источник блокировки

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Получить статус блокировки карты

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/blockedstatus 
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание REGEX Пример
productId Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
comment string
Комментарий к блокировке: например, причина блокировки.
   
blockSource string
Обязательный параметр. Источник блокировки: необходимо передавать PARTNER_API
  PARTNER_API

Ответ ←

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

{
  "comment" : "Потерял карту",
  "blockSource" : "PARTNER_API"
}
Параметр Тип Описание
comment string Комментарий
blockSource string Источник блокировки

Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.

Источник блокировки

Код Описание
PARTNER_API Блокировка со стороны партнера
QIWI Блокировка со стороны QIWI

Управление правилами и группами

Правило — одно условие, по которому проверяется, может ли быть проведена карточная авторизация. У карточной авторизации есть поля, которые проверяются по соответствующим условиям с префиксом filter (например, поле карточной авторизации MCC проверяется по параметру правила filterMcc). Для срабатывания правила карточная авторизация должна удовлетворять всем заданным параметрам правила. Не заполненный параметр фильтра не применяется. Если никакие правила не заданы, то по умолчанию все авторизации запрещены.

Для правила задается эффект срабатывания: разрешать (ALLOW), запрещать (DENY). Для разрешения всех карточных авторизаций можно создать правило с незаполненными фильтрами и эффектом ALLOW.

Группа – некоторое логическое объединение нескольких правил. Одно правило может быть привязано к нескольким группам или вовсе не быть привязанным ни к одной группе. В последнем случае правило не будет учитываться.

К одной карте можно привязать несколько групп.

Проверка карточных авторизаций выполняется в следующей последовательности:

  1. По карте формируется список правил на основании групп, привязанных к карте.
  2. Правила проверяются последовательно. Сначала проверяются DENY-правила. Если карточная авторизация удовлетворяет очередному такому правилу – она отклоняется с отправкой партнеру уведомления с соответствующим кодом ошибки и дальнейшие проверки не выполняются.
  3. Затем проверяются ALLOW-правила. Если карточная авторизация удовлетворяет очередному такому правилу – она допускается, дальнейшие проверки не происходят.
  4. Если под параметры карточной авторизации не попало ни одного правила, то эта авторизация будет отклонена с отправкой партнеру уведомления с соответствующим кодом ошибки.

Механизмы привязки карт к группам и проверки применения правил к карточным авторизациям находятся в разработке.

Создать правило

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rules/ruleid1example
  -X PUT
  -H 'Content-Type: application/json
  -H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
  -d '{
    "ruleEffect": "ALLOW",
    "filterMCC": "0742",
    "filterMerchantId": "12345678"
}'

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

HTTP/1.1 200 OK
Content-Type: application/json
{
  "ruleId" : "ruleid1example",
  "ruleEffect" : "ALLOW",
  "filterMCC": "0742",
  "filterMerchantId": "12345678",
  "actualFrom": "2022-04-30T00:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание правила: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила к которому в дальнейшем идет привязка групп. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
ruleEffect string
Обязательный параметр тела запроса. Эффект срабатывания правила(разрешить, запретить). Возможные значения: ALLOW, DENY
  ALLOW
filterMcc string
Условие правила: фильтр по MCC-коду карточной авторизации
  7210
filterMerchantNameMask string
Условие правила: строка фильтра по названию мерчанта merchantName, поддерживает метасимвол *, который означает ноль, один или несколько любых символов. Если нужно задать в фильтре символ * буквально, то его необходимо экранировать: \*
  MegaMarkt\*
filterMerchantId string
Условие правила: фильтр по идентификатору мерчанта
  12345678
filterTerminalId string
Условие правила: фильтр по идентификатору терминала
  123456789000
filterAcquirerId string
Условие правила: фильтр по идентификатору эквайера
  JP Morgan

В полях ответа присутствуют поля, установленные в запросе, а также поле actualFrom, которое указывает на время начала применения данного правила.

Получить информацию по правилу

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rules/ruleid1example
-X GET
-H 'Content-Type: application/json'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'

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

HTTP/1.1 200 OK
Content-Type: application/json
{
  "ruleId" : "ruleid1example",
  "ruleEffect" : "ALLOW",
  "filterMCC": "0742",
  "filterMerchantId": "12345678",
  "actualFrom": "2022-04-30T00:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого задано правило: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456

Описание полей ответа см. в разделе Создать правило.

Если перед вызовом правило было отключено, в теле ответа будет также присутствовать поле actualTill с таким же форматом даты, как и у поля actualFrom.

Отключить правило

Запрос → POST

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rules/ruleid1example/disable
-X POST
-H 'Content-Type: application/json
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'

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

HTTP/1.1 202 Accepted
Content-Type: application/json
{
    "ruleId" : "ruleid1example",
    "ruleEffect" : "ALLOW",
    "filterMCC": "0742",
    "filterMerchantId": "12345678",
    "actualFrom": "2022-04-30T00:00:00+03:00",
    "actualTill": "2022-04-30T00:15:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого задано правило: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456

Описание полей ответа см. в разделе Создать правило.

В качестве значения actualTill в ответе будет использовано текущее значение даты/времени + 15 минут (это время может измениться без уведомления партнера). Параметр actualTill указывает время, после которого правило будет считаться отключенным.

Если выполнить запрос на отключение правила после наступления actualTill, код состояния http вернется равным 200.

Создать группу правил

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/groups/groupid1example
-X PUT
-H 'Content-Type: application/json
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
-d '{}'

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

HTTP/1.1 200 OK
Content-Type: application/json
{
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-29T12:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example

В полях ответа присутствуют поля, установленные в запросе, а также поле actualFrom, которое указывает на время начала применения данной группы.

Получить информацию по группе

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-rules/group/groupid1example
-X GET
-H 'Content-Type: application/json'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'

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

HTTP/1.1 200 OK
Content-Type: application/json
{
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-29T12:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example

Если перед вызовом группа была отключена, в теле ответа будет также присутствовать поле actualTill с таким же форматом даты, как и у поля actualFrom.

Отключить группу

Запрос → POST

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/groups/groupid1example
-X POST
-H 'Content-Type: application/json
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
-d '{}'

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

HTTP/1.1 202 Accepted
Content-Type: application/json
{
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-30T00:00:00+03:00",
  "actualTill": "2022-04-30T00:15:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example

Параметр actualTill указывает время, после которого группа будет считаться отключенной. В качестве значения actualTill в ответе будет использовано текущее значение даты/времени + 15 минут (это время может измениться без уведомления партнера). Если выполнить запрос на отключение группы после наступления actualTill, код состояния http вернется равным 200.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rule-group-bindings/rule/ruleid1example/group/groupid1example
-X PUT
-H 'Content-Type: application/json
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
-d '{}'

Пример ответа, если наступило время, указанное в поле actualFrom в теле ответа

HTTP/1.1 200 OK
Content-Type: application/json
{
  "ruleId" : "ruleid1example",
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-30T00:00:00+03:00"
}

Пример ответа, если еще не наступило время, указанное в поле actualFrom в теле ответа

HTTP/1.1 202 Accepted
Content-Type: application/json
{
  "ruleId" : "ruleid1example",
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-30T00:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example

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

В рамках одного запроса можно связать одно правило с одной группой:

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rule-group-bindings/rule/ruleid1example/group/groupid1example
-X GET
-H 'Content-Type: application/json'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'

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

HTTP/1.1 200 OK
Content-Type: application/json
{
    "ruleId" : "ruleid1example",
    "groupId" : "groupid1example",
    "actualFrom": "2022-04-30T00:00:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example

Если связи не существует или срок actualTill уже наступил, то вернется код 404.

Запрос → DELETE

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

curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rule-group-bindings/rule/ruleid1example/group/groupid1example
-X DELETE
-H 'Content-Type: application/json'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'

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

HTTP/1.1 202 Accepted
Content-Type: application/json
{
  "ruleId" : "ruleid1example",
  "groupId" : "groupid1example",
  "actualFrom": "2022-04-30T00:00:00+03:00",
  "actualTill": "2022-04-30T00:15:00+03:00"
}
Параметр Описание Regex Пример
productId Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы: выдается партнеру при интеграции ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456
ruleId Обязательный параметр URL запроса. Идентификатор правила. ^[A-Za-z0-9-]{1,100}$ Abc-123-DEF-456
groupId Обязательный параметр URL запроса. Идентификатор группы. ^[A-Za-z0-9-]{1,100}$ groupid1example
  1. В рамках одного запроса можно удалить связь одного правила с одной группой.
  2. Если связь еще не была удалена ранее:

    a. В качестве значения поля ответа actualTill будет указано значение даты/времени + 15 минут (это время может измениться без уведомления партнера).

    b. В ответе возвращается код HTTP 202 ACCEPTED с телом, аналогичным ответу на запрос информации о привязке правила к группе.

  3. Если связь уже была удалена ранее, возвращается старая дата удаления (actualTill). HTTP-код ответа зависит от даты таким образом:

    a. Если actualTill ещё не наступил — возвращается код 202 ACCEPTED.

    b. Если actualTill наступил — возвращается код 404.

Статусы заказа на выпуск карты

Код Описание
ORDERED Заказ на выпуск карты оформлен
DELIVERED Карта выпущена (для виртуальных) или доставлена (для физических)
FAILED Ошибка, заказ не создан

Статусы карты

Код Описание
ACTIVE Активна
IN_PROGRESS_OF_CREATION В процессе создания: актуально для физических карт
BLOCKED Заблокирована

Типы карт

Код Описание
VIRTUAL Виртуальная
PHYSICAL Физическая

Формат ошибок API

В разделе описывается структура ответа на неуспешный запрос.

Ответ ←

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

{
    "serviceName": "openapi-cards-lifecycle",
    "errorCode": "client.not.found",
    "dateTime": "2020-07-23T20:13:22.290416+03:00",
    "traceId": "67477569e8bc6838"
} 
Название Описание
serviceName Имя сервиса, который вернул ошибку
errorCode Код ошибки. См. справочник кодов ошибок и справочник кодов внутренних ошибок
dateTime Дата и время формирование ответа
traceId Параметр, необходимый для анализа логов. Его значение также всегда присутствует в заголовке ответа X-B3-TraceId

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

Код Описание
order.bad.request.data Параметры запроса некорректны: относится к заказу на выпуск карты
order.not.found Заказ на выпуск карты не найден
order.already.created.with.different.client.id.or.account.id Заказ на выпуск карты уже создан или с другим идентификатором клиента или с другим идентификатором счета в банке
delivery.method.not.found Метод доставки не найден: актуально для физических карт
card.not.found Карта не найдена
product.not.found Продукт не найден
card.type.unsupported Выполнение этого действия невозможно для данной карты
card.blocked Карта заблокирована
auth.permission.denied Ошибка авторизации
client.not.found Клиент не найден
account.not.found Счет не найден
card.is.not.active Карта неактивна
identification.level.not.enough Текущий уровень идентификации клиента является недостаточным для совершения этого действия
client.blocked Клиент заблокирован
card.design.code.not.found Код дизайна карты не найден: актуально для физических карт
card.pin.incorrect Некорректный PIN
pin.decryption.error Ошибка шифрования PIN
public.key.invalid Невалидный публичный ключ
active.virtual.cards.count.exceeded Превышено допустимое количество виртуальных карт
apple.pay.encryption.error Ошибка шифрования данных для токенизации в Apple Pay: некорректный публичный сертификат
auth.forbidden Партнер не имеет права на выполнение операции
validation.error Ошибка валидации, проверьте корректность данных в запросе
card.auth.acl.rule.modification.prohibited Запрещено изменение правила
card.auth.acl.rule.not.found Правило не найдено
card.auth.acl.rule.disabled Правило отключено
card.auth.acl.group.disabled Группа была отключена
card.auth.acl.group.not.found Группа не найдена
card.auth.acl.rule.group.binding.is.being.deleted Привязка правила и группы в процессе удаления
card.auth.acl.rule.group.binding.not.found Привязка правила и группы не найдена

Справочник кодов внутренних ошибок

Описание всех перечисленных ошибок одинаковое: "В сервисе cards-lifecycle произошла внутренняя ошибка".

Код
openapi.cardlifecycle.internal.error
card.pin.change.internal.error
pan.is.null
card.phone.updating.error
bank.informing.internal.error
bank.card.info.internal.error
expiry.date.expected
card.token.id.expected
block.info.not.found
prc.operation.for.test.client.prohibited
card.offer.not.found
operation.for.card.not.supported
pan.length.invalid
card.status.not.activated