FirePro / QiwiClient

Клиент для работы с клиентскими функциями QIWI через API на PHP
Other
4 stars 0 forks source link

Клиент для работы c QIWI

Класс для работы с интерфейсом 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();

Проведение платежей

Для проведения платежей, существуют следующие классы:

Проведение оплаты на QIWI кошелек.


    $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

Отключение SMS подтверждения

Отключение подтверждения осуществляется классом DisableSmsRequest

Подтверждение отключения SMS

Осуществляется классом 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.