PAYMENTS API
API предназначен для проведения платежей в рамках продукта BaaS. Подробности см. в разделе «Руководства по интеграции» → BaaS → «Расходные операции».
Используемые в тексте термины описаны в разделе «Руководства по интеграции» → BaaS → «Термины и бизнес-сущности».
Взаимодействие через API
Взаимодействие между партнёром и BaaS совершается по защищённому протоколу (HTTPS). Поддерживаются только HTTPS-запросы. HTTP-запросы по нешифрованному каналу не поддерживаются.
Данные в запросах передаются в формате JSON в кодировке UTF-8. В ответах данные возвращаются также в формате JSON в кодировке UTF-8.
URL для вызовов API
- https://api-test.qiwi.com - testing окружение;
- https://api.qiwi.com - production окружение.
Доступ к API
Схема аутентификации - Bearer.
В заголовках запроса передаётся bearer-токен в поле Authorization
.
--header "Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******"
Bearer-токен выдается партнёру при интеграции.
Авторизация
За авторизацию отвечает обязательный заголовок запроса QIWI-Client-Token
.
Подробности см. в разделе «Руководства по интеграции» → BaaS → «Общие принципы и правила» → «Подтверждение операций».
--header "QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c"
Подпись платёжных поручений
За подпись платёжных поручений отвечает обязательный заголовок запроса QIWI-Payment-Signature
.
Подробности см. в разделе «Руководства по интеграции» → BaaS → «Общие принципы и правила» → «Подпись платёжных поручений».
Передача информации об устройстве клиента
Модель устройства клиента
За передачу модели устройства клиента, с которого отправляется запрос, отвечает обязательный заголовок clientDevice
.
Идентификатор устройства клиента
За передачу идентификатора устройства клиента, с которого отправляется запрос, отвечает обязательный заголовок deviceId
.
Пополнение с банковской карты
Пополнение с банковской карты описано на explain.qiwi.com.
Запрос → PUT
URL /partner/openapi-payment-api/v1/replenishment-by-webform/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
- QIWI-Payment-Signature: PAYMENT_SIGNATURE
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-by-webform/products/best-partner/transactions/a97 \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer eyJ2ZXJzaW9FJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-H 'QIWI-Payment-Signature: 8YKr8d9wGn3NLwMCc4JhlzWs6cb2XHv+ncVJyOqC5Ou6VCiWSer6VJS7J/Ja8P0JLMSZ2u7Exbhw0PoaY9G6uAg0nruULFJv0rEJU8a9etwdEENvazH0tHbK9G7OT/xZt6y3cGkDNj5avLiCOk0v/mEd2Myf25Th3mMky/Cz9amv5UpfCm/' \
-d '{
"toClientId": "1",
"transactionAmount": {
"value": 100.00,
"currency": "RUB"
},
"clientIpAddress": "255.255.255.255",
"clientCommission" : {
"value" : 2.00,
"currency" : "RUB"
}
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
toClientId | string Обязательный параметр тела запроса. Идентификатор получателя. Уникален в рамках продукта productId . Генерируется партнёром при создании клиента через API Clients. Если для платежа настроена комиссия, необходимо указать clientId , переданный в запросе комиссии по платежу. |
^[A-Za-z0-9-]{1,100}$ |
Cnt-123-DEF-456 |
transactionAmount | object Обязательный параметр тела запроса. Блок с информацией о сумме операции |
||
value | string Обязательный параметр тела запроса. Значение с двумя десятичными разрядами. Указывается сумма без учета комиссии. |
200.00 |
|
currency | string Обязательный параметр тела запроса. Валюта, ISO 4217 |
RUB |
|
clientIpAddress | string Обязательный параметр тела запроса. IP-адрес, с которого клиент осуществляет запрос на совершение платежа |
валидный IPv4/IPv6 | 255.255.255.255 |
clientCommission | object Параметр тела запроса. Блок с информацией о комиссии, которая взимается с клиента. Если комиссия для указанного productID не настроена в BaaS, передавать параметр не нужно. |
||
value | number Параметр тела запроса. Значение с двумя десятичными разрядами. Необходимо передать значение, полученное запросом комиссии по платежу. |
10.00 |
|
currency | string Параметр тела запроса. Валюта, ISO 4217 |
RUB |
Ответ ←
Пример ответа
{
"productId": "best-partner",
"transactionId": "a97",
"toClientId": "1",
"transactionAmount": {
"currency": "RUB",
"value": "100.00"
},
"creationDateTime": "2020-08-25T18:11:22+03:00",
"payUrl": "https://oplata-test.qiwi.com/form/?invoice_uid=0ad92a20-3dfc-4627-baa4-b70a96a867ae",
"status": "PROCESSING",
"statusDetails": {},
"clientCommission": {
"currency": "RUB",
"value": 2.00
}
}
Параметр | Тип | Описание |
---|---|---|
productId | String | Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции |
transactionId | String | Уникальный идентификатор операции в системе партнёра |
toClientId | String | Идентификатор получателя. Уникален в рамках продукта productId |
transactionAmount | Блок с информацией о сумме операции | |
currency | String | Валюта, ISO 4217 |
value | String | Значение с двумя десятичными разрядами |
creationDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата создания операции в BaaS |
accountingDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата перехода операции в финальный статус в сервисе Payments |
payUrl | String | URL платежной формы, на которую партнёру необходимо перенаправить клиента для заполнения реквизитов платежа |
status | String | Статус операции в BaaS |
statusDetails | String | Заполнен, если "status": "DECLINED" |
clientCommission | Блок с информацией о комиссии, которая взимается с клиента | |
value | Number | Значение с двумя десятичными разрядами |
currency | String | Валюта, ISO 4217 |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статус пополнения с банковской карты
Метод используется для получения текущего статуса платежа.
Запрос → GET
URL /partner/openapi-payment-api/v1/replenishment-by-webform/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-by-webform/products/best-partner/transactions/a97 \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoiCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ | Txn-123-DEF-456 |
Ответ ←
См. ответ на запрос "Пополнение с банковской карты".
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Выплата на кошелёк
Подробности см. на explain.qiwi.com.
Запрос → PUT
URL /partner/openapi-payment-api/v1/replenishment-from-funder/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
- QIWI-Payment-Signature: PAYMENT_SIGNATURE
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-from-funder/products/best-partner/transactions/a98 \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-H 'QIWI-Payment-Signature: 8YKr8d9wGn3NLwMCc4JhlzWs6cb2XHv+ncVJyOqC5Ou6VCiWSer6VJS7J/Ja8P0JLMSZ2u7Exbhw0PoaY9G6uAg0nruULFJv0rEJU8a9etwdEENvazH0tHbK9G7OT/xZt6y3cGkDNj5avLiCOk0v/mEd2Myf25Th3mMky/Cz9amv5UpfCm/' \
-d '{
"fromFunderId": "uid40",
"toClientId": "customerUid4000",
"transactionAmount": {
"currency": "RUB",
"value": "200.00"
},
"clientIpAddress": "255.255.255.255"
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ | Txn-123-DEF-456 |
fromFunderId | string Обязательный параметр тела запроса. Идентификатор источника средств |
^[A-Za-z0-9-]{1,100}$ | Fnd-123-DEF-456 |
toClientId | string Обязательный параметр тела запроса. Идентификатор получателя. Уникален в рамках продукта productId . Генерируется при создании клиента по API Clients. |
^[A-Za-z0-9-]{1,100}$ | Cnt-123-DEF-456 |
transactionAmount | object Обязательный параметр тела запроса. Блок с информацией о сумме операции |
||
value | string Обязательный параметр тела запроса. Значение с двумя десятичными разрядами |
200.00 |
|
currency | string Обязательный параметр тела запроса. Валюта, ISO 4217 |
RUB |
|
clientIpAddress | string Обязательный параметр тела запроса. IP-адрес, с которого клиент осуществляет запрос на совершение платежа |
валидный IPv4/IPv6 | 255.255.255.255 |
Ответ ←
Пример ответа
{
"productId": "best-partner",
"transactionId": "a98",
"fromFunderId": "uid40",
"toClientId": "1",
"transactionAmount": {
"currency": "RUB",
"value": 50.00
},
"creationDateTime": "2020-08-26T13:03:17+03:00",
"accountingDateTime": "2020-08-26T13:03:17+03:00",
"status": "SUCCESS",
"statusDetails": {}
}
Параметр | Тип | Описание |
---|---|---|
productId | String | Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции |
transactionId | String | Уникальный идентификатор операции в системе партнёра |
fromFunderId | String | Идентификатор источника средств |
toClientId | String | Идентификатор получателя. Уникален в рамках продукта productId |
transactionAmount | Блок с информацией о сумме операции | |
currency | String | Валюта, ISO 4217 |
value | Number | Значение с двумя десятичными разрядами |
creationDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата создания операции в BaaS |
accountingDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата перехода операции в финальный статус в BaaS |
status | String | Статус операции в BaaS |
statusDetails | String | Заполнен, если "status": "DECLINED" |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статус выплаты на кошелёк
Метод используется для получения текущего статуса платежа.
Запрос → GET
URL /partner/openapi-payment-api/v1/replenishment-from-funder/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-from-funder/products/best-partner/transactions/a98 \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
Ответ ←
См. ответ на запрос "Выплата на кошелёк".
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Перевод на банковскую карту
Перевод на банковскую карту описан на explain.qiwi.com.
Запрос → PUT
URL /partner/openapi-payment-api/v1/withdrawal-to-card/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
- QIWI-Payment-Signature: PAYMENT_SIGNATURE
- clientDevice: CLIENT_DEVICE
- deviceId: DEVICE_ID
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a97 \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoiMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-H 'QIWI-Payment-Signature: 8YKr8d9wGn3NLwMCc4JhlzWs6cb2XHv+ncVJyOqC5Ou6VCiWSer6VJS7J/Ja8P0JLMSZ2u7Exbhw0PoaY9G6uAg0nruULFJv0rEJU8a9etwdEENvazH0tHbK9G7OT/xZt6y3cGkDNj5avLiCOk0v/mEd2Myf25Th3mMky/Cz9amv5UpfCm/' \
-H 'clientDevice: Iphone 12' \
-H 'deviceId: AB1234CD-E123-12FG-J123' \
-d '{
"fromAccountId": "customerAccountUid4000",
"pan": "4002345686552016",
"clientIpAddress": "198.204.56.69",
"transactionAmount": {
"value" : 9.45,
"currency" : "RUB"
},
"clientCommission": {
"value" : 49.00,
"currency" : "RUB"
}
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
fromAccountId | string Обязательный параметр тела запроса. Уникальный идентификатор счёта, c которого происходит списание денежных средств. Генерируется партнёром при создании счёта по API Clients. |
^[A-Za-z0-9-]{1,100}$ |
Acc-123-DEF-456 |
pan | string Обязательный параметр тела запроса. Номер карты получателя денежных средств |
^\\d{16,19}$ |
2345678910111213 |
transactionAmount | object Обязательный параметр тела запроса. Блок с информацией о сумме операции |
||
value | number Обязательный параметр тела запроса. Значение с двумя десятичными разрядами. Указывается сумма без учета комиссии. |
200.00 |
|
currency | string Обязательный параметр тела запроса. Валюта, ISO 4217 |
RUB |
|
clientIpAddress | string Обязательный параметр тела запроса. IP-адрес, с которого клиент осуществляет запрос на совершение платежа |
валидный IPv4/IPv6 | 255.255.255.255 |
clientCommission | object Обязательный параметр тела запроса. Блок с информацией о комиссии, которая взимается с клиента. Если комиссия для указанного productID не настроена в BaaS, передавать параметр не нужно. |
||
value | number Обязательный параметр тела запроса. Значение с двумя десятичными разрядами. Нужно передать значение, полученное запросом комиссии по платежу. |
10.00 |
|
currency | string Обязательный параметр тела запроса. Валюта, ISO 4217 |
RUB |
Ответ ←
Пример ответа
{
"productId": "best-partner",
"transactionId": "a97",
"fromAccountId": "customerAccountUid4000",
"transactionAmount": {
"currency": "RUB",
"value": 200
},
"clientCommission" : {
"value" : 49.00,
"currency" : "RUB"
},
"creationDateTime": "2018-10-31T18:10:37+03:00",
"accountingDateTime": "2017-09-03T14:30:00+03:00",
"status": "PROCESSING",
"statusDetails": {},
"needClientApprove": false
}
Параметр | Тип | Описание |
---|---|---|
productId | String | Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции |
transactionId | String | Уникальный идентификатор операции в системе партнёра |
fromAccountId | String | Уникальный идентификатор счёта, c которого происходит списание денежных средств |
transactionAmount | Блок с информацией о сумме операции | |
currency | String | Валюта, ISO 4217 |
value | Number | Значение с двумя десятичными разрядами |
creationDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата создания операции в BaaS |
accountingDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата перехода операции в финальный статус в BaaS |
status | String | Статус операции в BaaS |
statusDetails | String | Заполнен, если "status": "DECLINED" |
clientCommission | Блок с информацией о комиссии, которая взимается с клиента | |
value | Number | Значение с двумя десятичными разрядами |
currency | String | Валюта, ISO 4217 |
needClientApprove | Boolean | Если true - клиенту необходимо сообщить о том, что перевод на указанную карту является потенциально подозрительной операцией: получатель денежных средств, возможно, относится к числу финансовых мошенников. Клиент может отказаться от проведения операции или подтвердить ее исполнение запросом confirmations. |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получение комиссии по платежу
Получение комиссии описано на explain.qiwi.com.
Запрос → GET
URL /partner/openapi-commissions/v1/products/{productId}/payment/{txnType}?clientId={clientId}&value={value}¤cy={currency}
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-commissions/v1/products/best-partner/{txnType}?clientId=1&value=100.99¤cy=RUB \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
txnType | Обязательный параметр URL запроса. Тип операции, для которой необходимо получить размер комиссии | ||
clientId | Обязательный параметр URL запроса. Идентификатор клиента, для которого планируется совершить платеж и которому необходимо отобразить размер комиссии. Уникален в рамках продукта productId . Генерируется при создании клиента по API Clients. |
^[A-Za-z0-9-]{1,100}$ |
Cnt-123-DEF-456 |
value | Обязательный параметр URL запроса. Сумма, для которой необходимо рассчитать размер комиссии. Эта же сумма должна быть передана в transactionAmount платежного запроса. |
10.00 |
|
currency | Обязательный параметр URL запроса. Валюта, ISO 4217 |
Ответ ←
Пример ответа
{
"clientCommission": {
"value": 10.00,
"currency": "RUB"
}
}
Параметр | Тип | Описание |
---|---|---|
clientCommission | object | Блок с информацией о комиссии, которая взимается с клиента |
value | Number | Размер комиссии, значение с двумя десятичными разрядами |
currency | String | Валюта, ISO 4217 |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Типы операций для получения размера комиссии
Тип операции | Описание |
---|---|
replenishment-by-webform | Пополнение с банковской карты |
withdrawal-to-card | Перевод на банковскую карту |
Подтверждение перевода на банковскую карту
Перевод средств на банковскую карту (в том числе этап подтверждения перевода) описан на explain.qiwi.com.
Запрос → PUT
URL /partner/openapi-payment-api/v1/withdrawal-to-card/products/{productId}/transactions/{transactionId}/confirmations
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a97/confirmations \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-d '{
"clientApproveStatus": "APPROVED"
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
clientApproveStatus | string Обязательный параметр тела запроса. Статус подтверждения. Необходимо передать APPROVED или NOT_APPROVED : см. справочник статусов. |
APPROVED |
Ответ ←
Пример ответа
{
"clientApproveStatus": "APPROVED"
}
Параметр | Тип | Описание |
---|---|---|
clientApproveStatus | String | Статус подтверждения: см. справочник статусов |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статус подтверждения перевода на банковскую карту
Метод используется для получения текущего статуса операции подтверждения платежа.
Запрос → GET
URL /partner/openapi-payment-api/v1/withdrawal-to-card/products/{productId}/transactions/{transactionId}/confirmations
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a97/confirmations \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
Ответ ←
См. ответ на запрос confirmations.
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Справочник статусов подтверждения платежа
Статус | Описание |
---|---|
APPROVED | Платеж подтвержден: финальный статус |
NOT_APPROVED | Платеж не подтвержден: финальный статус |
NONE | Промежуточный статус: возвращается, если отсутствует подтверждение или отказ на проведение операции |
Статус перевода на банковскую карту
Метод используется для получения текущего статуса платежа.
Запрос → GET
URL /partner/openapi-payment-api/v1/withdrawal-to-card/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a97 \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
Ответ ←
См. ответ на запрос "Перевод на банковскую карту".
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Получение токена формы для перевода на банковскую карту
Перевод средств на банковскую карту с помощью формы описан на explain.qiwi.com. Метод возвращает токен и URL-адрес формы для перевода.
Запрос → PUT
URL /partner/openapi-payment-api/v1/withdrawal-to-card/products/{productId}/transactions/{transactionId}/form-token
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a99/form-token \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer MjMyNDQxMjM6NDUzRmRnZDQ0M*******' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-d '{
"fromAccountId" : "customerAccountUid4000"
}'
Параметр | Описание | REGEX | Пример | |
---|---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта: выдается партнёру при интеграции | \^[A-Za-z0-9-]{1,100}$ | Prd-123-DEF-456 |
|
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ | Txn-123-DEF-456 |
+ |
fromAccountId | string Обязательный параметр тела запроса. Уникальный идентификатор счёта, c которого происходит списание денежных средств. Генерируется партнёром при создании счёта по API Clients. |
^[A-Za-z0-9-]{1,100}$ | Acc-123-DEF-456 |
Ответ ←
Пример ответа
{
"formToken" : "0b96b8e82f93b00a4010a66e23adb9e1",
"formUrl" : "https://openapi-widget.qiwi.com/api/pay-transfer-widget/widget"
}
Параметр | Тип | Описание |
---|---|---|
formToken | String | Токен для формы просмотра реквизитов карты. |
formUrl | String | URL формы для перевода на банковскую карту |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Перевод между кошельками
Перевод между кошельками описан на explain.qiwi.com.
Запрос → PUT
URL /partner/openapi-payment-api/v1/transfer-betweenclients/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- Content-Type: application/json;charset=UTF-8
- QIWI-Client-Token: CLIENT_TOKEN
- QIWI-Payment-Signature: PAYMENT_SIGNATURE
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/transfer-between-clients/products/best-partner/transactions/a121 \
-X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c' \
-H 'QIWI-Payment-Signature: 8YKr8d9wGn3NLwMCc4JhlzWs6cb2XHv+ncVJyOqC5Ou6VCiWSer6VJS7J/Ja8P0JLMSZ2u7Exbhw0PoaY9G6uAg0nruULFJv0rEJU8a9etwdEENvazH0tHbK9G7OT/xZt6y3cGkDNj5avLiCOk0v/mEd2Myf25Th3mMky/Cz9amv5UpfCm/' \
-d '{
"fromClientId": "customerUid4000",
"toClientId": "customerUid3000",
"transactionAmount": {
"value": 200.00,
"currency": "RUB"
},
"clientIpAddress": "255.255.255.255"
}'
Параметр | Описание | REGEX | Пример |
---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
fromClientId | string Обязательный параметр тела запроса. Идентификатор клиента-отправителя. Генерируется при создании клиента по API Clients |
^[A-Za-z0-9-]{1,100}$ |
Cnt-123-DEF-456 |
toClientId | string Обязательный параметр тела запроса. Идентификатор клиента-получателя. Генерируется при создании клиента по API Clients |
^[A-Za-z0-9-]{1,100}$ |
Cnt-123-DEF-456 |
transactionAmount | object Обязательный параметр тела запроса. Блок с информацией о сумме операции |
||
value | number Обязательный параметр тела запроса. Значение с двумя десятичными разрядами |
200.00 |
|
currency | string Обязательный параметр тела запроса. Валюта, ISO 4217 |
RUB |
|
clientIpAddress | string Обязательный параметр тела запроса. IP-адрес, с которого клиент осуществляет запрос на совершение платежа |
валидный IPv4/IPv6 | 255.255.255.255 |
Ответ ←
Пример ответа
{
"productId": "best-partner",
"transactionId": "a121",
"fromClientId": "customerUid4000",
"toClientId": "customerUid3000",
"transactionAmount": {
"currency": "RUB",
"value": 200
},
"creationDateTime": "2018-10-31T18:36:35+03:00",
"accountingDateTime": "2018-10-31T18:36:35+03:00",
"status": "SUCCESS",
"statusDetails": {}
}
Параметр | Тип | Описание |
---|---|---|
productId | String | Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции |
transactionId | String | Уникальный идентификатор операции в системе партнёра |
fromClientId | String | Идентификатор клиента-отправителя |
toClientId | String | Идентификатор клиента-получателя |
transactionAmount | Блок с информацией о сумме операции | |
currency | String | Валюта, ISO 4217 |
value | String | Значение с двумя десятичными разрядами |
creationDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата создания операции в BaaS |
accountingDateTime | DateTime в формате ISO 8601 ±hh:mm с московской Time Zone | Дата перехода операции в финальный статус в BaaS |
status | String | Статус операции в BaaS |
statusDetails | String | Заполнен, если "status": "DECLINED" |
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статус перевода между кошельками
Метод используется для получения текущего статуса платежа.
Запрос → GET
URL /partner/openapi-payment-api/v1/transfer-betweenclients/products/{productId}/transactions/{transactionId}
HEADERS
- Authorization: Bearer SECRET_KEY
- QIWI-Client-Token: CLIENT_TOKEN
Параметры запроса
Пример запроса
curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/transfer-between-clients/products/best-partner/transactions/a121 \
-X GET \
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************' \
-H 'QIWI-Client-Token: fa9c491b7b06c6cf64a0b53fb2b9a91c'
Параметр | Описание | Тип | REGEX | Пример | Обяз. |
---|---|---|---|---|---|
productId | Обязательный параметр URL запроса. Идентификатор продукта, в рамках которого совершается платеж: выдается партнёру при интеграции | String | ^[A-Za-z0-9-]{1,100}$ |
Prd-123-DEF-456 |
+ |
transactionId | Обязательный параметр URL запроса. Уникальный идентификатор операции в системе партнёра | String | ^[A-Za-z0-9-]{1,100}$ |
Txn-123-DEF-456 |
+ |
Ответ ←
См. ответ на запрос "Перевод между кошельками".
Ответ с ошибкой содержит объект с информацией об ошибке. Подробнее см. раздел Формат ошибок API.
Статусы платежей
Статус | Описание |
---|---|
PROCESSING | Платеж в процессе проведения |
SUCCESS | Платеж успешен: финальный статус |
DECLINED | Платеж неуспешен: финальный статус |
Детализация статуса DECLINED
Пример ответа с статусом DECLINED
{
"productId": "best-partner",
"transactionId": "txn1",
"fromClientId": "1",
"toClientId": "2",
"transactionAmount": {
"currency": "RUB",
"value": 2.00
},
"creationDateTime": "2020-08-26T16:09:09+03:00",
"accountingDateTime": "2020-08-26T16:09:09+03:00",
"status": "DECLINED",
"statusDetails": {
"failureCode": "LIMIT_EXCEEDED"
}
}
Ответ на запрос с финальным неуспешным статусом DECLINED
содержит:
-
для обычного платежа – объект
statusDetails
, например:"status":"DECLINED", "statusDetails":{"failureCode":"LIMIT_EXCEEDED"}
-
для отмены – объект
cancellationStatusDetails
, например:"cancellationStatus":"DECLINED","cancellationStatusDetails":{"failureCode":"ORIGIN_TXN_AMOUNT_EXCEEDED"}
В поле failureCode
указывается код детализации статуса.
Справочник кодов детализации статуса
Код | Описание |
---|---|
CLIENT_BLOCKED | Клиент заблокирован. |
ORIGIN_TXN_EXPIRED | Актуально для отмен: срок, когда исходную операцию можно отменить, истек. |
ORIGIN_TXN_AMOUNT_EXCEEDED | Актуально для отмен: допустимая сумма отмены превышена. |
ORIGIN_TXN_CANCELLATIONS_COUNT_EXCEEDED | Актуально для отмен: количество отмен для одной операции превышено. |
ORIGIN_TXN_INCORRECT_STATUS | Актуально для отмен: исходная операция находится в статусе, в котором ее нельзя отменить. |
CLIENT_INCORRECT_IDENTIFICATION_LEVEL | Выполнение операции запрещено для текущего уровня идентификации клиента. |
ACCOUNT_BALANCE_ERROR | Системная ошибка, связанная с балансами. |
ACCOUNT_BALANCE_INSUFFICIENT_FUNDS | Недостаточно средств на источнике платежа: в случае платежа со счёта клиента. |
ACCOUNT_BALANCE_EXCEEDED | Нарушен допустимый лимит на остаток на счёте. |
LIMIT_EXCEEDED | Нарушены лимиты: на оборот, на сумму одной операции и т.д. |
INVOICE_EXPIRED | Актуально для операции пополнения с карты: счёт для оплаты был создан, но не оплачен клиентом в течение заданного времени. |
INVOICE_ERROR | Актуально для операции пополнения счёта клиента с банковской карты: возникла ошибка со счётом для оплаты с карты. |
PAYMENT_ERROR | Актуально для операции перевода средств на банковскую карту: возникла ошибка при зачислении средств на банковскую карту. |
FRAUD_OPERATION | Операция запрещена системой фрод-мониторинга. |
Формат ошибок API
См. информацию из раздела «Руководства по интеграции» → BaaS → «Тестирование» → «Работа с ошибками».
Справочник кодов ошибок
Код | Описание |
---|---|
openapi.payment.api.bad.request.data | Некорректные параметры запроса |
openapi.payment.api.bad.amount.data | Некорректная сумма: платеж на указанную сумму провести нельзя |
openapi.payment.api.unsupported.currency | Указанная валюта не поддерживается |
openapi.payment.api.txn.parameter.changed | Попытка создать операцию с тем же идентификатором, но другими данными |
openapi.payment.api.txn.type.changed | Попытка создать/получить операцию с верным идентификатором, но неверного типа: тип операции содержится в path запроса (p2p , payment и т.д.) |
openapi.payment.api.txn.test.mode.configured.incorrectly | Попытка создать операцию не в тестовом режиме, при этом для партнёра задана настройка "тестовый режим", и наоборот. Все участники операции (productId , fromFunderId , providerId , clientId ) должны быть в одинаковом состоянии: отсутствие или наличие тестового режима. |
openapi.payment.api.txn.not.found | Операция не найдена |
openapi.payment.api.client.not.found | Клиент не найден |
openapi.payment.api.provider.not.found | Провайдер не найден |
openapi.payment.api.withdrawal.to.card.not.found | Не найдена операция перевода на карту |
openapi.payment.api.withdrawal.to.card.token.parameter.changed | Попытка выпустить токен формы для перевода средств на банковскую карту с тем же идентификатором транзакции, что уже выпущенный, но другими данными (fromAccountId ) |
openapi.payment.api.withdrawal.to.card.token.expired | Токен формы для перевода средств на банковскую карту с таким идентификатором транзакции уже был выпущен и срок его действия истек |
openapi.payment.api.withdrawal.to.card.token.already.used | Токен формы для перевода средств на банковскую карту с таким идентификатором транзакции уже был выпущен и использован для создания перевода клиентом |
openapi.payment.api.withdrawal.to.card.already.exists | Попытка выпустить токен формы для перевода средств на банковскую карту с тем же идентификатором транзакции, как уже существующий перевод |
openapi.payment.api.funder.not.found | Источник денежных средств не найден |
openapi.payment.api.product.not.found | Продукт не найден |
openapi.payment.api.client.blocked | Клиент заблокирован |
openapi.payment.api.payform.not.enabled.for.product | Не заданы настройки для пополнения с карты |
openapi.payment.api.payout.not.enabled.for.product | Не заданы настройки для перевода на карту |
openapi.payment.api.client.wrong.identification.level | Выполнение операции запрещено для текущего уровня идентификации клиента |
openapi.payment.api.precheck.failed | В случае пополнения с банковской карты и перевода на банковскую карту: запрос не прошел банковские проверки, например, превышен лимит. Финансовая операция не создаётся. |
openapi.payment.api.withdrawal.to.card.does.not.require.confirmation | В случае перевода на карту: операцию не требуется подтверждать. |
openapi.payment.api.cancellation.not.found | Операция отмены не найдена |
openapi.payment.api.cancellation.parameter.changed | Попытка создать отмену с тем же идентификатором, но другими данными |
openapi.payment.api.wrong.commission.amount | Неверная сумма комиссии |
openapi.payment.api.wrong.commission.currency | Неверная валюта комиссии |
openapi.payment.api.client.token.not.found | Не найден активный токен клиента |
openapi.payment.api.client.token.not.enabled | Поддержка клиентских токенов отключена для продукта |
openapi.payment.api.client.token.mismatch | Переданный токен не совпал с текущим токеном клиента |
openapi.payment.api.client.token.header.is.missing | Отсутствует заголовок QIWI-Client-Token, обязательный для продуктов с поддержкой клиентских токенов |
openapi.payment.api.ip.address.not.allowed | Запросы с этого IP адреса не разрешены |
openapi.payment.api.missing.device.info.metadata | Отсутствует заголовок clientDevice или deviceId, обязательный для продуктов с поддержкой передачи метаданных устройства клиента |
openapi.commissions.internal.error | Внутренняя ошибка в сервисе комиссий |
openapi.commissions.ip.address.not.allowed | Запросы с этого IP адреса не разрешены |
openapi.commissions.product.not.found | Продукт не найден |
openapi.commissions.wrong.currency | Неверная валюта/валюта не поддерживается |
openapi.commissions.cancellation.inapplicable | Отмены не применимы к платежу |
openapi.commissions.wrong.money.amount | Некорректная сумма: получить комиссию на указанную сумму нельзя |
openapi.commissions.client.token.not.found | Не найден активный токен клиента |
openapi.commissions.client.token.header.is.missing | Отсутствует заголовок QIWI-Client-Token, обязательный для продуктов с поддержкой клиентских токенов |
openapi.commissions.client.token.mismatch | Токен, переданный в запросе, не совпадает с выпущенным для клиента токеном |
openapi.commissions.client.token.not.enabled | Поддержка клиентских токенов отключена для продукта |