API QIWI Кошелька позволяет автоматизировать выполнение платежей и получение отчетов о платежах, информации о вашем счёте в сервисе QIWI Кошелек.
Методы API доступны после регистрации пользователя в сервисе QIWI Кошелек.
API для автоматизации своего QIWI кошелька
License: MIT License
API QIWI Кошелька позволяет автоматизировать выполнение платежей и получение отчетов о платежах, информации о вашем счёте в сервисе QIWI Кошелек.
Методы API доступны после регистрации пользователя в сервисе QIWI Кошелек.
Здравствуйте!
https://edge.qiwi.com/sinap/providers/{id}/onlineCommission
Все сделано по мануалу, но ни ошибок ни другого ответа не получаю.
Что делать?
Не хватает проверки уровня идентификации получателя или его лимитов.
Часто получатель с лимитом 15тыс. руб делает заявку на 30 тыс. руб. Из-за чего платеж бракуется по превышению лимита.
В методе Автозаполнение платежных форм очень не хватает возможности выбрать сразу метод оплаты, который появился в новой форме.
Например – выбрать за пользователя способ оплаты Картой.
И проскролить экран сразу на ввод карты + фокус на поле ввода карты.
Результат – пользователь переходит по ссылке и сразу переходит к вводу данных карты.
Добавить возможность блокировать поля получателя платежа.
Номер Кошелька получателя, Комментарий, Сумма – readonly
У вас там все хорошо?
Вы при переводе с автоматической конвертацией создаете 3 транзакцией?!
Причем 1 и 2 одинаковы по txnId и по trmTxnid, которые должны быть разные. У вас все хорошо, мейби у вас там кто-то устал работать? Уже больше года такая история.
Сегодня взорвался. Простите.
Нужен удобный способ, чтобы узнать доступные для перевода объемы денежных средств. Насколько я понимаю, текущие объемы по переводам можно было бы узнавать с помощью раздела "Статистика платежей", но возникает вопрос: что делать, если были переводы в различной валюте?
Очень не хватает возможности узнать срок годности токена при помощи самого токена.
.
Очень частно нужно запросить данные по номеру клиентской транзакции так как именно этот номер фигурирует в бумажном чеке (trmTxnId).. В API есть метод которые отдает данные по txnId, но он не подходит так как изначально у нас нет этого номера.. Получается надо сначала получить список платежей со всеми данными, потом в нужной записи вычленить txnId и по нему получить запись с помощью метода отдающего по транзакции.Зачем? если в списке уже есть нужные данные?!!! добавьте пожалуйста поиск по trmTxnId.
Обращение к методу
https://qiwi.com/card/detect.action
отдает 500 ошибку при любых комбинациях параметра и заголовков.
Сейчас для того, чтобы узнать что пришел новый платеж – необходимо периодически дергать API входящих платежей (polling).
Push принцип существенно разгрузит ваш сервер от лишних запросов, а также поможет разработчикам создавать решения, которые будут быстрее реагировать на оплату.
Как самый просто вариант – это webhook на endpoint клиента (указанный через отдельный метод) с телом новой транзакции.
Хороший пример – Telagram Bot API https://core.telegram.org/bots/api#getting-updates
Последний элемент, похоже что должно быть наоборот value в shortName
и longName
[ { "id": 36196, "shortName": "Покупка", "longName": "Покупка доместик в рублях", "logoUrl": null, "description": null, "keys": null, "siteUrl": null, "extras": [] }, { "id": 32064, "shortName": "Заказ карты QIWI", "longName": "Заказ карты QIWI", "logoUrl": "https://static.qiwi.com/img/providers/logoBig/32064_l.png", "description": null, "keys": "visa, qww, virtual visa, карта виза, визу купить, виртуальная виза, банковская карта, оплата в интернете, казино, покер, ставки, ставки на спорт, casino, poker, покупки в интернете, wow, warcraft, eve, paypal, amazon, itunes, world of warcraft, лотереи", "siteUrl": null, "extras": [ { "key": "favorite_payment_disabled", "value": "true" }, { "key": "regular_payment_disabled", "value": "true" } ] }, { "id": 32064, "shortName": "Заказ карты QIWI", "longName": "Заказ карты QIWI", "logoUrl": "https://static.qiwi.com/img/providers/logoBig/32064_l.png", "description": null, "keys": "visa, qww, virtual visa, карта виза, визу купить, виртуальная виза, банковская карта, оплата в интернете, казино, покер, ставки, ставки на спорт, casino, poker, покупки в интернете, wow, warcraft, eve, paypal, amazon, itunes, world of warcraft, лотереи", "siteUrl": null, "extras": [ { "key": "favorite_payment_disabled", "value": "true" }, { "key": "regular_payment_disabled", "value": "true" } ] }, { "id": 32064, "shortName": "Заказ карты QIWI", "longName": "Заказ карты QIWI", "logoUrl": "https://static.qiwi.com/img/providers/logoBig/32064_l.png", "description": null, "keys": "visa, qww, virtual visa, карта виза, визу купить, виртуальная виза, банковская карта, оплата в интернете, казино, покер, ставки, ставки на спорт, casino, poker, покупки в интернете, wow, warcraft, eve, paypal, amazon, itunes, world of warcraft, лотереи", "siteUrl": null, "extras": [ { "key": "favorite_payment_disabled", "value": "true" }, { "key": "regular_payment_disabled", "value": "true" } ] }, { "id": 36196, "shortName": "Покупка", "longName": "Покупка доместик в рублях", "logoUrl": null, "description": null, "keys": null, "siteUrl": null, "extras": [] }, { "id": 32064, "shortName": "Заказ карты QIWI", "longName": "Заказ карты QIWI", "logoUrl": "https://static.qiwi.com/img/providers/logoBig/32064_l.png", "description": null, "keys": "visa, qww, virtual visa, карта виза, визу купить, виртуальная виза, банковская карта, оплата в интернете, казино, покер, ставки, ставки на спорт, casino, poker, покупки в интернете, wow, warcraft, eve, paypal, amazon, itunes, world of warcraft, лотереи", "siteUrl": null, "extras": [ { "key": "favorite_payment_disabled", "value": "true" }, { "key": "regular_payment_disabled", "value": "true" } ] }, { "id": 36196, "shortName": "Покупка", "longName": "Покупка доместик в рублях", "logoUrl": null, "description": null, "keys": null, "siteUrl": null, "extras": [] }, { "id": 7, "shortName": "QIWI Кошелек", "longName": "QIWI Кошелек", "logoUrl": null, "description": null, "keys": "мобильный кошелек, кошелек, перевести деньги, личный кабинет, отправить деньги, перевод между пользователями", "siteUrl": null, "extras": [] }, { "id": 7, "shortName": "QIWI Кошелек", "longName": "QIWI Кошелек", "logoUrl": null, "description": null, "keys": "мобильный кошелек, кошелек, перевести деньги, личный кабинет, отправить деньги, перевод между пользователями", "siteUrl": null, "extras": [] }, { "id": 1057, "shortName": "QIWI Кошелек , пополнение, ЛК провайдеры", "longName": "QIWI Кошелек", "logoUrl": "https://static.qiwi.com/img/providers/logoBig/99_l.png", "description": null, "keys": "qiwi кошелек, wallet, перевести, qiv, qivi, киви кошелек, Мобильный кошелек, Мобильный кошелёк, кошелек, Личный Кабинет, киви, qiwi, личный кабинет qiwi, перевод между пользователями, перевод денег, kivi, электронные деньги, отправить деньги, kiwi", "siteUrl": "http://qiwi-in-use.livejournal.com/154487.html", "extras": [] } ]
Здравствуйте,
есть ли в планах добавить в информацию о транзакциях сумму и валюту в которой транзакция инициировалась? Например для платежей по пластиковым картам Qiwi это будет валюта той страны в которой выставили счёт и произошла оплата. Такая информация сейчас есть на сайте в отчётах по картам, но было бы хорошо иметь её и в API в списке транзакций
Предлагаю добавить актуальные лимиты кошелька и раскрыть возможные варианты лимитов.
GET https://edge.qiwi.com/qw-limits/v1/persons/79628647452/actual-limits
На данный момент это (query params):
types[0]: REFILL
types[1]: TURNOVER
types[2]: PAYMENTS_PROVIDER_PAYOUT
types[3]: PAYMENTS_P2P
types[4]: PAYMENTS_PROVIDER_INTERNATIONALS
types[5]: WITHDRAW_CASH
Возможно ли будет продление ранее выданного токена без повторного запроса СМС, или же возможно offline токена, для использования в web приложениях ?
Необходим URL, или параметр для тестового проведения платежей без собственно совершения операции.
Это сделано для других API (https://developer.qiwi.com/ru/payout-payment/#testservice), для личного не нашел.
Предлагаю расширить коды ошибок для транзакций:
{
"3": "Техническая ошибка, нельзя отправить запрос провайдеру",
"4": "Неверный формат счета/телефона",
"5": "Номер не принадлежит оператору",
"8": "Прием платежа запрещен по техническим причинам",
"13": "Сервер занят, повторите запрос через минуту",
"74": "Ошибка платежа. Временный технический сбой",
"130": "Платеж в адрес выбранного провайдера невозможен",
"131": "Платежи на выбранного провайдера запрещено проводить из данной страны.",
"155": "Прием платежа для данного провайдера запрещен",
"202": "Ошибка в параметрах запроса",
"203": "Ошибка авторизации пользователя",
"206": "Кошелек временно заблокирован службой безопасности. Обратитесь в поддержку",
"220": "Недостаточно средств",
"241": "Сумма платежа меньше минимальной",
"242": "Сумма платежа больше максимальной",
"270": "Ошибка на стороне провайдера (получателя)",
"300": "Техническая ошибка. Проверьте правильность введенных данных или повторите попытку позже. Возможно отправитель и получатель совпадают!",
"319": "Платеж невозможен",
"402": "Вас давно не было. =( Начните авторизацию заново.",
"500": "По техническим причинам этот платеж не может быть выполнен. Для совершения платежа обратитесь, пожалуйста, в свой обслуживающий банк",
"521": "Неверный счет или БИК плательщика",
"522": "Неверный номер или срок действия карты получателя",
"542": "Неверный номер карты получателя",
"544": "Ошибка платежа",
"547": "Ошибка в сроке действия карты получателя",
"548": "Истек срок действия карты получателя",
"561": "Платеж отвергнут оператором банка получателя",
"601": "Недопустимое значение кода подтверждения",
"702": "Платеж не проведен из-за ограничений у получателя",
"705": "Ежемесячный лимит платежей и переводов для статуса Стандарт - 200 000 р. Для увеличения лимита пройдите идентификацию.",
"704": "Ошибка платежа",
"745": "Ошибка платежа",
"746": "Превышен лимит по платежам в пользу провайдера",
"747": "Превышен лимит по платежам в пользу провайдера",
"750": "Ошибка платежа",
"780": "Проведение платежа запрещено СБ",
"801": "Кажется, что-то пошло не так. Пожалуйста, авторизуйтесь заново",
"852": "Превышен лимит по платежам в пользу провайдера",
"868": "Платеж не проведен. 5 000 рублей — лимит на переводы в месяц. Повысьте статус идентификации в Профиле и переводите без ограничений.",
"893": "Срок действия перевода истек",
"901": "Ошибка платежа",
"934": "Cервис недоступен в стране пользователя",
"943": "Ошибка платежа",
"1001": "Кажется, что-то пошло не так. Повторите попытку позже.",
"1018": "Пул номеров страны не активен",
"1021": "Ограничение исходящих платежей",
"1022": "Пополнение чужого номера запрещено",
"1050": "Превышен лимит на операции, либо превышен дневной лимит на переводы на карты Visa/MasterCard",
"1066": "Ошибка платежа",
"7700": "Провайдер заблокирован",
"7703": "Персона заблокирована"
}
``
Сейчас, при выставлении счета можно дополнительно указать:
в ссылке на оплату через query params.
но в админке p2p вы даете информацию о:
{
"merchantUid": "aaabbbccc",
"merchantSiteUid": "aaabbbccddd",
"themeCode": "aaabbbcc-code",
"widgetMerchantName": "firstname_dot_middlename",
"widgetDescription": "",
"widgetButtonText": "",
"merchantSitePublicKey": "pub_key",
"widgetAliasCode": "alias",
"widgetSuccessUrl": null,
"widgetMerchantEmail": null,
"widgetMerchantOffer": null,
"widgetMerchantMetric": null,
"widgetMerchantInfo": null,
"paymentMethodsData": [],
"widgetTypeCode": "PREORDER",
"widgetStyles": [
{
"widgetStyleCode": "PAY_FORM_MERCHANT_NAME",
"widgetStyleValue": "some_value"
},
{
"widgetStyleCode": "PREORDER_ENABLE_GRADIENT",
"widgetStyleValue": "0"
},
{
"widgetStyleCode": "PREORDER_PRIMARY_COLOR",
"widgetStyleValue": "#ffffff"
},
{
"widgetStyleCode": "SECONDARY_COLOR",
"widgetStyleValue": "#ffffff"
}
],
"widgetPaymentSumAmount": []
}
Может эти параметры передавать в customFields или эти поля можно настроить как-то другим способом?
Когда появится возможность через API узнавать о появлении выставленных счетов и оплачивать их ?
Обещали определиться еще в октябре.
Выбирая различные комбинации прав доступа получаю следующие результаты:
UPD: 3. Общая информация и баланс - доступны история, общая информация И баланс
Неочевидное поведение, как по мне. Платежи я не пробовал, но если они тоже работают при отсутствии прав доступа у токена, то это совсем печально.
Добавьте в документацию, что можно получать инфу про свой никнейм через:
GET: https://edge.qiwi.com/qw-nicknames/v1/persons/{PESON_ID}/nickname
Конвертация происходит через 1099 провайдера, а не через 99. Поправьте пожалуйста
В документации в разделе "История платежей" поле data[].account обозначено как "Номер счета получателя", хотя скорее это "Номер счета контрагента", там может быть и получатель, и отправитель в зависимости от типа операции
Делаю запрос на https://edge.qiwi.com/sinap/api/v2/terms/99/payments
С примерно такими данными в теле:
request_json = {
"id": check_id,
"sum": {"amount": amount, "currency": "643"},
"paymentMethod": {"type": "Account", "accountId": "643"},
"fields": {"account": qiwi_account_number},
}
Заголовки запроса так же есть, токен и тд - все, как в документации
Результат - падает ошибка QWPRC-300 "Техническая ошибка"
Дайте пожалуйста настройки безопасности из апи. Старый интерфейс пора закрывать уже через tgsts токены.
Пользуемся пакетом киви мастер, много карт. Есть необходимость выгружать данные по картам и транзакции себе в crm . Задача не сложная. Данные карт загружаются, но выписка через API приходит в бинарном виде в формате PDF, есть ли способы получать выписку по каждой карте в json? Транзакции из API самого кошелька не содержат идентификатора карты или PAN, только последние цифры ********8888 и привязать к какой-то конкретной карте транзакцию не получается, есть ли способы для реализации такой задачи?
Предлагаю изменить в документации версию апи метода "Данные идентификации" на 4 версию. В данной версии предоставляется информация об актуальности паспортных данных владельца кошелька.
Версия: 4
Поле: passport_expired
Есть ли возможность через API узнавать о появлении выставленных счетов и оплачивать их ?
Спасибо
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.