Общие сведения
Редактировать на GitHub
API выплат на кошельки предназначено для платежных агентов КИВИ Банк (АО), позволяет зачислять деньги на кошельки пользователей (балансы учетных записей клиентов в системе QIWI Wallet).
Что позволяет протокол
- Переводить деньги клиентам сервиса QIWI Кошелек — запрос pay.
- Проверить текущий статус транзакции перевода — запрос status.
- Проверять возможность проведения платежа — запрос check-deposit-possible.
- Проверять существование клиентов в сервисе QIWI Кошелек — запрос check-user.
- Следить за балансом на агентском счете для выплат — запрос ping.
Как это работает
- Пользователь передает вам сумму пополнения и номер QIWI Кошелька, который нужно пополнить.
- Вы отправляете запрос в Top-Up API QIWI Кошелька на проверку возможности проведения платежа.
- Вы отправляете запрос в Top-Up API QIWI Кошелька на пополнение этого кошелька.
- Вы проверяете текущий статус платежа. Платеж должен принять финальный статус.
- При успешном финальном статусе платежа средства автоматически перечисляются на баланс кошелька пользователя с вашего агентского счета.
- При неуспешном финальном статусе платежа вы возвращаете средства клиенту.
По вопросам интеграции и сотрудничества пишите на bss@qiwi.com.
Формат взаимодействия
Взаимодействие происходит посредством пересылки запросов и ответов на них системы QIWI Wallet. Запросы и ответы – XML-документы в кодировке UTF-8.
В API используются только HTTP POST-запросы, XML-документ помещается в теле HTTP-запроса. Используется только HTTPS-протокол.
Справка по формату значений тегов и атрибутов XML.
Запросы в производственной среде отправляются по протоколу HTTPS на URL:
https://api.qiwi.com/xml/topup.jsp
При использовании аутентификации по клиентскому сертификату запросы в производственной среде отправляются по протоколу HTTPS на URL:
https://private-api.qiwi.com/xml/topup.jsp
Необходимо проверять подлинность сервера QIWI с помощью цепочки сертификации и не устанавливать соединение, если проверка не пройдет успешно.
Аутентификация запросов выполняется по логину и паролю, помещаемым в XML-тегах terminal-id
и extra name="password"
, соответственно. Логин и пароль выдаются при подключении к системе QIWI Wallet. Смена пароля выполняется через сотрудников КИВИ Банк (АО) или сотрудников уполномоченного представителя КИВИ Банк (АО).
Для повышения безопасности информационного обмена также может использоваться аутентификация по цифровой подписи или по клиентскому сертификату.
Единственным признаком, на основе которого вы можете принимать решение о успешности или неуспешности выполнения платежа на своей стороне, является статус транзакции в системе QIWI Wallet. Как только вы получили для вашего платежа идентификатор транзакции txn_id
в системе QIWI Wallet, вы можете проверить статус транзакции методом Проверка статуса платежа.
Каждому платежу (набору реквизитов: сумма, валюта, идентификатор клиента в системе QIWI Wallet, идентификатор сервиса) вы должны присваивать уникальный идентификатор.
Сценарий пополнения QIWI Кошелька отображен на диаграмме:
проведения платежа
(запрос "check-deposit-possible") qb->>Agent:Ответ alt Проведение платежа возможно Agent->>qb:Пополнение учетной записи Клиента
(запрос "pay") qb->>qb:Создание кошелька
при отсутствии учетной записи qb->>Agent:Ответ (статус платежа или ошибка) Agent->>Agent:Финальный статус платежа? alt Если финальный статус не получен loop Цикл до получения финального статуса Agent->>qb:Проверка статуса платежа пополнения
(запрос "status") qb->>Agent:Ответ (текущий статус платежа) end end alt Успех / Финал qb->>qb:Зачисление средств на кошелек Клиента end alt Неуспех / Финал Agent->>Agent:Возврат средств Клиенту end end
Логическая последовательность операций при взаимодействии с системой QIWI Wallet должна соответствовать блок-схеме:
платежа
возможно?} B -->|да| C{Учетная запись
существует?} B -->|нет| G[[Платеж НЕ проведен]] C -->|нет| H{Создать Клиента
и зарегистрировать платеж?} C -->|да| K H -->|да| K[Пополнение учетной записи Клиента] H -->|нет, если Клиент не найден,
то платеж не проводить| G K -->KN{Сетевая ошибка?} KN & KER -->|да| KW([Ожидание >= 10 минут]) KER -->|нет| PFS KN -->|нет| KER{Ошибка обработки запроса?} PFS -->|final-status=true| RS{Атрибут status?} PFS -->|final-status=false| MR KW --> MR[Проверка статуса платежа] RS -->|> 100| G RS -->|=60| X[[Платеж проведен]] MR --> MER{Сетевая ошибка?} MER -->|нет| MW{Ошибка обработки запроса?} MW & MER -->|да| KW MW -->|нет| PT{В ответе есть
тег payment с
номером транзакции txn_id?} PT -->|да| PFS{Атрибут final-status?} PT -->|нет| KW
Аутентификация по SSL
Редактировать на GitHub
Помимо аутентификации по логину и паролю, может быть использована аутентификация по сертификатам, а также электронная цифровая подпись.
Аутентификация по цифровой подписи
Для аутентификации по цифровой подписи Контрагент должен создать пару RSA-ключей, например, с помощью утилиты OpenSSL. Размер ключа должен быть 2048 бит, ключ должен быть закодирован в BASE64.
Как создать ключи
- Сгенерировать закрытый ключ. Выполните команду:
openssl genrsa -out private.key 2048
Далее введите пароль и подтвердите:
Enter pass phrase for private.key:
В папке выполнения команды будет создан файл с приватным ключом: private.key
.
- Получить открытый ключ, соответствующий закрытому, командой:
openssl rsa -in private.key -pubout -out public.key
- Контрагент должен передать открытый ключ в QIWI, а закрытый ключ использовать для подписи запросов.
Как подписывать запросы
POST /xml/topup.jsp HTTP/1.1
Content-Type: application/xml
Host: api.qiwi.com
X-Digital-Sign: XXXXXXXX
X-Digital-Sign-Alg: SHA1withRSA
- Для каждого XML-пакета вычисляется хэш от текста XML-запроса с использованием выбранного алгоритма MD5 / SHA1, подписывается сохраненным закрытым ключом и кодируется по схеме Base64. Таким образом формируется ЭЦП пакета.
- В заголовке HTTP запроса передаются следующие параметры для выполнения авторизации и проверки целостности данных пакета:
X-Digital-Sign
– ЭЦП пакета;X-Digital-Sign-Alg
– алгоритм вычисления ЭЦП, выбранный для вычисления хеша. Поддерживаются алгоритмы:MD5withRSA
SHA1withRSA
Аутентификация по клиентскому сертификату
Для аутентификации по клиентскому сертификату Контрагенту необходимо создать, а затем передать запрос на сертификат и открытый ключ в QIWI.
1. Создание CSR-запроса на сертификат
Запрос на сертификат генерируется одновременно с закрытым ключом, например, с помощью утилиты OpenSSL:
openssl req -new -nodes -batch -subj "/C=RU/ST=Russia/L=Moscow/O=QIWI/emailAddress=mail@qiwi.ru" -newkey rsa:2048 -keyout private.key -out cert_request.csr
В запросе Контрагент указывает свои данные: язык, страну, город, название организации и email. В примере запроса указаны данные QIWI.
В папке, в которой была выполнена команда, будет создан файл cert_request.csr
и файл закрытого ключа private.key
.
Далее формируется открытый ключ, соответствующий закрытому. Выполните команду:
openssl rsa -in private.key -pubout -out public.key
2. Получение сертификата
Открытый ключ и запрос на сертификат необходимо передать менеджеру QIWI. Менеджер возвращает Контрагенту СА-сертификат и клиентский сертификат, сформированный в ответ на запрос.
3. Отправка запросов
Запросы к API должны отправляться по адресу:
https://private-api.qiwi.com/xml/topup.jsp
Пример запроса с сертификатом:
user@pc:~/station$ openssl s_client -connect private-api.qiwi.com/xml/topup.jsp:443 -showcerts -CAfile ./CA/our_CA -cert ./my_cert -key ./private_key.pem
Пополнение баланса QIWI Кошелька
Редактировать на GitHub
Запрос используется для перевода средств с агентского счета на счет клиента в системе QIWI Wallet. Перед выполнением запроса необходимо проверить возможность проведения платежа.
Вы должны указывать тип средств, которые получены Контрагентом от клиента – наличные или безналичные средства, в параметре запроса extra name="income_wire_transfer"
.
Если клиент с указанным номером кошелька не существует в системе QIWI Wallet и проведение платежа возможно, то клиент будет создан в момент регистрации платежа.
После успешного выполнения запроса платёж начинает жизненный цикл в системе QIWI Wallet. Каждому этапу жизненного цикла соответствует определённый статус платежа. Цикл заканчивается после получения финального статуса платежа. Признак финального статуса указан в списке возвращаемых API статусов платежа.
Если в ответе на запрос выплаты получен нефинальный статус платежа, то для проверки успешного прохождения платежа вы должны периодически (но не чаще одного раза в 10 минут) выполнять запрос проверки статуса платежа до получения успешного или неуспешного финального статуса платежа.
Формат запроса
Параметры запроса
<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>pay</request-type>
<terminal-id>123</terminal-id>
<extra name="password">***</extra>
<extra name="income_wire_transfer">1</extra>
<auth>
<payment>
<transaction-number>12345678</transaction-number>
<from>
<ccy>RUB</ccy>
</from>
<to>
<amount>1115.00</amount>
<ccy>RUB</ccy>
<service-id>99</service-id>
<account-number>79181234567</account-number>
</to>
</payment>
</auth>
</request>
Тег | Описание |
---|---|
request | Группирующий тег. Дочерние теги содержат параметры платежа. |
request-type | Тип запроса (идентификатор запроса пополнения QIWI Кошелька: pay ) |
terminal-id | Идентификатор агента в системе QIWI Wallet |
extra name="password" | Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet |
extra name="income_wire_transfer" | Экстра-поле, содержащее целочисленный признак безналичных (1) или наличных (0) средств, полученных от Клиента |
auth | Группирующий тег, описывает платежные данные |
payment | Группирующий тег, описывает единичный платеж. В запросе может присутствовать только один тег payment . |
transaction-number | Номер транзакции платежа в информационной системе агента. Его необходимо использовать при проверке статуса платежа. Номер транзакции и идентификатор terminal-id однозначно определяют платёж в системе QIWI Wallet. |
from | Группирующий тег, содержит информацию о сумме, полученной агентом от клиента |
from/ccy | Валюта счета агента, с которого будет произведено списание денежных средств (в качестве значения используется цифровой или буквенный код валюты по ISO 4217) |
from/service-id | Идентификатор источника (канала) пополнения (необязательный параметр). Параметр используется в случае необходимости разделения потоков пополнения QIWI Кошельков, сохраняя единый баланс агента. |
to | Группирующий тег, содержит информацию о платеже |
to/amount | Сумма к зачислению на баланс учетной записи Клиента в системе QIWI Wallet. Система QIWI Wallet накладывает ограничения на сумму платежа, исходя из условий на остаток денежных средств учетной записи Клиента QIWI Wallet, указанных в оферте пользователя по адресу https://static.qiwi.com/ru/doc/oferta_lk.pdf. Платежи с суммой, менее разрешенной и более разрешенной, завершатся с ошибками 241 и 242 соответственно. |
to/service-id | Идентификатор сервиса (константа: 99 ) |
to/account-number | Идентификатор Клиента в системе QIWI Wallet (номер телефона Клиента системы QIWI Wallet в международном формате) |
to/ccy | Валюта счета получателя, на который будут зачислены денежные средства (в качестве значения используется цифровой или буквенный код валюты по ISO 4217). |
to/extra="comment" | Экстра-поле, содержащее комментарий (необязательный параметр) |
Формат ответа
При возникновении сетевых ошибок (например, таймауты при соединении или чтении ответа), HTTP-ошибок (HTTP-статус не равен 200, пустой ответ), некорректных XML-документов (например, c отсутствующими обязательными тегами и/или атрибутами) вы должны перейти к периодическому запросу статуса до получения успешного или неуспешного финального статуса платежа. Поскольку в таких случаях информация о статусе платежа не доступна, вы не должны отклонять платёж на своей стороне.
Формат ответа API зависит от того, как сервер обработал запрос:
- ответ без ошибок обработки запроса - в случае, когда запрос обработан корректно;
- ответ с ошибкой обработки запроса - в случае, когда сервер не смог обработать запрос (информация о платеже не получена).
Ответ без ошибок обработки запроса
<?xm version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<payment status='60' txn_id='6060' transaction-number='12345678' result-code='0' message='Ok' msg='Ok' final-status='true' fatal-error='false' txn-date='02.03.2011 14:35:46' >
<from>
<amount>1115.00</amount>
<ccy>643</ccy>
</from>
<to>
<service-id>99</service-id>
<amount>1000.00</amount>
<ccy>643</ccy>
<account-number>79181234567</account-number>
</to>
</payment>
<balances>
<balance code="428">0.00</balance>
<balance code="643">200.00</balance>
<balance code="840">12.20</balance>
</balances>
</response>
Если запрос обработан корректно, то в ответе возвращаются сведения о платеже в теге <payment>
.
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
response | Группирующий тег ответа. | Отсутствуют. |
result-code | Код ошибки обработки запроса. | fatal – логический признак фатальности ошибки обработки запроса. |
payment | Описание принятого платежа. | status – статус платежа в системе QIWI Wallet;txn_id – идентификатор транзакции платежа в системе QIWI Wallet. Если не заполнен, платёж не был зарегистрирован из-за временной ошибки. Попробуйте повторить запрос позже;transaction-number – номер транзакции платежа в информационной системе Контрагента;result-code – код ошибки обработки платежа;message , msg - текстовое описание ошибки;final-status – логический признак финального статуса платежа;fatal-error - логический признак фатальности ошибки обработки платежа (фатальная ошибка означает, что повторный запрос с теми же реквизитами приведет к повторению той же ошибки);txn-date – дата приема платежа в систему QIWI Wallet. |
from | Группирующий тег, содержит информацию о списанных средствах. | Отсутствуют. |
from/amount | Сумма, списанная со счета Контрагента. | Отсутствуют. |
from/ccy | Валюта счета (в качестве значения используется цифровой или буквенный код валюты по ISO 4217). | Отсутствуют. |
to | Группирующий тег, содержит информацию о платеже. | Отсутствуют. |
to/amount | Сумма к зачислению на баланс учетной записи Клиента в системе QIWI Wallet. | Отсутствуют. |
to/service-id | Идентификатор сервиса, на который производится зачисление средств (константа: 99). | Отсутствуют. |
to/account-number | Идентификатор Клиента в системе QIWI Wallet. | Отсутствуют. |
to/ccy | Валюта платежа (цифровой или буквенный код валюты по ISO 4217). | Отсутствуют. |
balances | Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. | Отсутствуют. |
balances/balance | Текущий баланс единичного счета Контрагента в системе QIWI Wallet | code - цифровой код валюты счета (в формате ISO 4217). |
Ответ с ошибками обработки запроса
Если сервер не смог обработать запрос на пополнение баланса учетной записи Клиента в системе QIWI Wallet, API возвращает ответ с кодом произошедшей ошибки. В этом случае информация о платеже отсутствует в ответе, поэтому вы должны перейти к периодическому запросу статуса, не отклоняя платёж на своей стороне.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса. | fatal – логический признак фатальности ошибки обработки запроса. Фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки. Фатальные ошибки обработки запроса, как правило, вызваны ошибками конфигурирования и требуют ручного вмешательства (обращения в службу поддержки сервиса QIWI Wallet по адресу bss@qiwi.com). При появлении таких ошибок вы можете либо не приостанавливать выполнение повторных запросов, либо приостановить до устранения ошибок конфигурирования;message , msg - текстовое описание ошибки. |
Проверка статуса платежа
Редактировать на GitHub
С момента регистрации платеж проходит стадии жизненного цикла, изменяющие его статус. Каждый статус задается уникальным числовым идентификатором.
Проведение платежа считается завершенным, когда он достигает финального статуса. Значения статусов с указанием признака финальности приведены в разделе Статусы платежей.
Для проверки успешного прохождения платежа, вы должны периодически выполнять данный запрос до получения успешного или неуспешного финального статуса. Запрос позволяет получить текущий статус платежа.
Формат запроса
Параметры запроса
<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>pay</request-type>
<extra name="password">XXXXXX</extra>
<terminal-id>123</terminal-id>
<status>
<payment>
<transaction-number>12345678</transaction-number>
<to>
<account-number>79181234567</account-number>
</to>
</payment>
</status>
</request>
Тег | Описание |
---|---|
request | Группирующий тег. Дочерние теги содержат параметры платежа. |
request-type | Тип запроса (равен идентификатору запроса пополнения QIWI Кошелька: pay ) |
terminal-id | Идентификатор агента в системе QIWI Wallet |
extra name="password" | Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet |
status | Группирующий тег, содержит список платежей, по которым необходимо получить текущий статус. Данный тег может содержать один или более тегов payment |
payment | Группирующий тег, содержит данные единичного платежа, статус которого запрашивается. |
transaction-number | Номер транзакции платежа в информационной системе Контрагента. Должен совпадать с номером, указанным при создании этого платежа. В сочетании с идентификатором Контрагента номер транзакции однозначно идентифицирует платёж в системе QIWI Wallet. Значение остается неизменным в течение жизненного цикла платежа. |
to | Группирующий тег, содержит информацию о платеже |
to/account-number | Идентификатор Клиента в системе QIWI Wallet (номер телефона Клиента системы QIWI Wallet в международном формате) |
Формат ответа
При возникновении сетевых ошибок (например, таймауты при соединении или чтении ответа), HTTP-ошибок (HTTP-статус не равен 200, пустой ответ), некорректных XML-документов (например, c отсутствующими тегами и/или атрибутами) вы должны сделать повторный запрос. В таких случаях информация о статусе платежа не доступна, поэтому вы не должны отклонять платеж на своей стороне.
Формат ответа зависит от того, как сервер обработал запрос:
- ответ без ошибок обработки запроса - в случае, когда запрос обработан корректно;
- ответ с ошибкой обработки запроса - в случае, когда сервер не смог обработать запрос.
При возврате ответов с ошибками запроса или с нефинальными статусами платежей вы должны сделать повторный запрос проверки статуса платежа.
Ответ без ошибок обработки запроса
Если запрос обработан корректно, то в ответе возвращаются сведения о статусе платежа в теге <payment>
.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<payment status='60' transaction-number='12345678' txn_id='759640439' result-сode='0' message='' msg='' final-status='true' fatal-error='false' txn-date='12.03.2012 14:24:38' />
<balances>
<balance code="643">90.79</balance>
<balance code="840">0.00</balance>
</balances>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
response | Группирующий тег ответа. | Отсутствуют. |
result-code | Код ошибки обработки запроса. | fatal – логический признак фатальности ошибки обработки запроса. |
payment | Описание платежа, статус которого запрошен. В случае запроса статуса по нескольким платежам в ответе содержится соответствующее количество тегов payment. В случае, если запрашиваемый платеж не найден в системе QIWI Wallet, соответствующий тег payment будет отсутствовать в ответе. | status – статус платежа в системе QIWI Wallet;txn_id – идентификатор транзакции платежа в системе QIWI Wallet;transaction-number – номер транзакции платежа в информационной системе Контрагента;result-code – код ошибки обработки платежа;message , msg - текстовое описание ошибки;final-status – логический признак финального статуса платежа;fatal-error - логический признак фатальности ошибки обработки платежа (фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки);txn-date – дата приема платежа в систему QIWI Wallet. |
balances | Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. | Отсутствуют. |
balances/balance | Текущий баланс единичного счета Контрагента в системе QIWI Wallet. | code - цифровой код валюты счета (в формате ISO 4217). |
Ответ с ошибками обработки запроса
Если сервер не смог обработать запрос на получение статуса платежа, API возвращает ответ с кодом произошедшей ошибки. В этом случае информация о статусе платежа отсутствует в ответе, поэтому вы должны продолжать запросы статуса, не отклоняя платеж на своей стороне.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса | fatal – логический признак фатальности ошибки обработки запроса. Фатальность ошибки означает, что повторный запрос с теми же параметрами приведет к повторению той же ошибки. Фатальные ошибки обработки запроса, как правило, вызваны ошибками конфигурирования и требуют ручного вмешательства. При появлении таких ошибок вы можете либо не приостанавливать выполнение повторных запросов, либо приостановить до устранения ошибок конфигурирования;message , msg - текстовое описание ошибки. |
Проверка возможности проведения платежа
Редактировать на GitHub
Данным запросом вы должны проверить, возможно ли проведение платежа для пополнения учетной записи клиента в системе QIWI Wallet.
Если вам необходима только проверка регистрации учетной записи, то используйте этот запрос.
Формат запроса
Параметры запроса
<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>check-deposit-possible</request-type>
<terminal-id>123</terminal-id>
<extra name="password">XXXXX</extra>
<extra name="phone">79031234567</extra>
<extra name="income_wire_transfer">1</extra>
</request>
Тег | Описание |
---|---|
request | Группирующий тег |
request-type | Тип запроса (идентификатор запроса проверки возможности проведения платежа: check-deposit-possible ). |
terminal-id | Идентификатор агента в системе QIWI Wallet. |
extra name="password" | Экстра-поле, содержащее пароль для аутентификации агента в системе QIWI Wallet. |
extra name="phone" | Экстра-поле, содержащее номер телефона клиента. |
extra name="income_wire_transfer" | Экстра-поле, содержащее целочисленный признак безналичных (1) или наличных (0) средств, полученных от клиента для пополнения его учетной записи в системе QIWI Wallet. |
extra name="ccy" | Экстра-поле, содержащее код валюты учетной записи клиента. Опциональный параметр. В случае его передачи проверяется возможность проведения платежа для пополнения учетной записи в данной валюте. В качестве значения используется цифровой или буквенный код валюты по ISO 4217. |
Формат ответа
Ответ без ошибок обработки запроса
Если запрос обработан корректно, то в ответе возвращаются сведения о возможности проведения платежа.
Пример ответа - проведение платежа возможно
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<exist>1</exist>
<deposit-possible>1</deposit-possible>
</response>
Пример ответа - проведение платежа невозможно
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="true" message="Недостаточный статус идентификации кошелька для проведения платежа" msg="Недостаточный статус идентификации кошелька для проведения платежа">204</result-code>
<exist>1</exist>
<deposit-possible>0</deposit-possible>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса. | fatal – логический признак фатальности ошибки обработки запроса. |
exist | Целочисленный флаг, указывающий на существование учетной записи клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:0 – учетная запись клиента не зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy"> ), это означает, что у клиента нет учетной записи в данной валюте);1 – учетная запись клиента зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy"> ), это означает, что клиент имеет учетную запись в данной валюте). |
Отсутствуют. |
deposit-possible | Целочисленный флаг, указывающий на возможность пополнения учетной записи клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:0 – учетную запись клиента нельзя пополнить указанным в запросе типом средств. Платеж будет отклонён.1 – учетную запись клиента можно пополнить указанным в запросе типом средств. |
Отсутствуют. |
Ответ с ошибками обработки запроса
Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса | fatal – логический признак фатальности ошибки обработки запроса;message , msg - текстовое описание ошибки. |
Проверка регистрации клиента
Редактировать на GitHub
Данным запросом вы можете до проведения платежа проверить, зарегистрирована ли учетная запись Клиента в системе QIWI Wallet.
Проверка существования учетной записи Клиента не является обязательной для регистрации платежа. При успешной регистрации платежа отсутствующая в системе QIWI Wallet учетная запись Клиента создаётся автоматически.
Формат запроса
Параметры запроса
<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>check-user</request-type>
<terminal-id>123</terminal-id>
<extra name="password">XXXXX</extra>
<extra name="phone">79031234567</extra>
<extra name="ccy">RUB</extra>
</request>
Тег | Описание |
---|---|
request | Группирующий тег |
request-type | Тип запроса (идентификатор запроса проверки существования учетной записи Клиента в системе: check-user ) |
terminal-id | Идентификатор агента в системе QIWI Wallet |
extra name="password" | Экстра-поле, содержащее пароль для аутентификации агента в системе QIWI Wallet |
extra name="phone" | Экстра-поле, содержащее номер телефона Клиента, регистрацию учетной записи которого необходимо проверить |
extra name="ccy" | Экстра-поле, содержащее код валюты учетной записи Клиента. Опциональный параметр. В случае его передачи проверяется наличие у Клиента учетной записи в данной валюте. В качестве значения используется цифровой или буквенный код валюты по ISO 4217. |
Формат ответа
Ответ без ошибок обработки запроса
Если запрос обработан корректно, то в ответе возвращаются сведения о Клиенте.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<exist>1</exist>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса. | fatal – логический признак фатальности ошибки обработки запроса. |
exist | Флаг, указывающий на существование учетной записи Клиента в системе QIWI Wallet. Флаг передается в ответе только в случае удачной обработки запроса (с кодом ошибки 0). Флаг может принимать значения:0 – учетная запись Клиента не зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy"> ), это означает, что у Клиента нет учетной записи в данной валюте);1 – учетная запись Клиента зарегистрирована в системе QIWI Wallet (в случае если в исходном запросе указана валюта (тег <extra name="ccy"> ), это означает, что Клиент имеет учетную запись в данной валюте). |
Отсутствуют. |
Ответ с ошибками обработки запроса
Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса | fatal – логический признак фатальности ошибки обработки запроса;message , msg - текстовое описание ошибки. |
Запрос баланса контрагента
Редактировать на GitHub
Данный запрос возвращает текущий баланс по агентскому договору в сервисе QIWI Кошелек.
Формат запроса
Параметры запроса
<?xml version="1.0" encoding="utf-8"?>
<request>
<request-type>ping</request-type>
<terminal-id>44</terminal-id>
<extra name="password">password</extra>
</request>
Параметр | Описание |
---|---|
request | Группирующий тег |
request-type | Тип запроса (идентификатор запроса баланса: ping ) |
terminal-id | Идентификатор агента в системе QIWI Wallet |
extra name="password" | Экстра-поле, содержащее пароль для аутентификации в системе QIWI Wallet |
Формат ответа
Ответ без ошибок обработки запроса
Если запрос обработан корректно, то в ответе возвращаются сведения об агентском балансе.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false">0</result-code>
<balances>
<balance code="428">100.00</balance>
<balance code="643">200.26</balance>
<balance code="840">300.00</balance>
</balances>
</response>
Параметры ответа:
Параметр | Описание | Атрибуты |
---|---|---|
response | Группирующий тег ответа. | Отсутствуют. |
result-code | Код ошибки обработки запроса. | fatal - логический признак фатальности ошибки обработки платежа. |
balances | Группирующий тег, содержит информацию о балансе всех активных счетов Контрагента в системе QIWI Wallet. | Отсутствуют. |
balance | Текущий баланс единичного счета Контрагента в системе QIWI Wallet. | code - цифровой код валюты счета (в формате ISO 4217). |
Ответ с ошибками обработки запроса
Если сервер не смог обработать запрос, API возвращает ответ с кодом произошедшей ошибки.
<?xml version="1.0" encoding="utf-8"?>
<response>
<result-code fatal="false" message="Неизвестная ошибка" msg="Неизвестная ошибка">300</result-code>
</response>
Параметры ответа:
Тег | Описание | Атрибуты |
---|---|---|
result-code | Код ошибки обработки запроса | fatal – логический признак фатальности ошибки обработки запроса;message , msg - текстовое описание ошибки. |
Статусы платежей
Редактировать на GitHub
Для платежных запросов (пополнение кошелька, проверка статуса платежа) API возвращает статус платежа в атрибуте status
тега <payment>
.
Финальный статус означает, что жизненный цикл платежа в сервисе QIWI Wallet завершен и его статус больше не изменится.
API возвращает статусы из следующих диапазонов:
Статус | Описание | Финальный статус |
---|---|---|
-1 | Платеж не был зарегистрирован из-за временной ошибки. Попробуйте повторить запрос позже. Если ранее на запрос пополнения баланса вы получили статус отличный от -1, то продолжайте запрашивать статус платежа, до получения финального статуса | |
0-49 | Платеж принят, но ждет подтверждения со стороны системы QIWI Wallet. Свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com | - |
50-59 | Платеж находится в проведении. Средства списаны со счета Контрагента. | - |
50 | Платеж принят в обработку | - |
52 | Средства зачисляются на счет Клиента | - |
60 | Платеж проведен. Успех | + |
> 100 | Ошибка проведения платежа. Средства возвращены на баланс Контрагента. Особые статусы см. ниже | + |
150 | Платеж не принят | + |
151 | Ошибка авторизации платежа | + |
160 | Платеж не проведен или отменен | + |
Коды ошибок обработки платежа
Для платежных запросов (пополнение кошелька, проверка статуса платежа) API возвращает информационный код ошибки обработки платежа в атрибуте result-code
тега <payment>
.
Код ошибки | Описание ошибки |
---|---|
0 | Ошибок нет |
155 | Запрещен прием платежей в пользу данного сервиса (тег to/service-id в запросе проведения платежа должен быть равен 99 ) |
204 | Недостаточный статус идентификации кошелька для проведения платежа |
215 | Запрос проведения платежа содержит уже существующий номер транзакции платежа (transaction-number ), но другие реквизиты платежа. Необходимо привести реквизиты платежа в соответствие данному номеру транзакции платежа. |
220 | Недостаточно средств на счете для проведения платежа |
241 | Сумма платежа меньше допустимой |
242 | Сумма платежа больше допустимой |
298 | Учетная запись Клиента с введенным номером телефона не может быть зарегистрирована в системе QIWI Wallet. Ошибочный номер телефона Клиента |
300 | Неизвестная ошибка обработки платежа. Обратитесь к техническим специалистам системы QIWI Wallet: bss@qiwi.com |
316 | Попытка авторизации заблокированного Контрагента |
319 | Запрет на пополнение учетной записи данного номера телефона |
700 | Превышен месячный лимит на операции |
702 | Превышен лимит на остаток учетной записи Клиента в системе QIWI Wallet |
При появлении не описанных в данной таблице ошибок свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com.
Коды ошибок обработки запроса
Данные коды возвращаются в теге <result-code>
ответа API. Ошибки с кодом > 0 возвращаются, если сервер не смог обработать запрос (в ответе отсутствуют запрашиваемые данные).
Код ошибки | Описание ошибки |
---|---|
0 | Ошибок нет |
13 | Повторите запрос через минуту |
150 | Ошибка авторизации. Уточните логин и пароль, а затем повторите запрос |
300 | Неизвестная ошибка. Повторите запрос |
339 | Ограничение по IP адресу |
При появлении не описанных в данной таблице ошибок свяжитесь с техническими специалистами системы QIWI Wallet: bss@qiwi.com.
Формат XML-данных
Тег/атрибут | Тип данных |
---|---|
request-type |
Строка буквенных символов |
terminal-id |
Целое положительное число |
transaction-number |
Целое положительное число до 20 разрядов |
amount |
Дробное число (2 знака после запятой, разделителем является точка) |
to/service-id |
Константа (99 ) |
from/service-id |
Целое положительное число |
to/account-number |
Номер телефона в международном формате без лидирующего знака + |
final-status |
Логическое значение (true/false ) |
fatal-error |
Логическое значение (true/false ) |
txn-date |
Временная метка в следующем формате:dd.MM.yyyy HH:mm:ss |
balance |
Дробное число (2 знака после запятой, разделителем является точка) |
fatal |
Логическое значение (true/false ) |
exist |
0/1 |
income_wire_transfer |
0/1 |
"password" |
Строка символов |
"comment" |
Строка символов (до 1000 символов) |
"phone" |
Номер телефона в международном формате без лидирующего знака + |
"deposit-possible" |
0/1 |