Skip to content

pavel52rus/test_payout_sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yandex.Checkout Payout API PHP Client Library

Build Status

Клиент для работы по Протоколу массовых выплат

Возможности

С помощью этого SDK вы можете:

  1. Генерировать сертификат для взаимодействия с Яндекс.Кассой.
  2. Переводить деньги физическим лицам на кошельки в Яндекс.Деньгах, номера мобильных телефонов, банковские карты и счета (makeDeposition).
  3. Проверять возможность зачисления переводов на кошельки в Яндекс.Деньгах (testDeposition).
  4. Отслеживать баланс выплат (balance).
  5. Получать уведомления о неуспешном статусе переводов на банковский счет, карту, мобильный телефон (errorDepositionNotification).

Требования

PHP 5.6.0 (и выше) с расширением libcurl и libxml

Установка

Установите SDK одним из трех способов

В консоли с помощью Composer

  1. Установите менеджер пакетов Composer.
  2. В консоли выполните команду
composer require yandex-money/yandex-checkout-payout-sdk-php

В файле composer.json своего проекта

  1. Добавьте строку "yandex-money/yandex-checkout-payout-sdk-php": "*" в список зависимостей вашего проекта в файле composer.json
...
    "require": {
        "php": ">=5.6.0",
        "yandex-money/yandex-checkout-payout-sdk-php": "*"
...
  1. Обновите зависимости проекта: в консоли перейдите в каталог с файлом composer.json и выполните команду:
composer update
  1. В коде вашего проекта подключите автозагрузку файлов SDK Яндекс.Кассы:
require __DIR__ . '/vendor/autoload.php';

Вручную

  1. Скачайте архив Yandex.Checkout Payout API PHP Client Library, распакуйте его и скопируйте каталог lib в папку вашего проекта, где будет размещен SDK.
  2. В коде вашего проекта подключите автозагрузку файлов SDK Яндекс.Кассы:
require __DIR__ . '/lib/autoload.php'; 

Получение сертификата для аутентификации запросов

Для взаимодействия с Яндекс.Кассой необходимо получить сертификат. Для этого:

  1. Создайте приватный ключ и запрос на получение сертификата (CSR).
  2. Заполните заявку на сертификат.
  3. Обменяйтесь данными с Яндекс.Кассой.

Шаг 1. Создание приватного ключа и CSR

С помощью метода SDK

  1. мпортируйте классы для создания CSR
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Model\Organization;
  1. Создайте экземпляр класса Organization с данными для создания заявки. Все данные нужно вводить латиницей.
$organization = new Organization();
$organization->setEmailAddress('[email protected]') //Адрес электронной почты
             ->setOrganizationName('ooo sdk.com') //Название вашей организации (латиницей)
             ->setCommonName('/business/test123'); //Имя сервера без пробелов, например название вашей организации; должно начинаться с «/business/»
  1. Создайте CSR и приватный ключ.
$client->createCsr($organization, './output/', '') //Укажите место, куда должны сохраниться файлы, и пароль для приватного ключа (при необходимости)

В результате SDK сгенерирует приватный ключ, CSR и текстовый файл с электронной подписью (нужно для дальнейших шагов).

Через консоль

  1. В консоли перейдите в папку вашего проекта, где расположен SDK.
cd <путь к SDK>
  1. Выполните команду:
php bin/yamoney get:csr
  1. Введите данные для сертификата, следуя указаниям на экране. Текст необходимо вводить латинскими буквами. В результате SDK сгенерирует приватный ключ, CSR и текстовый файл с электронной подписью (нужно для дальнейших шагов).

Шаг 2. Заполнение заявки на сертификат

Скачайте заявку на сертификат, заполните и распечатайте. Поставьте подпись и печать. Отсканируйте.

Параметр Описание
CN Должно соответствовать значению параметра Common Name (eg, YOUR name). Например, /business/predpriyatie.
Электронная подпись запроса на сертификат Текстовое представление, полученное на предыдущем шаге.
Наименование организации латинскими буквами Должно соответствовать значению параметра Organization Name (eg, company) [Internet Widgits Pty Ltd].
Причина запроса Возможные варианты:
  • первоначальный — для получения первого сертификата;
  • плановая замена — для замены сертификата, у которого закончился срок действия;
  • замена скомпрометированного — для замены ранее выпущенного сертификата при нарушении безопасности;
  • добавление сервера — для использования нового сертификата на дополнительных серверах или сервисах.
Контактное лицо (ФИО, телефон, e-mail) Контакты специалиста для связи при возникновении вопросов по выданному сертификату.

Шаг 3. Обмен данными с Яндекс.Кассой

Отправьте файл запроса на сертификат (request.csr) и скан заявки по электронной почте своему менеджеру Яндекс.Кассы. В ответ на заявку менеджер в течение 2 рабочих дней пришлет файл с сертификатом. Срок действия сертификата 1 год.
Разместите полученный сертификат на своем сервере

Начало работы

  1. Определите, какие виды выплат вам нужны и хотите ли вы проверять баланс.
  2. Импортируйте обязательные классы
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Request\Keychain;
  1. Импортируйте классы, необходимые для решения ваших задач.
  2. Создайте экземпляр класса Keychain, передав в него путь к публичному ключу, путь к приватному ключу и, при необходимости, пароль приватного ключа..
$keychain = new Keychain('publicCert.cer', 'privateCert.pem', 'password');
  1. Создайте экземпляр класса Client и передайте идентификатор шлюза из личного кабинета Яндекс.Кассы и экземпляр класса Keychain.
$client = new Client('000000', $keychain);
  1. Вызовите нужный метод. Подробнее о проведении выплат

Пример выплаты на банковский счет

// Импорт классов
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Model\Recipient\BankAccountRecipient;
use YandexCheckoutPayout\Request\Keychain;
use YandexCheckoutPayout\Request\MakeDepositionRequest;

// Создание ключницы и экземпляра клиента
$keychain = new Keychain('./250000.cer', './privateKey.pem', 12345);
$client  = new Client('250000', $keychain);

// Подготовка данных о получателе выплаты
$recipient = new BankAccountRecipient();
$recipient->setPdrLastName('Иванов')
           ->setPdrFirstName('Иван')
           ->setPdrMiddleName('Иванович')
           ->setDocNumber('1234567890')
           ->setPofOfferAccepted(true)
           ->setPdrDocIssueDate('01.02.2018')
           ->setSmsPhoneNumber('79099585455')
           ->setPaymentPurpose('Назначение выплаты')->setBankBIK(5435435435)->setBankCorAccount('');

// Проведение выплаты
$deposition = new MakeDepositionRequest();
$deposition->setDstAccount('25700120202056919')
       ->setAmount(100)
       ->setCurrency(CurrencyCode::RUB)
       ->setContract('test')
       ->setPaymentParams($recipient);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages