Чтобы автоматически управлять картами в составе пакета QIWI Мастер вы можете воспользоваться специальным API. С помощью API вы сможете:
- Подключать пакет QIWI Мастер
- Мгновенно выпускать и блокировать виртуальные карты
- Получать выписки по картам и реквизиты
- Переименовывать карты
Для настройки API и работы с ним вам потребуются базовые знания знание программирования на языках PHP или Python. Далее мы пошагово расскажем как отправлять запросы и обрабатывать ответы от сервиса QIWI.
Попробуйте интерфейс для управления вирутальными картами QIWI Мастер по API.
Установка и настройка сервера
Пропустите этот шаг если вы знаете, как запустить сервер на локальном компьютере или на хостинге. Перейти к работе с API.
Для отправки запросов через API и обработки ответов вам нужно настроить сервер. Разберем, как установить сервер Apache на домашнем компьютере или арендовать сервер в интернете. В примерах мы будем использовать язык программирования PHP.
Сервер на домашнем компьютере
- Установите специальную программу XAMPP для Windows или Mac.
- После установки откройте контрольную панель XAMPP (появится ярлык на рабочем столе) и запустите сервер Apache.
- Далее в папке C:\xampp\htdocs создайте папку своего проекта, например master-api.
- В корне папки cоздайте файл index.php со следующим содержимым: <?php echo 'заработало'; ?> и сохраните его.
- В любом браузере откройте адрес http://localhost/master-api . Если вы все сделали правильно в браузере появится текст: заработало
В этой папке будут лежать исполняемые файлы вашей программы.
Аренда сервера у хостинг-компании
Этот способ быстрее, но нужен свободный домен, с которого будут отправляться запросы. Некоторые хостинг-провайдеры предоставляют домен в подарок при покупке хостинга. Желательно использовать ssl сертификат и отправлять запросы по https-протоколу. SSL сертификат нужен, чтобы ваш трафик не смогли расшифровать и подменить данные при отправке.
Для работы с API достаточно оплатить любой виртуальный хостинг с поддержкой скриптов на PHP и интерфейсом на cPanel (например тариф Host-A от Reg.ru). Виртуальные сервера VDS\VPS тоже подойдут, но больше времени уйдет на настройку.
После покупки хостинга заходите в административную панель cPanel (доступы ваш пришлют на почту после покупки).
Если вы купили хостинг с доменом - ничего настраивать не нужно. Переходите в менеджер файлов.
- В корневой папке домена создайте файл index.php со следующим содержимым:
- <?php echo 'заработало'; ?>
- В браузере откройте адрес https://вашдомен.ru/. Если все прошло успешно, вы увидите текст: заработало
Подготовка к работе с API
Сервер настроен, но перед отправкой запросов в API нужно получить специальный токен - это ваш ключ доступа к кошельку удаленно. Получить этот ключ можно в разделе https://qiwi.com/api .
При создании токена отметьте следующие разрешения:
- Управление виртуальными картами
- Запрос информации о профиле кошелька
- Просмотр истории платежей
- Проведение платежей без 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 Мастер.
Добавить комментарий