PHPackages                             agoalofalife/yandex-money-payout - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. agoalofalife/yandex-money-payout

ActiveLibrary[Payment Processing](/categories/payments)

agoalofalife/yandex-money-payout
================================

Module for integration with YandexMoney Payouts. See https://yookassa.ru/docs/payouts

v2.3.2(4y ago)4412MITPHPPHP &gt;=7.3

Since Jun 28Pushed 4y ago1 watchersCompare

[ Source](https://github.com/agoalofalife/yandex-money-payout)[ Packagist](https://packagist.org/packages/agoalofalife/yandex-money-payout)[ RSS](/packages/agoalofalife-yandex-money-payout/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (2)Versions (12)Used By (0)

Библиотека для интеграции с Массовыми выплатами от Яндекс
=========================================================

[](#библиотека-для-интеграции-с-массовыми-выплатами-от-яндекс)

- [Описание](#description)
- [Установка](#Installation)
- [Как пользоваться?](#howuseit)

    - [Настройка](#settings)
    - [Генерация clientOrderId](#generatorId)
    - [Начисление на телефон](#phone)
    - [Начисление на яндекс кошелек](#yandex-purse)
    - [Структура ответа](#report)
    - [Обработка ошибок](#error)
    - [Интеграция с Laravel](#laravel)
- [Дополнительный материалы](#extra)
- [Угостить чаем 😌](#donate)

Описание
--------

[](#описание)

Библиотека предоставляет функционал по начислению денег в яндекс выплаты.

### Существует две версии библиотеки:

[](#существует-две-версии-библиотеки)

#### v1 (Старая версия)

[](#v1-старая-версия)

Виды выплат и возможности

```
 ✅ PHP 5

 ✅ На телефон

 ✅ На яндекс кошелек

 ✅ На банковскую карту

 ❌ Интеграция с Laravel

 ❌ Автоинкрементирование clientOrderId

 ❌ Сложный API

```

#### v2 (Новая версия)

[](#v2-новая-версия)

Виды выплат и возможности

```
 ✅ PHP >=7.3

 ✅ На телефон

 ✅ На яндекс кошелек

 ❌ На банковскую карту

 ✅ Интеграция с Laravel

 ✅ Автоинкрементирование clientOrderId

 ✅ ClientOrderId через модель Eloquent

 ✅ ClientOrderId в формате UUID

 ✅ Легкий API

```

Установка
---------

[](#установка)

```
composer require agoalofalife/yandex-money-payout
```

Как пользоваться?
-----------------

[](#как-пользоваться)

Для работы с пакетом вам надо закончить все юридические и технические моменты с яндекс и получить сертификаты для взаимодействия с серверами ЮKassa.

Настройка сертификатов и данных
-------------------------------

[](#настройка-сертификатов-и-данных)

#### agentId

[](#agentid)

Получите у менеджера agentId — идентификатор вашего шлюза в ЮKassa.

#### cert

[](#cert)

Это комбирированный ключ - вам надо выполнить несколько команд:

```
openssl pkcs12 -export -out cert.p12 -in 201111.pem -inkey private.pem
```

201111.pem - это обычно 201111.cer (просто переименуйте) - сертификат отправляется Яндексом

private.pem - это приватный ключ который создаете вы до отправки в yandex

После команды вы получите `cert.p12`

Надо будет выполнить следующую команду:

```
openssl pkcs12 -in cert.p12 -out keys.pem -nodes
```

В итоге вы получите `keys.pem` - который и надо вставить в параметр `cert`(Абсолютный путь до него)

#### certPassword

[](#certpassword)

Пароль от сертификата privateKey

### privateKey

[](#privatekey)

Абсолютный путь до файла - приватный ключ - который создается на вашей стороне. Вот ссылка [как](https://yookassa.ru/docs/payouts/api/using-api/security#creating-private-key)

### yaCert

[](#yacert)

Абсолютный путь до файла - сертификат для расшифровки сообщение от сервера Яндекса

Сертификат выдается по запросы в яндекс, он един для всех и его меняют раз в три года.

Вам необходимо вставить файл с названием `deposit_verify_new.cer`

```
  $settings = new Settings();
  $settings->agentId = '';
  $settings->cert = 'keys.pem';
  $settings->certPassword = '';
  $settings->privateKey = 'private.pem';
  $settings->yaCert = '';
```

Генерация clientOrderId
-----------------------

[](#генерация-clientorderid)

Далее необходимо выбрать способ генерации clientOrderId:

ℹ️ UUID

`YandexPayout\Generators\ClientOrderUuid`

```
Генерация clientOrderId через uuid version 4,
случайным образом генерируется уникальный id

```

```
 $generator = new \YandexPayout\Generators\ClientOrderUuid();
```

ℹ️ Eloquent Id

`YandexPayout\Generators\ClientOrderEloquent`

```
Генерация номера по порядковому номеру id в базе данных через eloquent
модель laravel

```

```
 $generator = new \YandexPayout\Generators\ClientOrderEloquent(new \App\Models\YandexPayout());
```

ℹ️ Свой вариант

Вы можете реализовать свой способ через интерфейс

`YandexPayout\Contracts\GeneratorClientOrderId`

```
- public function getId(): string;
   Получение текущего id, например для id из базы - это следующий номер
   после крайнего.

- public function generateNextId(): string;
  Реализация следуеющего номера - это может быть просто порядковый номер
  или как в случае uuid уникальный - зависит от вас. Метод нужен - если
  под текущим id - уже есть запись в яндекс и надо повторить запрос с
  новым clientOrderId

```

Начисление на телефон
---------------------

[](#начисление-на-телефон)

✅ Проверка возможности осуществлении платежа [(testDeposition)](https://yookassa.ru/docs/payouts/api/make-deposition/basics#test-deposition)

```
        // Передаем настройки
        $settings = new Settings();
        $settings->agentId = '';
        $settings->cert = '';
        $settings->certPassword = '';
        $settings->privateKey = '';
        $settings->yaCert = '';

        // Выбираем генератор
        $generator = new \YandexPayout\Generators\ClientOrderEloquent(new \App\Models\Reward\MoneyReward\Drivers\YandexPayout());

        $phone = new \YandexPayout\Accounts\Phone($settings, $generator);
        $phone->setDstAccount('79052075556'); // передаем номер строго так
        $phone->setAmount(1);// сумма - ожидает float
        $phone->setContract('Тестовый платеж');

        // Далее несколько стратегий отправки
        $phone->canSend(); // разовый запрос можно ли отправить деньги
        $phone->send(); // сразу попытаться отправить или после информации
//        от метода выше
        $phone->sendIncrementId(); // будут произвоидится попытки начисления
//        денег - с последующей генерации следующего clientOrderId, пока
//        никакаих ограничений нет - будет до победного

        $phone->getReport(); // получение отчета о запросе - где данные об
//        ответе сервиса и данные из запроса, для получения данных -
//        предоставлены get методы
```

Начисление на яндекс кошелек
----------------------------

[](#начисление-на-яндекс-кошелек)

✅ Проверка возможности осуществлении платежа [(testDeposition)](https://yookassa.ru/docs/payouts/api/make-deposition/basics#test-deposition)

```
        // Передаем настройки
        $settings = new Settings();
        $settings->agentId = '';
        $settings->cert = '';
        $settings->certPassword = '';
        $settings->privateKey = '';
        $settings->yaCert = '';

        // Выбираем генератор
        $generator = new \YandexPayout\Generators\ClientOrderUuid();

        $phone = new \YandexPayout\Accounts\YandexPurse($settings, $generator);
        $phone->setDstAccount('4100116075156746'); // передаем номер строго так
        $phone->setAmount(1);// сумма - ожидает float
        $phone->setContract('Тестовый платеж');

        // Далее несколько стратегий отправки
        $phone->canSend(); // разовый запрос можно ли отправить деньги
        $phone->send(); // сразу попытаться отправить или после информации
//        от метода выше
        $phone->sendIncrementId(); // будут произвоидится попытки начисления
//        денег - с последующей генерации следующего clientOrderId, пока
//        никакаих ограничений нет - будет до победного

        $phone->getReport(); // получение отчета о запросе - где данные об
//        ответе сервиса и данные из запроса, для получения данных -
//        предоставлены get методы
```

Структура ответа
----------------

[](#структура-ответа)

Структура ответа `$phone->getReport()`

```
    // Примерная структура такая
    YandexPayout\ReportOfRequest {#1637 ▼
      -clientOrderId: "1"
      -amount: 1.0
      -dstAccount: "79052075556"
      -contract: "Тестовый платеж"
      -agentId: "201111"
      -currency: 643
      -response: YandexPayout\Response\Response {#1652 ▼ // Объект
    // response можно получить через метод $phone->getReport()->response()
        -balance: "200.36"
        -processedDT: "2021-10-20T21:29:50.747+03:00"
        -identification: "reviewed"
        -techMessage: null
        -status: "0"
        -error: null
      }
    }
```

Обработка ошибок
----------------

[](#обработка-ошибок)

В процессе работы с yandex - могут возникнуть ошибки:

- Внутренния ошибка яндекс
- Проблемы с мобильным телефоном
- Истек сертификат

И так далее..

Запросы `send` или `sendIncrementId` возвращают bool в случае успеха. Для более читабельного варианта можно использовать `isSuccessRequest`

```
// ....
    $phone->sendIncrementId();
 if ($phone->isSuccessRequest()) {
    // save storage
 } else {
   $phone->getReport()->response()->getStatus();// самостоятельная обработка
   $phone->getReport()->response()->getError();// код ошибка
 }
```

Перечень кодов можно прочитать [тут](https://yookassa.ru/docs/payouts/api/reference/errors)

Интеграция с Laravel
--------------------

[](#интеграция-с-laravel)

Пакет имеет некоторое упрощении в использовании - через контейнер laravel

Скопируем файл конфигурации в папку config

```
php artisan vendor:publish --tag= yandex-payouts
```

Далее надо передать все настройки и выбрать генератор по-умолчанию

```
    'cardSynonimUrl' => '',
    'agentId'        => env('YANDEX_MONEY_PAYOUT_AGENT_ID', ''),
    'certPassword'   => env('YANDEX_MONEY_PAYOUT_CERT_PASSWORD', ''),
    'cert' => env('YANDEX_MONEY_PAYOUT_CERT', ''),
     // абсолютный путь keys.pem
    'privateKey' => env('YANDEX_MONEY_PAYOUT_CERT_PRIVATE', ''),
    // абсолютный путь private.pem
    'yaCert' => env('YANDEX_MONEY_PAYOUT_CERT_REQUEST', ''),
    // абсолютный путь request.cer

    'generator' => [
        'type' => \YandexPayout\Generators\ClientOrderEloquent::class,
        'model' => \App\Models\YandexPayout::class
    ]
```

Далее использование - сводится к получению объектов из контейнера. Вы можете получать эти объекты в других местах(контроллеры, очереди) - везде где есть авто resolve

```
  $yandexPurse = new \YandexPayout\Accounts\YandexPurse(app(Settings::class), app(GeneratorClientOrderId::class));
  $yandexPurse->setDstAccount('4100116075156746');
  $yandexPurse->setAmount(1);
  $yandexPurse->setContract('Тестовый платеж');
  dd($yandexPurse->sendIncrementId(), $yandexPurse->getReport());
```

Дополнительный материалы
------------------------

[](#дополнительный-материалы)

- Документация яндекса [здесь](https://yookassa.ru/docs/payouts)

Угостить чаем или кофем 😌
-------------------------

[](#угостить-чаем-или-кофем-)

Этот пакет был создан с целью экономии времени для коллег разработчиков. Если он вам помог сэкономить время - то я буду рад вашей поддержки в виде звезды или скромного доната.

Этот простой знак внимания - даст мне понять - что труды не напрасны.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 71.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~136 days

Recently: every ~4 days

Total

10

Last Release

1644d ago

Major Versions

v0.2.0 → v1.0.02021-03-02

v1.0.0 → v2.0.02021-10-21

### Community

Maintainers

![](https://www.gravatar.com/avatar/de0b1f6d64571d925fd7580acf7f99394511ad98c4befd6d2d9e1ef64ea1ea8e?d=identicon)[agoalofalife](/maintainers/agoalofalife)

---

Top Contributors

[![agoalofalife](https://avatars.githubusercontent.com/u/15719824?v=4)](https://github.com/agoalofalife "agoalofalife (40 commits)")[![shnellpavel](https://avatars.githubusercontent.com/u/2462454?v=4)](https://github.com/shnellpavel "shnellpavel (16 commits)")

---

Tags

mass-paymentspayoutpayoutsyandexyandex-apiyandex-kassayandex-moneyyandex-payoutymoneyyookassayandexyandex-moneyyandex-kassayandex-payoutymoney

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/agoalofalife-yandex-money-payout/health.svg)

```
[![Health](https://phpackages.com/badges/agoalofalife-yandex-money-payout/health.svg)](https://phpackages.com/packages/agoalofalife-yandex-money-payout)
```

###  Alternatives

[kroshilin/yii2-yandex-kassa

Yandex kassa as Yii2 component

2931.0k](/packages/kroshilin-yii2-yandex-kassa)[shetabit/multipay

PHP Payment Gateway Integration Package

291348.2k3](/packages/shetabit-multipay)[yandex-money/yandex-money-sdk-php

Yandex.Money API SDK for PHP

105167.4k2](/packages/yandex-money-yandex-money-sdk-php)[sylius/invoicing-plugin

Invoicing plugin for Sylius.

901.0M2](/packages/sylius-invoicing-plugin)[buckaroo/sdk

Buckaroo payment SDK

12189.1k9](/packages/buckaroo-sdk)[hipay/hipay-fullservice-sdk-php

The HiPay Enterprise SDK for PHP is a library for developers who want to integrate HiPay Enterprise payment methods to any PHP platform.

111.2M4](/packages/hipay-hipay-fullservice-sdk-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
