Вопросы
baas_support@qiwi.com
NAV Navbar
shell

PAYMENTS API

Последнее обновление: 04-03-2021 |

API предназначен для партнеров, инициирующих платежи из своего пользовательского интерфейса.

Здесь и далее по тексту:

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

Авторизация

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

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

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

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

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

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

Общая схема работы

Сценарий пополнения счета пользователя с банковской карты

Партнер использует платежную форму QIWI

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

Партнер отправляет платежный запрос сервису Payments, в котором передает сумму платежа и размер полученной ранее комиссии. В результате неуспешной обработки запроса сервис Payments возвращает сервису партнера соответствующий ответ. В результате успешной обработки запроса сервис Payments возвращает сервису партнера статус проведения платежа PROCESSING и url платежной формы payUrl.

Партнер перенаправляет пользователя на полученный url для ввода данных банковской карты. Пользователь вводит данные и подтверждает оплату. Сервис Payments проводит операцию пополнения. При неуспешном проведении операции пополнения пользователю будет предложено повторить операцию с возможностью смены реквизитов банковской карты. При успешном проведении операции на форме оплаты пользователь увидит соответствующее подтверждение.

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

Сценарий проведения платежа

Сценарий перевода средств со счета пользователя на банковскую карту

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

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

Если needClientApprove имеет значение true - партнер сообщает пользователю о том, что перевод на указанную карту является потенциально подозрительной операцией: получатель денежных средств, возможно, относится к числу финансовых мошенников. Пользователь отказывается от проведения операции или подтверждает ее исполнение. Партнер передает сервису Payments отказ или подтверждение пользователя данным.

Сервис Payments проводит операцию перевода средств на банковскую карту.

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

Сценарий проведения платежа

Сценарий оплаты в пользу провайдера со счета пользователя

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

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

Сервис Payments проводит операцию оплаты в пользу провайдера со счета пользователя.

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

Сценарий проведения платежа

Оплата в пользу провайдера может быть совершена: - по сценарию, описанному в данном разделе; - по сценарию, описанному в разделе "Сценарий оплаты для остальных видов платежей".

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

Сценарий оплаты для остальных видов платежей

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

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

Сценарий проведения платежа

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

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

Партнер использует платежную форму QIWI

Сценарий пополнения описан в данном разделе.

Дополнительная информация об использовании платежной формы отражена здесь.

Для пополнения счета пользователя с карты отправьте PUT-запрос.

Запрос → PUT

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

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 eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "toClientId": "1",
  "transactionAmount": {
    "value": "100.00",
    "currency": "RUB"
  },
  "clientIpAddress": "255.255.255.255",
  "clientCommission" : {
    "value" : "2.00",
    "currency" : "RUB"
  }
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
toClientId Идентификатор получателя. Уникален в рамках продукта productId. Генерируется партнером при создании пользователя по API Clients. Если для платежа настроена комиссия - необходимо указать ClientId, переданный в запросе комиссии по платежу. String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
transactionAmount Блок с информацией о сумме операции       +
value Значение с двумя десятичными разрядами. Указывается сумма без учета комиссии. String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный IPv4/IPv6 255.255.255.255 +
clientCommission Блок с информацией о комиссии, которая взимается с пользователя       -
value Значение с двумя десятичными разрядами. Необходимо передать значение, полученное запросом комиссии по платежу. String   10.00 -
currency Валюта, ISO 4217 String   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 Дата создания операции в сервисе Payments
accountingDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата перехода операции в финальный статус в сервисе Payments
payUrl String Адрес платежной формы, на которую партнеру необходимо перенаправить пользователя для заполнения реквизитов платежа
status String Статус операции в сервисе Payments
statusDetails String Заполнен, если "status": "DECLINED"
clientCommission   Блок с информацией о комиссии, которая взимается с пользователя
value String Значение с двумя десятичными разрядами
currency String Валюта, ISO 4217

Статус пополнения счета пользователя с банковской карты

Партнер использует платежную форму QIWI

Для получения текущего статуса платежа отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-by-webform/products/best-partner/transactions/a97
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +

Ответ ←

См. ответ на запрос "Пополнение счета пользователя с банковской карты".

Пополнение счета пользователя с другого счета

Сценарий пополнения описан в данном разделе.

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

Для пополнения счета пользователя отправьте PUT-запрос.

Запрос → PUT

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

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 eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
 "fromFunderId": "uid40",
 "toClientId": "customerUid4000",
 "transactionAmount": {
   "currency": "RUB",
   "value": "200.00"
 },
 "clientIpAddress": "255.255.255.255"
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
fromFunderId Идентификатор источника денежных средств: с его счета в сервисе Payments средства будут списаны на счет пользователя String ^[A-Za-z0-9-]{1,100}$ Fnd-123-DEF-456 +
toClientId Идентификатор получателя. Уникален в рамках продукта productId. Генерируется при создании пользователя по API Clients. String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
transactionAmount Блок с информацией о сумме операции       +
value Значение с двумя десятичными разрядами String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный 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 String Значение с двумя десятичными разрядами
creationDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата создания операции в сервисе Payments
accountingDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата перехода операции в финальный статус в сервисе Payments
status String Статус операции в сервисе Payments
statusDetails String Заполнен, если "status": "DECLINED"

Статус пополнения счета пользователя с другого счета

Для получения текущего статуса платежа отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/replenishment-from-funder/products/best-partner/transactions/a98
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +

Ответ ←

См. ответ на запрос "Пополнение счета пользователя с другого счета".

Перевод средств со счета пользователя на банковскую карту

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

Для перевода денежных средств со счета пользователя на банковскую карту отправьте PUT-запрос.

Запрос → PUT

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

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 eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "fromAccountId" : "customerAccountUid4000",
  "pan" : "4002345686552016",
  "clientIpAddress" : "198.204.56.69",
  "transactionAmount" : {
    "value" : "9.45",
    "currency" : "RUB"
  },
  "clientCommission" : {
    "value" : "49.00",
    "currency" : "RUB"
  }'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
fromAccountId Уникальный идентификатор счета, c которого происходит списание денежных средств. Генерируется партнером при создании счета по API Clients. String ^[A-Za-z0-9-]{1,100}$ Acc-123-DEF-456 +
pan Номер карты получателя денежных средств String ^\\d{16,19}$ 2345678910111213 +
transactionAmount Блок с информацией о сумме операции       +
value Значение с двумя десятичными разрядами. Указывается сумма без учета комиссии. String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный IPv4/IPv6 255.255.255.255 +
clientCommission Блок с информацией о комиссии, которая взимается с пользователя       -
value Значение с двумя десятичными разрядами. Нужно передать значение, полученное запросом комиссии по платежу. String   10.00 -
currency Валюта, ISO 4217 String   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 String Значение с двумя десятичными разрядами
creationDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата создания операции в сервисе Payments
accountingDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата перехода операции в финальный статус в сервисе Payments
status String Статус операции в сервисе Payments
statusDetails String Заполнен, если "status": "DECLINED"
clientCommission   Блок с информацией о комиссии, которая взимается с пользователя
value String Значение с двумя десятичными разрядами
currency String Валюта, ISO 4217
needClientApprove Boolean Если true - пользователю необходимо сообщить о том, что перевод на указанную карту является потенциально подозрительной операцией: получатель денежных средств, возможно, относится к числу финансовых мошенников. Пользователь может отказаться от проведения операции или подтвердить ее исполнение: см. запрос на подтверждение.

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

Для получения размера комиссии по платежу отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-commissions/v1/products/best-partner/{txnType}?clientId=1&value=100.99&currency=RUB
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
txnType Тип операции, для которой необходимо получить размер комиссии String     +
ClientId Идентификатор пользователя, для которого планируется совершить платеж: которому необходимо отобразить размер комиссии. Уникален в рамках продукта productId. Генерируется при создании пользователя по API Clients. String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
value Сумма, для которой необходимо рассчитать размер комиссии. Эта же сумма должна быть передана в transactionAmount платежного запроса. String   10.00 +
currency Валюта, ISO 4217 String     +

Ответ ←

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

{
    "clientCommission": {
        "value": 10.00,
        "currency": "RUB"
    }
}
Параметр Тип Описание
clientCommission   Блок с информацией о комиссии, которая взимается с пользователя
value String Размер комиссии, значение с двумя десятичными разрядами
currency String Валюта, ISO 4217

Типы операций для получения размера комиссии

Тип операции Описание
replenishment-by-webform Пополнение счета пользователя с карты
withdrawal-to-card Перевод со счета пользователя на банковскую карту

Подтверждение перевода средств со счета пользователя на банковскую карту

Пользователю необходимо отказаться от проведения операции или подтвердить ее исполнение в случае, когда в ответе на создание платежа возвращается "needClientApprove":true.

Для отказа или подтверждения отправьте PUT-запрос.

Запрос → PUT

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

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 eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "clientApproveStatus": "APPROVED"
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
clientApproveStatus Статус подтверждения. Необходимо передать APPROVED или NOT_APPROVED: см. справочник статусов. String   APPROVED +

Ответ ←

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

{
  "clientApproveStatus": "APPROVED"
}
Параметр Тип Описание
clientApproveStatus String Статус подтверждения: см. справочник статусов

Статус подтверждения перевода средств со счета пользователя на банковскую карту

Для получения текущего статуса подтверждения операции отправьте GET-запрос.

Запрос → GET

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

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

Ответ ←

См. ответ на запрос "Подтверждение перевода средств со счета пользователя на банковскую карту".

Справочник статусов подтверждения платежа

Статус Описание
APPROVED Платеж подтвержден: финальный статус
NOT_APPROVED Платеж не подтвержден: финальный статус
NONE Промежуточный статус: возвращается, если отсутствует подтверждение или отказ на проведение операции

Статус перевода средств со счета пользователя на банковскую карту

Для получения текущего статуса платежа отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/withdrawal-to-card/products/best-partner/transactions/a97
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +

Ответ ←

См. ответ на запрос "Перевод средств со счета пользователя на банковскую карту".

Оплата в пользу провайдера со счета пользователя

Сценарий пополнения описан в данном разделе.

Для совершения оплаты в пользу провайдера со счета пользователя отправьте PUT-запрос.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/payment/products/best-partner/transactions/100
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
 "fromClientId": "customerUid4000",
 "toProviderId": "uid30",
 "toProviderData": { 
    "fields" : {
        "account" : "5886987209"
    }
 },
 "transactionAmount": { 
     "value": "200.00", 
     "currency": "RUB" 
 },
 "clientIpAddress": "2001:db8:85a3::8a2e:0370:7334"
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
fromClientId Идентификатор пользователя, со счета которого происходит списание денежных средств String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
toProviderId Идентификатор провайдера/услуги, в пользу которого осуществляется платеж. Выдается партнеру при интеграции. String ^[A-Za-z0-9-]{1,100}$ Prv-123-DEF-456 +
toProviderData Блок с доп. информацией для успешного проведения платежа       -
fields Параметры блока toProviderData       -
account Идентификатор пользователя на стороне провайдера String ^[A-Za-z0-9-]{1,100}$ Зависит от toProviderId -
transactionAmount Блок с информацией о сумме операции       +
value Значение с двумя десятичными разрядами String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный IPv4/IPv6 255.255.255.255 +

Ответ ←

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

{
 "productId": "best-partner",
 "transactionId": "a97",
 "fromClientId": "customerUid4000",
 "toProviderId": "uid30",
 "toProviderData": { 
    "fields" : {
        "account" : "5886987209"
    }
 },
 "transactionAmount": {
    "currency": "RUB",
    "value": 200
 },
 "creationDateTime": "2018-10-31T18:10:37+03:00",
 "accountingDatetime": "2017-09-03T14:30:00+03:00",
 "status": "SUCCESS",
 "statusDetails": {}
}
Параметр Тип Описание
productId String Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции
transactionId String Уникальный идентификатор операции в системе партнера
fromClientId String Идентификатор пользователя, со счета которого происходит списание денежных средств
toProviderId String Идентификатор провайдера/услуги, в пользу которого осуществляется платеж. Выдается партнеру при интеграции.
toProviderData   Блок с доп. информацией для успешного проведения платежа
fields   Параметры блока toProviderData
account String Идентификатор пользователя на стороне провайдера
transactionAmount   Блок с информацией о сумме операции
currency String Валюта, ISO 4217
value String Значение с двумя десятичными разрядами
creationDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата создания операции в сервисе Payments
accountingDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата перехода операции в финальный статус в сервисе Payments
status String Статус операции в сервисе Payments
statusDetails String Заполнен, если "status": "DECLINED"

Идентификатор пользователя на стороне провайдера

Провайдер Идентификатор
МТС.Сотовая связь Номер телефона абонента из 10 цифр, без кода страны
War Thunder Игровой e-mail

Статус оплаты в пользу провайдера со счета пользователя

Для получения текущего статуса платежа отправьте GET-запрос.

Запрос → GET

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

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

Ответ ←

См. ответ на запрос "Оплата в пользу провайдера со счета пользователя".

Отмена оплаты в пользу провайдера

Отмена оплаты онлайн-методом доступна для платежей в пользу определенных провайдеров.

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

Создать отмену можно в течение N часов с момента совершения исходного платежа. N - задается для конкретного productId: настройка.

Разрешено максимум X отмен для одного платежа. X - настройка.

Запрос → PUT

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/payment/products/best-partner/transactions/100/cancellations/cnl1
-X PUT
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
  "cancellationAmount" : {
    "value" : 1.00,
    "currency" : "RUB"
  },
  "clientIpAddress" : "174.86.104.67"
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции, для которой совершается отмена String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
cancellationId Уникальный идентификатор отмены в системе партнера, значение не должно пересекаться с transactionId в пределах продукта productId String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
cancellationAmount Сумма отмены, возможна полная или частичная отмена исходной операции       +
value Значение с двумя десятичными разрядами String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный IPv4/IPv6 255.255.255.255 +

Ответ ←

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

{
    "productId": "best-partner",
    "transactionId": "100",
    "cancellationId": "cancel1",
    "cancellationAmount": {
        "currency": "RUB",
        "value": "1.00"
    },
    "cancellationStatus": "SUCCESS",
    "cancellationStatusDetails": {},
    "cancellationCreatedDateTime": "2020-08-27T15:33:00+03:00",
    "cancellationCompletedDateTime": "2020-08-27T15:33:01+03:00"
}
Параметр Тип Описание
productId String Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции
transactionId String Уникальный идентификатор операции в системе партнера
cancellationAmount   Сумма отмены
currency String Валюта, ISO 4217
value String Значение с двумя десятичными разрядами
cancellationCreatedDateTime DateTime Дата создания отмены в Payments в формате ISO 8601 ±hh:mm с московской Time Zone
cancellationCompletedDateTime DateTime Дата перехода операции отмены в финальный статус в сервисе Payments, возвращается в формате ISO 8601 ±hh:mm с московской Time Zone
cancellationStatus String Статус операции в сервисе Payments
cancellationStatusDetails String Заполнен, если "status": "DECLINED"

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

Для получения информации по отмене отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/payment/products/best-partner/transactions/100/cancellations/cnl1
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
cancellationId Уникальный идентификатор отмены в системе партнера, значение не должно пересекаться с transactionId в пределах продукта productId String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +

Ответ ←

См. формат ответа на запрос "Отмена оплаты в пользу провайдера".

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

Для получения информации по всем отменам отправьте GET-запрос.

Запрос → GET

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

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

Ответ ←

В ответе приходит массив объектов с данными об отменах.

Формат объекта с информацией об одной отмене см. в описании ответа на запрос "Отмена оплаты в пользу провайдера".

Перевод между счетами пользователей

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

Для совершения перевода между счетами пользователей отправьте PUT-запрос.

Запрос → PUT

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

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 eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
-d '{
 "fromClientId": "customerUid4000",
 "toClientId": "customerUid3000",
 "transactionAmount": {
 "value": "200.00",
 "currency": "RUB"
 }
},
 "clientIpAddress": "255.255.255.255"
}'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +
fromClientId Идентификатор пользователя-отправителя. Генерируется при создании пользователя по API Clients String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
toClientId Идентификатор пользователя-получателя. Генерируется при создании пользователя по API Clients String ^[A-Za-z0-9-]{1,100}$ Cnt-123-DEF-456 +
transactionAmount Блок с информацией о сумме операции       +
value Значение с двумя десятичными разрядами String   200.00 +
currency Валюта, ISO 4217 String   RUB +
clientIpAddress IP-адрес, с которого пользователь осуществляет запрос на совершение платежа String валидный 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 Дата создания операции в сервисе Payments
accountingDatetime DateTime в формате ISO 8601 ±hh:mm с московской Time Zone Дата перехода операции в финальный статус в сервисе Payments
status String Статус операции в сервисе Payments
statusDetails String Заполнен, если "status": "DECLINED"

Статус перевода между счетами пользователей

Для получения текущего статуса платежа отправьте GET-запрос.

Запрос → GET

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

curl https://api-test.qiwi.com/partner/openapi-payment-api/v1/transfer-between-clients/products/best-partner/transactions/a121
-X GET
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Authorization: Bearer eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjIwNDIsImFwaV91c2VyX2lkIjo1NjYwMzk3Miwic2VjcmV0IjoiQjIwODlDNkI5Q0NDNTdCNDQzNGHJK43JFJDK595FJFJMjlCRkFFRDM5OE***********************'
Параметр Описание Тип REGEX Пример Обяз.
productId Идентификатор продукта, в рамках которого совершается платеж: выдается партнеру при интеграции String ^[A-Za-z0-9-]{1,100}$ Prd-123-DEF-456 +
transactionId Уникальный идентификатор операции в системе партнера String ^[A-Za-z0-9-]{1,100}$ Txn-123-DEF-456 +

Ответ ←

См. ответ на запрос "Перевод между счетами пользователей".

Статусы платежей

Статус Описание
PROCESSING Платеж в процессе проведения, актуально для пополнения с карты или перевода на карту
SUCCESS Платеж успешен: финальный статус
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 содержит:

В поле 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 Операция запрещена системой фрод-мониторинга.

Ошибки

Ниже — описание ответа на неуспешный запрос.

Ответ ←

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

{
    "serviceName": "openapi-payment-api",
    "errorCode": "validation.error",
    "dateTime": "2020-07-23T20:13:22.290416+03:00",
    "traceId": "67477569e8bc6838",
    "cause": {
        "fromFunderId.value": [
            "Abc-123-DEF-456" # string, regex: ^[A-Za-z0-9-]{1,100}$ 
        ]
    }
} 
Название Описание
serviceName Имя сервиса, который вернул ошибку
errorCode Код ошибки. См. справочник кодов ошибок
dateTime Дата и время формирования ответа
traceId Параметр, необходимый для анализа логов. Его значение также всегда присутствует в заголовках ответа (response headers) в параметре X-B3-TraceId
cause Причина, опциональный параметр

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

Код Описание
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, funderId, 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.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.commissions.internal.error Внутренняя ошибка в сервисе комиссий
openapi.commissions.product.not.found Продукт не найден
openapi.commissions.wrong.currency Неверная валюта/валюта не поддерживается
openapi.commissions.wrong.provider.data Актуально для платежей в пользу тех провайдеров, для которых необходимо заполнять toProviderData: toProviderData не заполнен или заполнен некорректно.
openapi.commissions.cancellation.inapplicable Отмены не применимы к данному платежу
openapi.commissions.wrong.money.amount Некорректная сумма: получить комиссию на указанную сумму нельзя

Платежная форма

Срок жизни

Операция имеет период, в рамках которого можно воспользоваться пополнением: совершить оплату на форме.

Текущее значение периода (срока жизни) необходимо уточнять отдельно.

По истечении заданного срока жизни операция из статуса processing переходит в финальный неуспешный (если оплата не была совершена) или финальный успешный (если оплата была и она успешна) статус.

Возможные значения срока жизни:

Например, срок жизни установлен в 5 минут. Пользователь находится на форме. Закрыл ее. Через какое-то время снова вернулся на форму. Совершить оплату данный пользователь сможет только в том случае, если 5 минут с момента создания запроса не истекли.

Способы оплаты

На форме в testing окружении можно увидеть следующие способы оплаты:

В production окружении на форме будет доступен единственный способ оплаты - банковской картой.

Редирект с платежной формы

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

В параметре success_url передается адрес, на который будет перенаправлен пользователь. Например, &success_url=ya.ru.

Автоматический редирект происходит после успешной оплаты спустя 3-10 секунд.

При повторном открытии формы (уже после успешной оплаты) перейти на success_url можно только по нажатию на ссылку внизу формы.

Ссылка содержится в строке. Строка имеет следующий вид: "Вернуться на сайт наименование продукта". Наименование продукта - информация из БД, содержит ссылку на success_url.

Строка не кастомизируется под каждого отдельного партнера. Если передавать success_url — строка появляется на форме, если не передавать — строки на форме не будет.

Кастомизация

Кастомизация позволяет адаптировать платежную форму под стиль партнера. Настраивается лого, фон и цвет кнопок.

Для кастомизации необходимы:

Дополнительные настройки:

Customer form

Что не кастомизируется:

Можно ли узнать, когда клиент заполнил форму и отправил платеж?

Сервис Payments не знает о том, что клиент:

Сервис Payments изменит статус платежа только в случае:

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

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

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

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

Запрет на открытие формы в iFrame на iOS

В Safari с iPhone блокируется запись cookie, если пользователь не был на домене в течении прошлых 30 дней (в том числе с Desktop/iPad).

В QIWI стоит запрет на открытие формы в iFrame на iOS. Разрешить открывать форму в iFrame только для определенных доменов - на текущий момент не представляется возможным.

Вариант открытия формы в Safari - в отдельном окне. Для корректного отображения формы должны быть разрешены запись и чтение cookie.

Можно ли сделать автоматический скролл?

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