CARDS-LIFECYCLE API
Последнее обновление: 15-08-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
https://api-test.qiwi.com
— testing окружениеhttps://api.qiwi.com
— production окружение
Взаимодействие через API
Создать заказ на выпуск карты
Метод можно использовать для выпуска как виртуальной, так и физической карты.
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/orders/{orderId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса на выпуск виртуальной карты
Пример запроса на выпуск виртуальной карты
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",
"cardPaymentSystem": "MIR"
}'
Параметр | Описание | 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 Обязательный параметр. Уникальный идентификатор клиента, созданного по Clients API, в системе партнера. Партнер передает id клиента, для которого выпускается карта |
^[A-Za-z0-9-]{1,100}$ | Cnt-123-DEF-456 |
accountId | string Обязательный параметр. Идентификатор счета клиента, созданного по Clients API, в системе партнера. Партнер передает id конкретного счета, к которому привязывается карта |
^[A-Za-z0-9-]{1,100}$ | Acc-123-DEF-456 |
cardType | string Обязательный параметр. Тип карты |
VIRTUAL |
|
personPhone | string Обязательный параметр. Телефон пользователя, привязывается к карте. Используется для 3DS авторизации. Только цифры (от 11 до 16) с указанием кода страны. |
^\d{11,16}$ | 79261234567 |
cardPaymentSystem | string Тип платежной системы |
MIR |
Ответ ←
Пример ответа
{
"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",
"cardPaymentSystem": "MIR"
}
Параметр | Тип | Описание |
---|---|---|
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 | Идентификатор счета карты |
cardPaymentSystem | 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"
}
},
"cardPaymentSystem": "MIR"
}'
Параметр | Описание | 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 Обязательный параметр. Уникальный идентификатор клиента, созданного по Clients API, в системе партнера. Партнер передает id клиента, для которого выпускается карта |
^[A-Za-z0-9-]{1,100}$ | Cnt-123-DEF-456 |
accountId | string Обязательный параметр. Идентификатор счета, созданного по Clients API, в системе партнера. Партнер передает id конкретного счета клиента, к которому привязывается карта |
^[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 Обязательный параметр. Номер телефона получателя. Используется для связи курьера с получателем. |
||
cardPaymentSystem | string Тип платежной системы |
MIR |
Ответ ←
Пример ответа
{
"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"
},
"cardPaymentSystem": "MIR"
}
Параметр | Тип | Описание |
---|---|---|
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 | Тип карты |
cardPaymentSystem | string | Тип платежной системы |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить номер телефона, привязанного к карте
В запросе на выпуск карты указывается номер телефона клиента для 3DS авторизации при покупках с карты. Для успешной покупки по карте в сервисе Cards-lifecycle должен храниться актуальный номер телефона клиента, привязанный к этой карте.
Метод возвращает номер телефона, привязанный к карте клиента на момент запроса.
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/phone
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/phone
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
Ответ ←
Пример ответа
{
"personPhone" : "9515485777"
}
Параметр | Описание |
---|---|
personPhone | string Номер телефона получателя, привязанный к карте. |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Сменить номер телефона
В запросе на выпуск карты указывается номер телефона клиента для 3DS авторизации при покупках с карты. Для успешной покупки по карте в сервисе Cards-lifecycle должен храниться актуальный номер телефона клиента, привязанный к этой карте.
Метод позволяет сменить номер телефона клиента для его карты в сервисе на актуальный.
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/phone
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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 запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
personPhone | string Обязательный параметр. Номер телефона получателя, привязанный к карте. |
^\d{11,16}$ | 79261234567 |
Ответ ←
Пример ответа
{
"personPhone" : "9515485777"
}
Параметр | Тип | Описание |
---|---|---|
personPhone | string | Новый номер телефона получателя, привязанный к карте. |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию о всех заказах клиента на выпуск карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/orders?clientId={clientId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders?clientId=1
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF |
clientId | Обязательный параметр URL запроса. Уникальный идентификатор клиента, для которого были выпущены карты, в системе партнера | ^[A-Za-z0-9-]{1,100}$ | Cnt-123-DEF |
Ответ ←
Пример ответа
[
{
"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"
}
},
"cardPaymentSystem": "MIR"
]
В ответе возвращается массив объектов.
Формат объекта с информацией о заказе виртуальной карты:
Параметр | Тип | Описание |
---|---|---|
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 | Идентификатор счета карты |
cardPaymentSystem | 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 | Тип карты |
cardPaymentSystem | string | Тип платежной системы |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию о заказе на выпуск карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/orders/{orderId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/orders/1ab
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF |
orderId | Обязательный параметр URL запроса. Уникальный идентификатор заказа карты в системе партнера | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
Ответ ←
Пример ответа для виртуальной карты
{
"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",
"cardPaymentSystem": "MIR"
}
Пример ответа для физической карты
{
"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"
},
"cardPaymentSystem": "MIR"
}
Структура возвращаемого объекта зависит от типа заказанной карты.
Формат объекта с информацией о заказе виртуальной карты:
Параметр | Тип | Описание |
---|---|---|
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 | Идентификатор счета карты |
cardPaymentSystem | 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 | Тип карты |
cardPaymentSystem | string | Тип платежной системы |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию по всем картам клиента
Метод возвращает следующую информацию по всем картам клиента с указанным идентификатором:
- Уникальный идентификатор (токен) карты
- Маскированный PAN карты
- Дата окончания действия карты
- Статус карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/client/{clientId}/cards
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/client/1/cards
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
clientId | Обязательный параметр URL запроса. Уникальный идентификатор клиента, для которого были выпущены карты, в системе партнера | ^[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.
Получить информацию по карте
Метод возвращает следующую информацию по карте с указанным идентификатором:
- Уникальный идентификатор (токен) карты
- Маскированный PAN карты
- Дата окончания действия карты
- Статус карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[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
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/sensitive?encryptionSpec={encryptionSpec}&publicKey={publicKey}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
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 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[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
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/paymenttoken
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/paymenttoken
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[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.
Получить токен формы просмотра реквизитов карты
Метод возвращает токен и URL формы просмотра реквизитов карты. Подробнее о форме см. в документации BaaS.
Запрос → POST
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/sensitive/form-token
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100074269512/sensitive/form-token
-X POST
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | \^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | \^[A-Za-z0-9-]{1,100}$ | 100000000001 |
Ответ ←
Пример ответа
{
"formToken" : "0b96b8e82f93b00a4010a66e23adb9e1",
"formUrl" : "https://baas.qiwi.com/form/card-sensitive-info"
}
Параметр | Тип | Описание |
---|---|---|
formToken | String | Токен для формы просмотра реквизитов карты. |
formUrl | String | URL формы просмотра реквизитов карты. |
Получить шифрованные данные при токенизации карты в 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"] \
}'
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/bind-apple-pay
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- User-Agent-Origin: должен содержать
ios
Параметры запроса
productId
— Идентификатор продукта, в рамках которого создан клиент.cardTokenId
— Токен карты клиента.
Поля, получаемые в iOS приложении от Apple Wallet в процессе токенизации:
nonce
— строка hex;nonceSignature
— строка hex;publicCerts
— список строк в формате base64.
См. шаг 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.
activationDataBase64
— зашифрованное значение OTP в формате base64;encryptedDataBase64
— зашифрованное полезная нагрузка формате base64;ephemeralPublicKeyBase64
— публичная часть эфемерного ключа шифрования в формате base64.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Активировать карту
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/activationstatus
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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 | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ |
100000000001 |
Ответ ←
Пример ответа
HTTP/1.1 200 OK
ACTIVATED_BY_AGENT
Возможные значения ответа:
- ACTIVATED_BY_AGENT - карта активирована
- NOT_ACTIVATED - карта не активирована
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить статус активации карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/activationstatus
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/asd/activationstatus
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Описание параметров запроса см. в документации.
Ответ ←
Пример ответа
HTTP/1.1 200 OK
ACTIVATED_BY_AGENT
Возможные значения ответа:
- ACTIVATED_BY_AGENT - карта активирована
- NOT_ACTIVATED - карта не активирована
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Сменить PIN карты
Передаваемый PIN-код должен быть зашифрован на устройстве пользователя и передан в параметре encryptedPin
запроса. Для шифрования PIN-кода используется алгоритм OpenPGP с публичным ключом (RSA, 4096 бит). Чтобы получить ключ, отправьте запрос API Получить публичный ключ.
Публичный ключ необходимо получать перед каждым запросом на смену PIN-кода карты.
Не допускается долгосрочное кеширование полученного публичного ключа.
Для подготовки и отправки запроса на смену PIN-кода рекомендуется использовать следующий алгоритм:
- Пользователь приложения (сайта) выбирает функцию "Сменить PIN-код".
- Приложение (сайт) отправляет запрос на сервер партнера.
- Сервер партнера отправляет запрос на получение публичного ключа (и его версии) на сервер банковской платформы.
- Сервер банковской платформы в ответ на запрос возвращает публичный ключ (и его версию).
- Сервер партнера передает эту информацию приложению (сайту) в ответ на его запрос.
- Приложение (сайт) шифрует PIN-код с помощью полученного публичного ключа.
- Приложение (сайт) передает зашифрованный PIN-код и версию публичного ключа на сервер партнера.
- Сервер партнера отправляет запрос на смену PIN-кода на сервер банковской платформы.
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/pin
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[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
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/encryption/publickey
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/encryption/publickey
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF |
Ответ ←
Пример ответа
{
"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
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/blockedstatus
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
blockSource | string Обязательный параметр. Источник блокировки: необходимо передавать PARTNER_API |
PARTNER_API |
|
comment | string Комментарий к блокировке. Например, описание причины блокировки. |
Ответ ←
Пример ответа
{
"comment" : "Потерял карту",
"blockSource" : "PARTNER_API"
}
Параметр | Тип | Описание |
---|---|---|
comment | string | Комментарий |
blockSource | string | Источник блокировки |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить статус блокировки карты
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/blockedstatus
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/blockedstatus
-X GET
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
Ответ ←
Пример ответа
{
"comment" : "Потерял карту",
"blockSource" : "PARTNER_API"
}
Параметр | Тип | Описание |
---|---|---|
comment | string | Комментарий к блокировке |
blockSource | string | Источник блокировки |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Источник блокировки
Код | Описание |
---|---|
PARTNER_API | Блокировка со стороны партнера |
QIWI | Блокировка со стороны QIWI |
Зарегистрировать неименную пластиковую карту
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/register-physical-card
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/cards/100000000001/register-physical-card
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
-d '{
"accountId": "account1"
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ |
100000000001 |
accountId | string Обязательный параметр. Идентификатор счета клиента, созданного с помощью Clients API, в системе партнера. Партнер передает id конкретного счета, к которому привязывается карта |
^[A-Za-z0-9-]{1,100}$ | Acc-123-DEF-456 |
Ответ ←
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json
{
"cardTokenId": "100000000001",
"cardType": "PHYSICAL",
"maskedPan": "4153****6977",
"expiryDate": "04/2024",
"status": "ACTIVE",
"accountId": "account1"
}
Параметр | Тип | Описание |
---|---|---|
cardTokenId | string | Уникальный идентификатор (токен) карты |
cardType | string | Тип карты |
maskedPan | string | Маскированный PAN. Пример: 4153****4697 |
expiryDate | string | Дата окончания действия карты. Пример: 04/2024 |
embossedName | string | Имя владельца карты (отображается на карте) |
status | string | Статус карты |
accountId | string | Идентификатор счета клиента |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Привязать номер телефона и активировать карту
Активация и привязка номера телефона к ранее выпущенной и зарегистрированной в системе BaaS карте.
Запрос используется для активации карт, при выпуске которых не был известен номер телефона их будущего владельца (физического лица).
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/cards/{cardTokenId}/assign-phone-and-activate-card
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ |
100000000001 |
personPhone | string Обязательный параметр. Номер телефона владельца карты от 11 до 16 цифр в формате 71112223344 |
^\d{11,16}$ | 71112223344 |
Ответ
При успешном выполнении запроса в ответе ожидается HTTP Status: 204 No Content
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Управление правилами и группами
Правило — набор свойств, по которому проверяется, может ли быть проведена карточная авторизация. Каждое правило состоит из параметра ruleEffect
и условий с префиксом filter
. Для срабатывания правила карточная авторизация должна удовлетворять всем его условиям. Если никакие правила не заданы, то по умолчанию все авторизации запрещены.
В параметре ruleEffect
задается эффект срабатывания правила:
ALLOW
— разрешить авторизацию.DENY
— запретить авторизацию.
Поля карточной авторизации проверяются на соответствие условиям правила. Например, поле карточной авторизации MCC проверяется по условию правила filterMcc
. Незаполненное условие не проверяется. Сравнение строк производится без учета регистра.
Для разрешения всех карточных авторизаций можно создать правило с незаполненными фильтрами и эффектом ALLOW
.
Группа – некоторое логическое объединение нескольких правил. Одно правило может быть привязано к нескольким группам или не быть привязанным ни к одной группе. В последнем случае правило не будет учитываться.
К одной карте можно привязать несколько групп.
Проверка карточных авторизаций выполняется в следующей последовательности:
- По карте формируется список правил на основании групп, привязанных к карте.
- Правила проверяются последовательно. Сначала проверяются DENY-правила. Если карточная авторизация удовлетворяет очередному такому правилу – она отклоняется с отправкой партнеру уведомления с соответствующим кодом ошибки и дальнейшие проверки не выполняются.
- Затем проверяются ALLOW-правила. Если карточная авторизация удовлетворяет очередному такому правилу – она допускается, дальнейшие проверки не происходят.
- Если под параметры карточной авторизации не попало ни одного правила, то эта авторизация будет отклонена с отправкой партнеру уведомления с соответствующим кодом ошибки.
Создать правило
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rules/{ruleId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила к которому в дальнейшем идет привязка групп. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
ruleEffect | string Обязательный параметр тела запроса. Эффект срабатывания правила. Возможные значения: ALLOW (разрешить), DENY (запретить) |
ALLOW |
|
filterMcc | string Условие правила: фильтр по MCC-коду карточной авторизации |
7210 |
|
filterMerchantNameMask | string Условие правила: фильтр по названию мерчанта, поддерживает метасимвол % для выражения ноль, один или несколько любых символов. Чтобы задать в фильтре знак % буквально, экранируйте его знаком \ : \% . Знак \ в фильтре экранируйте аналогично: \\ . Т. е. \% и \\ в параметре обозначают знаки % и \ в названии мерчанта, соответственно. Одиночный неэкранированный знак \ приведет к ошибке. |
MegaMarkt% |
|
filterMerchantId | string Условие правила: фильтр по идентификатору мерчанта |
12345678 |
|
filterTerminalId | string Условие правила: фильтр по идентификатору терминала |
123456789000 |
|
filterAcquirerId | string Условие правила: фильтр по идентификатору эквайера |
JP Morgan |
В ответе возвращаются все поля, установленные в запросе, а также время начала применения правила в поле actualFrom
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию по правилу
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rules/{ruleId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/rules/ruleid1example
-X GET
-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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
Описание полей ответа см. в разделе Создать правило.
Если ранее правило было отключено, в теле ответа возвращается время отключения в поле actualTill
с таким же форматом даты, как и у поля actualFrom
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Отключить правило
Запрос → POST
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rules/{ruleId}/disable
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
Описание полей ответа см. в разделе Создать правило.
В теле ответа возвращается время, после которого правило считается отключенным, в поле actualTill
с таким же форматом даты, как и у поля actualFrom
. Для actualTill
указывается текущее значение даты/времени + 15 минут (это время может измениться без уведомления партнера).
Если выполнить запрос на отключение правила после наступления actualTill
, вернется код состояния http 200
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Создать группу правил
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/groups/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
В ответе возвращается поле groupId
, установленное в запросе, а также время начала действия группы в поле actualFrom
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию по группе
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/groups/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-rules/group/groupid1example
-X GET
-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 |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
Параметр actualFrom
указывает на дату/время, начиная с которого действует группа. Если до запроса группа была отключена, в теле ответа возвращается время отключения в поле actualTill
с таким же форматом даты, как и у поля actualFrom
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Отключить группу
Запрос → POST
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/groups/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
Параметр actualTill
указывает на время, после которого группа считается отключенной. Значение actualTill
в ответе равно текущей дате/времени + 15 минут (это время может измениться без уведомления партнера). Если выполнить запрос на отключение группы после наступления actualTill
, вернется код состояния http 200
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Привязать правило к группе
В одном запросе можно связать одно правило с одной группой.
Запрос → PUT
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rule-group-bindings/rule/{ruleId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
В ответе возвращаются поля ruleId
и groupId
, указанные в запросе, а также время, после которого привязка правила к группе считается включенной, в поле actualFrom
:
- Если привязки не существовало, то в
actualFrom
указывается значение даты/времени + 15 минут (это время может измениться без уведомления партнера). - Если привязка уже существует, то возвращается значение
actualFrom
этой привязки. - Если указанные в запросе правило или группа отключены, то запрос завершается ошибкой со специальным кодом.
- Если привязка существует, но у неё указан срок отключения и он еще не наступил, то запрос завершается ошибкой со специальным кодом.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию по привязке правила к группе
Запрос → GET
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rule-group-bindings/rule/{ruleId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Пример запроса
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 '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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
Если привязки не существует или срок удаления привязки правила к группе уже наступил, то вернется http код 404
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Удалить привязку правила к группе
В одном запросе можно удалить связь одного правила с одной группой.
Запрос → DELETE
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/rule-group-bindings/rule/{ruleId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Пример запроса
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;charset=UTF-8'
-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 |
ruleId | Обязательный параметр URL запроса. Идентификатор правила. | ^[A-Za-z0-9-]{1,100}$ | Abc-123-DEF |
groupId | Обязательный параметр URL запроса. Идентификатор группы. | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
В ответе возвращаются поля ruleId
и groupId
, указанные в запросе, а также поля с датой/временем:
- Поле
actualFrom
с датой/временем, начиная с которых действовала привязка. -
Если привязка еще не была удалена ранее:
a. В поле
actualTill
указывается значение даты/времени + 15 минут (это время может измениться без уведомления партнера).b. Возвращается код
HTTP 202 ACCEPTED
с телом, аналогичным ответу на запрос информации о привязке правила к группе. -
Если связь уже была удалена ранее, возвращается старая дата удаления
actualTill
. HTTP-код ответа зависит от даты:a. Если
actualTill
ещё не наступил — возвращается код202 ACCEPTED
.b. Если
actualTill
наступил — возвращается код404
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Привязать карту к группе
В одном запросе можно связать одну карту с одной группой.
Запрос → PUT
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/card-group-bindings/card/100065768512/group/groupid1example
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
-d '{}'
Пример ответа с кодом состояния http 200
{
"cardTokenId" : "100065768512",
"groupId" : "groupid1example",
"actualFrom": "2022-04-30T00:00:00+03:00"
}
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/card-group-bindings/card/{cardTokenId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Параметр | Описание | Regex | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы. Выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
groupId | Обязательный параметр URL запроса. Идентификатор группы | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
В ответе возвращаются поля cardTokenId
и groupId
, указанные в запросе, а также время, после которого привязка будет считаться включенной, в поле actualFrom
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получить информацию о привязке карты к группе
Запрос → GET
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/card-group-bindings/card/100065768512/group/groupid1example
-X GET
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
Пример ответа с кодом состояния http 200
{
"cardTokenId" : "100065768512",
"groupId" : "groupid1example",
"actualFrom": "2022-04-30T00:00:00+03:00"
}
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/card-group-bindings/card/{cardTokenId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
Параметры запроса
Параметр | Описание | Regex | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы. Выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
groupId | Обязательный параметр URL запроса. Идентификатор группы | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
В ответе возвращаются поля cardTokenId
и groupId
, указанные в запросе, а также время включения привязки карты к группе в поле actualFrom
.
Если связи не существует или она ранее была удалена, то вернется http код 404
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Удалить привязку карты к группе
Запрос → DELETE
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-cards-lifecycle/v1/products/best-partner/card-auth-acl/card-group-bindings/card/100065768512/group/groupid1example
-X DELETE
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******'
URL /partner/openapi-cards-lifecycle/v1/products/{productId}/card-auth-acl/card-group-bindings/card/{cardTokenId}/group/{groupId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
Параметры запроса
Параметр | Описание | Regex | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор партнера, в рамках которого происходит создание группы. Выдается партнеру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
cardTokenId | Обязательный параметр URL запроса. Уникальный идентификатор (токен) карты, который получен в ответе на запрос выпуска карты | ^[A-Za-z0-9-]{1,100}$ | 100000000001 |
groupId | Обязательный параметр URL запроса. Идентификатор группы | ^[A-Za-z0-9-]{1,100}$ | groupid1example |
Тело ответа отсутствует. В случае успешного ответа возвращается http код 204
. Если связи не существует или она ранее была удалена, то вернется http код 404
.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статусы заказа на выпуск карты
Код | Описание |
---|---|
ORDERED | Заказ на выпуск карты оформлен |
DELIVERED | Карта выпущена (для виртуальных) или доставлена (для физических) |
FAILED | Ошибка, заказ не создан |
Статусы карты
Код | Описание |
---|---|
ACTIVE | Активна |
IN_PROGRESS_OF_CREATION | В процессе создания: актуально для физических карт |
BLOCKED | Заблокирована |
Типы карт
Код | Описание |
---|---|
VIRTUAL | Виртуальная |
PHYSICAL | Физическая |
Типы платежных систем
Название |
---|
MIR |
VISA |
Формат ошибок API
В разделе описывается структура ответа на неуспешный запрос.
Ответ ←
Пример ответа
HTTP/1.1 404 Not Found
{
"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 | Привязка правила и группы не найдена |
card.auth.acl.card.group.binding.not.found | Привязка карты и группы не найдена |
card.auth.acl.wrong.rule.merchant.name.mask | Задано некорректное значение поля filterMerchantNameMask при создании правила |
card.already.registered.with.different.client.id.or.account.id | Карта уже зарегистрирована для другого клиента |
card.can.not.be.registered | Карта не может быть зарегистрирована |
Справочник кодов внутренних ошибок
Описание всех перечисленных ошибок одинаковое: "В сервисе 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 |