PHPackages                             lava-payment/lava - 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. lava-payment/lava

ActiveLibrary[Payment Processing](/categories/payments)

lava-payment/lava
=================

Lava Payment SDK

v2.1.0(4w ago)1066.1k↓66.6%1MITPHPPHP &gt;= 7.4 || &gt;=8.0CI passing

Since Apr 8Pushed 4mo agoCompare

[ Source](https://github.com/LavaDevelop/lava-sdk)[ Packagist](https://packagist.org/packages/lava-payment/lava)[ RSS](/packages/lava-payment-lava/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (5)Dependencies (9)Versions (10)Used By (0)

Lava SDK
========

[](#lava-sdk)

[![compatible](https://camo.githubusercontent.com/00685b222e0f0c245540bf6a09a2ad54b3402f942f9cc8b33de0767169fa8aef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545372e342d677265656e3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/00685b222e0f0c245540bf6a09a2ad54b3402f942f9cc8b33de0767169fa8aef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545372e342d677265656e3f7374796c653d706c6173746963)

SDK для работы с API Lava через фасад `Lava\Api\Http\LavaFacade`.

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

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

```
composer require lava-payment/lava
```

Быстрый старт
-------------

[](#быстрый-старт)

### Инициализация (только shop-методы)

[](#инициализация-только-shop-методы)

```
use Lava\Api\Http\LavaFacade;

$facade = new LavaFacade(
    'shop_secret_key',
    'shop_id',
    'shop_webhook_additional_key' // optional
);
```

### Инициализация для profile/payoff методов

[](#инициализация-для-profilepayoff-методов)

Для методов профиля и вывода (`createPayoff`, `getStatusPayoff`, `getPayoffTariffs`, `checkWallet`, `getProfileBalance`, `checkPayoffSignature`) нужно передать `ProfileSecretDto`.

```
use Lava\Api\Dto\Secret\ProfileSecretDto;
use Lava\Api\Http\LavaFacade;

$profileSecret = new ProfileSecretDto(
    'profile_id',
    'profile_secret_key',
    'profile_additional_key' // optional, нужен для checkPayoffSignature
);

$facade = new LavaFacade(
    'shop_secret_key',
    'shop_id',
    'shop_webhook_additional_key',
    null,
    null,
    null,
    $profileSecret
);
```

Методы фасада
-------------

[](#методы-фасада)

### Инвойсы

[](#инвойсы)

#### Создание платежа `createInvoice`

[](#создание-платежа-createinvoice)

```
use Lava\Api\Dto\Request\Invoice\CreateInvoiceDto;

$dto = new CreateInvoiceDto(
    '300.09',
    'order-1001',
    'https://example.com/hook',
    'https://example.com/success',
    'https://example.com/fail',
    300,
    '{"productId":39}',
    'Pay product'
);

$response = $facade->createInvoice($dto);
```

Возвращает `CreatedInvoiceDto`.

#### Статус платежа `checkStatusInvoice`

[](#статус-платежа-checkstatusinvoice)

```
use Lava\Api\Dto\Request\Invoice\GetStatusInvoiceDto;

$dto = new GetStatusInvoiceDto(null, $invoiceId); // по invoiceId
$response = $facade->checkStatusInvoice($dto);
```

Возвращает `StatusInvoiceDto`.

#### Доступные тарифы `getAvailibleTariffs`

[](#доступные-тарифы-getavailibletariffs)

```
$tariffs = $facade->getAvailibleTariffs();
```

Возвращает массив объектов `AvailibleTariffDto`.

### Возвраты

[](#возвраты)

#### Создание возврата `createRefund`

[](#создание-возврата-createrefund)

```
use Lava\Api\Dto\Request\Refund\CreateRefundDto;

$dto = new CreateRefundDto(
    'invoice-id',
    null,
    100.00
);

$response = $facade->createRefund($dto);
```

Возвращает `CreatedRefundDto`.

#### Статус возврата `checkStatusRefund`

[](#статус-возврата-checkstatusrefund)

```
use Lava\Api\Dto\Request\Refund\GetStatusRefundDto;

$dto = new GetStatusRefundDto($refundId);
$response = $facade->checkStatusRefund($dto);
```

Возвращает `StatusRefundDto`.

### Баланс

[](#баланс)

#### Баланс профиля `getProfileBalance`

[](#баланс-профиля-getprofilebalance)

```
$profileBalance = $facade->getProfileBalance();
```

Возвращает `ProfileBalanceDto`.

#### Баланс магазина `getShopBalance` (deprecated)

[](#баланс-магазина-getshopbalance-deprecated)

```
$shopBalance = $facade->getShopBalance();
```

Метод помечен как deprecated. Используйте `getProfileBalance()`.

### Выводы (Payoff)

[](#выводы-payoff)

#### Создание вывода `createPayoff`

[](#создание-вывода-createpayoff)

```
use Lava\Api\Dto\Request\Payoff\CreatePayoffDto;

$dto = new CreatePayoffDto(
    'withdraw-order-1',
    10.00,
    'lava_payoff'
);

$response = $facade->createPayoff($dto);
```

Возвращает `CreatedPayoffDto`.

#### Статус вывода `getStatusPayoff`

[](#статус-вывода-getstatuspayoff)

```
use Lava\Api\Dto\Request\Payoff\GetPayoffStatusDto;

$dto = new GetPayoffStatusDto(null, $payoffId);
$response = $facade->getStatusPayoff($dto);
```

Возвращает `StatusPayoffDto`.

#### Тарифы вывода `getPayoffTariffs`

[](#тарифы-вывода-getpayofftariffs)

```
$tariffs = $facade->getPayoffTariffs();
```

Возвращает массив DTO тарифов вывода.

#### Проверка кошелька `checkWallet`

[](#проверка-кошелька-checkwallet)

```
use Lava\Api\Dto\Request\Payoff\CheckWalletRequestDto;

$dto = new CheckWalletRequestDto('lava_payoff', 'wallet_value');
$response = $facade->checkWallet($dto);
```

Возвращает `CheckWalletResponseDto`.

### Рекуррентные платежи

[](#рекуррентные-платежи)

Рекуррентные методы используют те же `shop_secret_key` и `shop_id`, что и методы инвойсов. Подпись запроса и `shopId`формируются SDK автоматически.

#### Список продуктов подписки `getRecurrentProducts`

[](#список-продуктов-подписки-getrecurrentproducts)

```
$products = $facade->getRecurrentProducts();

foreach ($products as $product) {
    echo $product->getName();
    echo $product->getPrice();
}
```

Возвращает массив объектов `ProductDto`. У объекта доступны, в частности, методы `getId()`, `getName()`, `getPrice()`, `getPeriod()`, `getPeriodDays()`, `getFreeDays()`, `getDescription()`, `isActive()` и `getSubscribersCount()`.

#### Создание подписчика `createRecurrentConsumer`

[](#создание-подписчика-createrecurrentconsumer)

```
use Lava\Api\Dto\Request\Recurrent\CreateConsumerDto;

$consumer = new CreateConsumerDto(
    'customer@example.com',
    'customer-1001',
    '+79990000000', // optional
    'Иван Иванов' // optional
);

$response = $facade->createRecurrentConsumer($consumer);
```

Возвращает `ConsumerDto` с методами `getConsumerId()`, `getEmail()`, `getPhone()` и `getShopId()`.

#### Оформление подписки `createSubscription`

[](#оформление-подписки-createsubscription)

Сначала создайте подписчика, затем передайте его `consumerId` и идентификатор продукта из `getRecurrentProducts()`.

```
use Lava\Api\Dto\Request\Recurrent\CreateSubscriptionDto;

$subscription = new CreateSubscriptionDto(
    'product-uuid',
    'customer-1001',
    'subscription-order-1001'
);

$response = $facade->createSubscription($subscription);
$paymentUrl = $response->getUrl();
```

Возвращает `CreatedSubscriptionDto`. Методы `getSubscriptionId()`, `getAmount()`, `getExpired()`, `getUrl()` и `getComment()` содержат данные созданной подписки и ссылку на первоначальную оплату.

#### Статус подписки `getSubscriptionStatus`

[](#статус-подписки-getsubscriptionstatus)

Идентифицируйте подписку по `subscriptionId` или по вашему `orderId`.

```
use Lava\Api\Dto\Request\Recurrent\GetSubscriptionStatusDto;

$status = $facade->getSubscriptionStatus(
    new GetSubscriptionStatusDto('subscription-uuid')
);

// Или поиск по ID заказа в вашей системе:
$status = $facade->getSubscriptionStatus(
    new GetSubscriptionStatusDto(null, 'subscription-order-1001')
);
```

Возвращает `SubscriptionStatusDto`. Основные методы: `getStatus()`, `getSubscriptionId()`, `getOrderId()`, `getConsumerId()`, `getProductId()`, `getAmount()`, `getLastPayTime()`, `getNextPayTime()` и `getDeactivatedReason()`.

#### Перенос следующего платежа `offsetSubscriptionNextPayTime`

[](#перенос-следующего-платежа-offsetsubscriptionnextpaytime)

```
use Lava\Api\Dto\Request\Recurrent\OffsetNextPayTimeDto;

$response = $facade->offsetSubscriptionNextPayTime(
    new OffsetNextPayTimeDto(7, 'subscription-uuid')
);

$nextPayTime = $response->getNextPayTime();
```

Первый аргумент — число дней переноса. Подписку можно указать также через `orderId`: `new OffsetNextPayTimeDto(7, null, 'subscription-order-1001')`. Метод возвращает `OffsetNextPayTimeResponseDto`.

#### Отмена подписки `unsubscribe`

[](#отмена-подписки-unsubscribe)

```
use Lava\Api\Dto\Request\Recurrent\UnsubscribeDto;

$response = $facade->unsubscribe(
    new UnsubscribeDto(null, 'subscription-order-1001')
);

if ($response->isUnsubscribed()) {
    // Подписка отменена
}
```

Возвращает `UnsubscribedSubscriptionDto`. Для `getSubscriptionStatus`, `offsetSubscriptionNextPayTime` и `unsubscribe`обязателен хотя бы один идентификатор: `subscriptionId` или `orderId`; иначе выбрасывается `RecurrentException` с кодом `422`.

### Вебхуки и подписи

[](#вебхуки-и-подписи)

#### Проверка подписи shop webhook `checkSignWebhook`

[](#проверка-подписи-shop-webhook-checksignwebhook)

```
$data = file_get_contents('php://input');
$headers = getallheaders();

if (!isset($headers['Authorization'])) {
    throw new Exception('Authorization header is required');
}

$isValid = $facade->checkSignWebhook($data, $headers['Authorization']);
```

Этот метод используется и для webhook-уведомлений о рекуррентных подписках. В payload рекуррентного webhook поле `type`имеет значение `4`; статус подписки передаётся в поле `status` (`activated`, `deactivated` или `suspended`).

#### Проверка подписи payoff webhook `checkPayoffSignature`

[](#проверка-подписи-payoff-webhook-checkpayoffsignature)

```
$data = file_get_contents('php://input');
$headers = getallheaders();

if (!isset($headers['Authorization'])) {
    throw new Exception('Authorization header is required');
}

$isValid = $facade->checkPayoffSignature($data, $headers['Authorization']);
```

Исключения
----------

[](#исключения)

При ошибках API методы выбрасывают исключения (например, `InvoiceException`, `PayoffException`, `RefundException`, `RecurrentException`, `BaseException` и другие). Рекомендуется оборачивать вызовы фасада в `try/catch` и логировать сообщение и код ошибки.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance84

Actively maintained with recent releases

Popularity36

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~298 days

Total

4

Last Release

28d ago

Major Versions

v1.0.2.x-dev → v2.0.02026-04-08

PHP version history (2 changes)v1.0.2.x-devPHP &gt;= 7.4

v2.0.0PHP &gt;= 7.4 || &gt;=8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/4ca86fa2049104a8f8f21417c0b086bc1794bbab8fcd8cea6d81100094dc4a81?d=identicon)[LavaDevelop](/maintainers/LavaDevelop)

---

Top Contributors

[![LavaDevelop](https://avatars.githubusercontent.com/u/117733336?v=4)](https://github.com/LavaDevelop "LavaDevelop (11 commits)")

---

Tags

lavalava-sdklava payment

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/lava-payment-lava/health.svg)

```
[![Health](https://phpackages.com/badges/lava-payment-lava/health.svg)](https://phpackages.com/packages/lava-payment-lava)
```

###  Alternatives

[pagseguro/php

Biblioteca de integração com o PagSeguro

23260.3k6](/packages/pagseguro-php)

PHPackages © 2026

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