Giter Site home page Giter Site logo

php-yandex.money-api-sdk's Introduction

PHP Yandex.Money API SDK

Библиотека работы с API Яндекс.Денег.

В ней реализованы вызовы следующих функций API Яндекс.Денег: информация о счете, история операций, детальная информация по операциям, переводы денег другим пользователям. Плюсы и возможности:

  • OAuth-авторизация пользователя;
  • безопасность работы (поддерживается проверка цепочки сертификатов);
  • удобство работы (response'ы сервера представлены в виде объектов) и быстрый старт;
  • относительно безопасное и простое решение хранения токенов пользователей с использованием шифрования и без использования БД. Реализацию этого решения вы сможете легко переписать под свои хранилища.

Сама библиотека представляет собой файл цепочки сертификатов ym.crt и файл ym.php, который содержит:

  • программный интерфейс IYandexMoney;
  • главный класс YandexMoney (реализация интерфейса);
  • класс-перечисление с правами доступа (scope);
  • вспомогательные классы (response-объекты вывода результатов запросов к API).

В комплект библиотеки приложены 2 файла, которые реализуют шифрование: Rijndael.php и AES.php. Данные файлы взяты из библиотеки phpseclib (http://phpseclib.sourceforge.net/). Они нужны на случай, если вы будете использовать методы сохранения и восстановления токенов.

Внимание: использует PHP версии 5, а также стандартную библиотеку cUrl для http-запросов.

Структура объекта YandexMoney

  • authorize — статический метод для инициации OAuth-авторизации. На вход принимает идентификатор приложения, список прав доступа и URI редиректа после авторизации. Возвращает временный код.

  • __construct — конструктор класса. На вход принимает идентификатор приложения и путь к файлу ym.crt цепочки сертификатов (приложен к библиотеке).

  • receiveOAuthToken — метод заврешния OAuth-аутентификации. Обменивает временный код на постоянный токен пользователя. На вход принимает код и URI для редиректа (должно совпадать с указанным при регистрации приложения) Возвращает токен пользователя.

  • storeToken — метод сохраняет полученный токен в json-файл с шифрованием по ключу. Ключ зашит в код и представляет собой константу. На вход принимает идентификатор пользователя и токен.

  • restoreToken — метод восстановливает сохраненный ранее токен. На вход принмает идентификатор пользователя. Возвращает токен пользователя.

  • accountInfo — метод для получения информации о счете пользователя. На вход принимает токен пользователя. Возвращает экземпляр класса AccountInfoResponse, который содержит поля: номер счета, баланс, валюта счета.

  • operationHistory — метод для получения истории операций пользователя. На вход принимает токен пользователя, номер первой записи (постраничный вывод), количество операций и тип операций (депозит или оплата). Возвращает экземпляр класса operationHistoryResponse, который содержит код ошибки, если таковая произошла, номер записи следующей страницы, если таковая есть (постраничный вывод) и массив операций. Операции представляют собой объект Operation (сумма, время, и комментарии к операции).

  • operationDetail — метод для получения детальной информации по операции из истории или платежей. На вход принимает токен пользователя и идентификатор операции. Возвращает экземпляр класса OperationDetailResponse, который унаследован от объекта Operation и предоставляет расширенную информацию по платежу/зачислению.

  • requestPaymentP2P — метод перевода средств на счет другого пользователя. На вход принимает токен пользователя, номер счета (или привязанного телефона) назначения, сумму и комментарий. Возврашает экземпляр класса RequestPaymentResponse, который содержит ошибку, если таковая произошла, информацию о статусе операции, идентификатор операции, контракт и баланс.

  • processPayment — метод для подтверждения перевода, полученного при вызове requestPaymentP2P. На вход принимает идентификатор запроса. Возвращает экземпляр класса ProcessPaymentResponse, который содержит информацию о статусе платежа, балнесе после проведения операции и идентификатор платежа.

Примеры использования

Для начала работы с API следует прочитать описание выше или ознакомиться с самой библиотекой ym.php. Для тех, кто не будет устанавливать и смотреть подробные примеры, покажем пару вызовов. Для выполнения операций со счетом через API необходимо получить разрешение пользователя, то есть токен. Его можно получить следующими вызовами (к примеру, с доступом на просмотр информации о счете и истории операций):

YandexMoney::authorize(Consts::CLIENT_ID, 'account-info operation-history', Consts::REDIRECT_URL);

// затем на странице редиректа инициировать создание объекта и получение токена
$ym = new YandexMoney(Consts::CLIENT_ID, Consts::CERTIFICATE_CHAIN_PATH);	
$token = $ym->receiveOAuthToken($_GET['code'], Consts::REDIRECT_URL);

При создании объекта $ym ему передается идентификатор приложения и абсолютный путь на сервере к цепочке сертификатов (файл ym.crt). И то, и другое обычно прописывается в константах в каком-нибудь модуле (consts.php в наших примерах). Ну и покажем, как получить информацию о счете пользователя. Таким же образом создаем объект и затем вызываем метод, передав ему токен пользователя:

$ym = new YandexMoney(Consts::CLIENT_ID, Consts::CERTIFICATE_CHAIN_PATH);
$accountInfoResponse = $ym->accountInfo($token);	

print_r('Номер счета: ' . $accountInfoResponse->getAccount() . '<br>');
print_r('Баланс: ' . $accountInfoResponse->getBalance() . '<br>');
print_r('Код валюты: ' . $accountInfoResponse->getCurrency() . '<br>');	

Информация о счете получена.

Примерно так же обстоят дела и с другими вызовами.

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

  • зарегистрировать приложение, т.е. получить идентификатор клиента (https://sp-money.yandex.ru/myservices/new.xml) и прописать его в константы примеров (consts.php);
  • установить какой-нибудь WAMP (Windows-Apache-MySQL-PHP) или LAMP сервер (http://en.wikipedia.org/wiki/Comparison_of_WAMPs);
  • скопировать файлы примеров и библиотеку в каталог www.

Файлы

/doc/Description.txt - описание библиотеки

/doc/ExamplesInstructions.txt - подробная инструкция по запуску примеров использования

/src/yamoney/ym.php - библиотека

/src/yamoney/ym.crt - цепочка сертификатов Яндекса

/src/yamoney/AES.php - реализация шифрования алгоритмом AES библиотеки phpseclib

/src/yamoney/Rijndael.php - реализация шифрования алгоритмом Rijndael библиотеки phpseclib

/src/* - файлы примеров работы SDK

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.