Класс для работы с интерфейсом QIWI на PHP при помощи Api. Благодаря данному классу, вы можете работать с личным кабинетом QIWI через API, без использования браузера. Написан с использованием стандартов PSR. Архитектура проекта направлена на легкую расширяемость и внедрение нового функционала и использованием SOLID стандартов.
Проект не преследует целей взлома, получения несанкционированного доступа к сервисам QIWI. Является программным аналогом работы с веб-интерфейсом QIWI.
Установка с использованием менеджера пакетов Composer:
Вносим изменения в composer.json:
{
"require": {
"firepro/qiwiclient": "*"
}
}
Установка через require:
$ composer require firepro/qiwiclient
Для начала работы необходимо создать экземпляр класса QiwiClient, в который передать по умолчанию $login и $password.
$client = new QiwiClient($login, $password, $provider);
По умолчанию, provider - это CurlServiceProvider - он обеспечивает работу клиента через встроенную библиотеку Curl.
Для начала работы, необходимо понять структуру. Мы используем подход, в котором Client играет роль интерфейса запросов, а обьекты запросов предоставляют все необходимые данные для клиента. Это позволяет идти по лучшим практикам проектирования, не используя антипатерны (God Object)
$client = new Client(new CurlServiceProvider());
$request = new QiwiWalletPayRequest($client);
$request->setAccount("+79030132918");
$request->setAmount(1);
$request->setComment(1);
$request->execute();
/**
* QiwiPayRequest возвращает QiwiPayResponse
**/
$response = $request->getResponse();
echo 'Платеж '. $response->getId()." завершился со статусом ".$response->getState();
Для проведения платежей, существуют следующие классы:
$client = new Client(new CurlServiceProvider());
$request = new QiwiWalletPay($client);
$request->setAccount("+79030132918");
$request->setAmount(1);
$request->setComment(1);
$request->execute();
/**
* QiwiPayRequest возвращает QiwiPayResponse
**/
$response = $request->getResponse();
echo 'Платеж '. $response->getId()." завершился со статусом ".$response->getState();
$client = new Client(new CurlServiceProvider());
$request = new QiwiWalletPay($client);
$request->setAccount("+79030132918");
$request->setAmount(1);
$request->setComment(1);
$request->execute();
/**
* QiwiPayRequest возвращает QiwiPayResponse
**/
$response = $request->getResponse();
echo 'Платеж '. $response->getId()." завершился со статусом ".$response->getState();
$client = new Client(new CurlServiceProvider());
$request = new QiwiWalletPay($client);
$request->setAccount("+79030132918");
$request->setAmount(1);
$request->setComment(1);
$request->execute();
/**
* QiwiPayRequest возвращает QiwiPayResponse
**/
$response = $request->getResponse();
echo 'Платеж '. $response->getId()." завершился со статусом ".$response->getState();
$client = new Client(new CurlServiceProvider());
$request = new QiwiConfirmPayRequest($client);
$request->setId("+79030132918");
$request->setSmsCode(1);
$request->execute();
/**
* QiwiPayRequest возвращает QiwiConfirmResponse
**/
$response = $request->getResponse();
echo 'Платеж '. $response->getId()." завершился со статусом ".$response->getState();
Для выполнения поиска и авторизации предусмотрены следующие классы:
QiwiHistoryPeriodRequest QiwiSearchInvoiceRequest
История платежей возвращается итератором экземпляром класса QiwiHistory, перебор которого возвращает обьект QiwiInvoice. Доступные свойства которого:
Для получения баланса предусмотрен класс QiwiGetBalanceRequest
Отключение подтверждения осуществляется классом DisableSmsRequest
Осуществляется классом ConfirmDisableSmsRequest
Для покупки ваучера предусмотрен класс EggPayRequest
Для активации ваучера предусмотрен класс EggActivateRequest
<?php
$client = new QiwiClient("+7903000000", "test");
$client->authorize();
$request = new QiwiWalletPay($client);
$request->setAmount(1);
$request->setCurrency("RUB");
$request->setComment("test invoice");
$response = $request->execute();
switch ($response->getState()) {
QiwiPayStates::NEED_SMS:
$smsCode = "Здесь полученный SMS код";
$confirmRequest = new ConfirmPayRequest($client);
$confirmRequest->setId($response->getId());
$confirmRequest->setSmsCode($smsCode);
$confirmResponse = $confirmRequest->execute();
if ($confirmResponse->getState()==QiwiPayStates::DONE) {
echo "Платеж успещно завершен";
} else {
var_dump($confirmResponse->getErrors()):
}
break;
QiwiPayStates::DONE:
echo 'Платеж '.$response->getId().' успешно завершен';
break;
QiwiPayStates::FAILED:
echo "Произошли ошибки при выполнении платежа!";
var_dump($response->getErrors()):
}
?>
Вы можете обратиться на support@funser.ru для получения помощи по данному клиенту. Также можете вносить изменения через Pull Requests.