Инструкция по работе с API QIWI Мастер

Чтобы автоматически управлять картами в составе пакета QIWI Мастер вы можете воспользоваться специальным API. С помощью API вы сможете:

  • Подключать пакет QIWI Мастер
  • Мгновенно выпускать и блокировать виртуальные карты
  • Получать выписки по картам и реквизиты
  • Переименовывать карты

В настоящий момент выпуск API токена от QIWI кошелька приостановлен, подробности в  нашем разборе.


Для настройки API и работы с ним вам потребуются базовые знания знание программирования на языках PHP или Python. Далее мы пошагово расскажем как отправлять запросы и обрабатывать ответы от сервиса QIWI.

Попробуйте интерфейс для управления вирутальными картами QIWI Мастер по API.

Установка и настройка сервера

Пропустите этот шаг если вы знаете, как запустить сервер на локальном компьютере или на хостинге. Перейти к работе с API.

Для отправки запросов через API и обработки ответов вам нужно настроить сервер. Разберем, как установить сервер Apache на домашнем компьютере или арендовать сервер в интернете. В примерах мы будем использовать язык программирования PHP. 

 

Сервер на домашнем компьютере

 

  1. Установите специальную программу XAMPP для Windows или Mac.
  2. После установки откройте контрольную панель XAMPP (появится ярлык на рабочем столе) и запустите сервер Apache.
  3. Запуск сервера Apache
  4. Далее в  папке C:\xampp\htdocs создайте папку своего проекта, например master-api.  
  5. Создание папки
  6. В корне папки cоздайте файл index.php со следующим содержимым: <?php  echo 'заработало'; ?> и сохраните его.
  7. Проверка работы сервера
  8. В любом браузере откройте адрес  http://localhost/master-api .  Если вы все сделали правильно в браузере появится текст: заработало
  9. Сервер заработал


В этой папке будут лежать исполняемые файлы вашей программы.

 

Аренда сервера у хостинг-компании


Этот способ быстрее, но нужен свободный домен, с которого будут отправляться запросы. Некоторые хостинг-провайдеры предоставляют домен в подарок при покупке хостинга. Желательно использовать ssl сертификат и отправлять запросы по https-протоколу. SSL сертификат нужен, чтобы ваш трафик не смогли расшифровать и подменить данные при отправке.

Для работы с API достаточно оплатить любой виртуальный хостинг с поддержкой скриптов на PHP и интерфейсом на cPanel (например тариф Host-A от Reg.ru). Виртуальные сервера VDS\VPS тоже подойдут, но больше времени уйдет на настройку.  

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

Аренда сервера с Cpanel

 

  • В корневой папке домена создайте файл index.php со следующим содержимым:
  • <?php  echo 'заработало'; ?>
  • В браузере откройте адрес  https://вашдомен.ru/.  Если все прошло успешно, вы увидите текст: заработало

 

Подготовка к работе с API

Сервер настроен, но перед отправкой запросов в API нужно получить специальный токен - это ваш ключ доступа к кошельку удаленно. Получить этот ключ можно в разделе https://qiwi.com/api .

Выпуск токена для работы с API QIWI

При создании токена отметьте следующие разрешения:

  • Управление виртуальными картами
  • Запрос информации о профиле кошелька
  • Просмотр истории платежей
  • Проведение платежей без SMS.

Выдача прав для токена

 

Отправка запросов и обработка ответа

Любой запрос содержит заголовки и тело запроса.  В заголовках передаётся тип запроса и авторизационный токен,  а в теле - данные для отправки на сервер. Подробнее о структуре запросов вы можете почитать в официальной справке по API: https://developer.qiwi.com/ru/qiwi-wallet-personal/#qiwi-master

 

Обработка запросов

 

Покупка пакет QIWI мастер

В теле запроса нужно передать объект Payment и дополнительные обязательные поля:
fields.account - номер вашего кошелька
fields.vas_alias - “qvc-master”

Пример запроса на PHP, который выведет статус покупки пакета. Скопируйте этот код в файл masterbuy.php и перейдите в браузере на cтраницу http://localhost/master-api/masterbuy.php , если вы работаете на локальном сервере или http://вашсайт.ru/masterbuy.php, если у вас виртуальный хостинг.

Код запроса для покупки пакета QIWI Мастер. Напишите свой номер кошелька в переменную $qiwiNumber и скопируйте токен в переменную $qiwiToken:

 

 $qiwiToken = "токен вашего кошелька";
$qiwiNumber = "79999999999"; //номер вашего кошелька
$urlPayment = 'https://edge.qiwi.com/sinap/api/v2/terms/28004/payments';
$header = array();
$header[] = "Content-Type: application/json";
$header[] = "Accept: application/json";
$header[] = "Authorization: Bearer " . $qiwiToken;
$data = [ 
	'id' => ''.time().'', // клиентский id платежа - им может быть любой уникальный нарастающий идентификатор, например время транзакции
	'sum' => [
		'amount' => 2999, //сумма платежа
		'currency' => '643' // валюта платежа - рубли
	],
	'paymentMethod' => [
		'type' => 'Account',
		'accountId' => '643'
	],
	'fields' => [
		'account' => $qiwiNumber, //номер вашего кошелька
		'vas_alias' => 'qvc-master'
	]
];
$data = json_encode($data);

if ($curl = curl_init()) {
	curl_setopt($curl, CURLOPT_URL, $urlPayment);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$paymentInfo = curl_exec($curl);
	curl_close($curl);
	$paymentInfo = json_decode($paymentInfo);
}
echo $paymentInfo->transaction->state->code; //покажет статус транзакции

 

После исполнения скрипта в браузере появится статус транзакции.

Скачать пример кода

 

Покупка карты

Шаг 1. Создание заказа

Доступные для заказа типы карт:

  • Для оплаты рекламы в Яндекс.Директ и myTarget:    "qvc-cpa"
  • Для оплаты рекламы в Facebook, Google и Tiktok:    "qvc-cpa-debit"

 

Скопируйте этот код в файл cardsbuy.php и перейдите в браузере на cтраницу http://localhost/master-api/cardsbuy.php.

 

$qiwiToken = "токен"; //токен вашего кошелька
$qiwiNumber = "79999999999"; //номер вашего кошелька
$cardAlias = "qvc-cpa";  // какую карту заказываем, debit  (qvc-cpa-debit) за 199 руб. или prepaid (qvc-cpa) за 99 руб.

	//заказ карты				
$urlOrderCard = 'https://edge.qiwi.com/cards/v2/persons/'.$qiwiNumber.'/orders';

$header = array();
$header[] = "Content-Type: application/json";
$header[] = "Accept: application/json";
$header[] = "Authorization: Bearer " . $qiwiToken;

$data = [
	'cardAlias' => ''.$cardAlias.'', // клиентский id платежа - им может быть любой уникальный нарастающий идентификатор, например время транзакции
   
	];

$data = json_encode($data);

if ($curl = curl_init()) {
	curl_setopt($curl, CURLOPT_URL, $urlOrderCard);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$cardOrder = curl_exec($curl);
	curl_close($curl);
	$cardOrder = json_decode($cardOrder);
}
//print_r($cardOrder); //ответ сервера

 

 

Шаг 2. Подтверждение заказ карты

Далее запрос на подтверждение заказа карты.

Добавьте следующий код в файл cardbuy.php для подтверждения заказа карты:

 

//подтверждение заказа

$urlConfirm = 'https://edge.qiwi.com/cards/v2/persons/'.$qiwiNumber.'/orders/'.$cardOrder->id.'/submit';

$header = array();
$header[] = "Content-Type: application/json";
$header[] = "Accept: application/json";
$header[] = "Authorization: Bearer " . $qiwiToken;

if ($curl = curl_init()) {
	curl_setopt($curl, CURLOPT_URL, $urlConfirm);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
	$cardConfirm = curl_exec($curl);
	curl_close($curl);
	$cardConfirm = json_decode($cardConfirm);
}

//print_r($cardConfirm); //ответ сервера

 

Шаг 3. Покупка карты

Отправим запрос для покупки карты.

Добавьте следующий код в файл cardbuy.php для подтверждения заказа карты:

 

 

$urlBuy = 'https://edge.qiwi.com/sinap/api/v2/terms/32064/payments';

$header = array();
$header[] = "Content-Type: application/json";
$header[] = "Accept: application/json";
$header[] = "Authorization: Bearer " . $qiwiToken;

$data = [
	'id' => ''.time().'', // клиентский id платежа - им может быть любой уникальный нарастающий идентифкатор
	'sum' => [
		'amount' => $cardConfirm->price->amount, //сумма платежа, если карта бесплатная то 0
		'currency' => '643' // валюта платежа - рубли
	],
	'paymentMethod' => [
		'type' => 'Account',
		'accountId' => '643'
	],
	'fields' => [
		'account' => $qiwiNumber, //номер вашего кошелька
		'order_id' => $cardConfirm->id // номер подтвержденного заказа
	]
];
$data = json_encode($data);


if ($curl = curl_init()) {
	curl_setopt($curl, CURLOPT_URL, $urlBuy);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$cardBuy = curl_exec($curl);
	curl_close($curl);
	$cardBuy = json_decode($cardBuy);
}

//print_r($cardBuy); // покажет ответ, который прислал сервер QIWI

echo $cardBuy->transaction->state->code; //покажет статус транзакции

 

Сообщение "Accepted!" означает, что карта выпущена успешно. Любое другое сообщение значит ошибку.

Скачать пример файла cardsbuy.php

 

Список карт с реквизитами


Чтобы получить список карт нужно отправить GET запрос без параметров.
Для получения реквизитов карт нужен отдельный PUT запрос  с параметрами id карты из списка и operationId - любой уникальный идентификатор транзакции, например время.


Скопируйте этот код в файл cardsreq.php и перейдите в браузере на cтраницу http://localhost/master-api/cardsreq.php:

 

 
$qiwiToken = "токен"; //токен вашего кошелька
$qiwiNumber = "79999999999"; //номер вашего кошелька

$urlCardList= 'https://edge.qiwi.com/cards/v1/cards/?vas-alias=qvc-master';

$header = array();
//$header[] = "Content-Type: application/x-www-form-urlencoded";
$header[] = "Accept: application/json";
$header[] = "Authorization: Bearer " . $qiwiToken;

if ($curl = curl_init()) {
	curl_setopt($curl, CURLOPT_URL, $urlCardList);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
	$cardOrder = curl_exec($curl);
	curl_close($curl);
	$cardOrder = json_decode($cardOrder);
}
		
for ($i=count($cardOrder)-1;$i>=0; $i--) 
{
	$urlCardNumber = 'https://edge.qiwi.com/cards/v1/cards/'.$cardOrder[$i]->qvx->id.'/details';

	$header = array();
	$header[] = "Content-Type: application/json";
	$header[] = "Accept: application/json";
	$header[] = "Authorization: Bearer " . $qiwiToken;
	
	
	$data = [
		'operationId' => ''.time().'', // клиентский id платежа - им может быть любой уникальный нарастающий идентификатор, например время транзакции
	   
		];
	
	$data = json_encode($data);


	if ($curl = curl_init()) {
		curl_setopt($curl, CURLOPT_URL, $urlCardNumber);
		curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		$cardNumber = curl_exec($curl);
		curl_close($curl);
		$cardNumber = json_decode($cardNumber);
	}
	$l=$i+1;
	echo "

".$l.". Номер: ".$cardNumber->pan."      CVV: ".$cardNumber->cvv."       Месяц/год: ".$cardOrder[$i]->qvx->cardExpireMonth."/".$cardOrder[$i]->qvx->cardExpireYear." 

";
		
}

 

 

В результате выполнения кода вы получите список выпущенных вирутальных карт в составе пакета QIWI Мастер.

Скачать пример файла cardsreq.php

Добавить комментарий

Содержимое данного поля является приватным и не предназначено для показа.

Ограниченный HTML

  • HTML-теги не обрабатываются и показываются как обычный текст
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.