PHPackages                             maksimego/robokassa-api - 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. maksimego/robokassa-api

ActiveLibrary

maksimego/robokassa-api
=======================

Fork of Robokassa Api for PHP 8.1

0827↑210.3%PHP

Since Aug 9Pushed 9mo agoCompare

[ Source](https://github.com/maksimEgo/robokassa-api)[ Packagist](https://packagist.org/packages/maksimego/robokassa-api)[ RSS](/packages/maksimego-robokassa-api/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (0)

robokassa-api
=============

[](#robokassa-api)

[![Latest Stable Version](https://camo.githubusercontent.com/a3acc8b73c9e4b0b5fa97c26f228a7f9a4077c2af27e10778a0ae935ad2b6bf2/687474703a2f2f706f7365722e707567782e6f72672f6e657466616e746f6d2f726f626f6b617373612d6170692f76)](https://packagist.org/packages/netfantom/robokassa-api)[![Total Downloads](https://camo.githubusercontent.com/08f7a5725775a25b3d81db39f569d66fc72e8d38663226f4c3b4e7bf86bebfb9/687474703a2f2f706f7365722e707567782e6f72672f6e657466616e746f6d2f726f626f6b617373612d6170692f646f776e6c6f616473)](https://packagist.org/packages/netfantom/robokassa-api)[![License](https://camo.githubusercontent.com/3db733c8b1e8f2c3c7afadd7581f82a10cbf5126207d5cc6fb2479af34615a2f/687474703a2f2f706f7365722e707567782e6f72672f6e657466616e746f6d2f726f626f6b617373612d6170692f6c6963656e7365)](https://packagist.org/packages/netfantom/robokassa-api)[![PHP Version Require](https://camo.githubusercontent.com/8c5bcd452794561543e02c2f56932bc3a52d004882ba7f3e18973fd562a56a68/687474703a2f2f706f7365722e707567782e6f72672f6e657466616e746f6d2f726f626f6b617373612d6170692f726571756972652f706870)](https://packagist.org/packages/netfantom/robokassa-api)[![codecov](https://camo.githubusercontent.com/83f6c317d7ee223740aff696855a390299aa6413b409b4553b681ce69c021bef/68747470733a2f2f636f6465636f762e696f2f67682f69676f722d6e657446616e746f6d2f726f626f6b617373612d6170692f6272616e63682f6d61696e2f67726170682f62616467652e7376673f746f6b656e3d43394758594f384a5642)](https://codecov.io/gh/igor-netFantom/robokassa-api)[![type-coverage](https://camo.githubusercontent.com/41f4ddaed40625baf5d84def1c707691bd26f5adff1adad3eb3baab7c35037be/68747470733a2f2f73686570686572642e6465762f6769746875622f69676f722d6e657446616e746f6d2f726f626f6b617373612d6170692f636f7665726167652e737667)](https://shepherd.dev/github/igor-netfantom/robokassa-api)[![psalm-level](https://camo.githubusercontent.com/c6f909c5a130a91c1a682c70059333bb775ac8a5cdde0d989f224385d5e189e8/68747470733a2f2f73686570686572642e6465762f6769746875622f69676f722d6e657446616e746f6d2f726f626f6b617373612d6170692f6c6576656c2e737667)](https://shepherd.dev/github/igor-netfantom/robokassa-api)

Данный модуль содержит базовый набор методов для взаимодействия с Робокассой.

Для работы требуется `PHP 8.1+` и любой `PSR-18 HTTP Client`

Для настройки модуля, формирования запросов и обработки ответов используются объекты `InvoiceOptions`, `SecondReceiptOptions` и `InvoicePayResult`

Установка с помощью Composer
----------------------------

[](#установка-с-помощью-composer)

```
composer require igor-netfantom/robokassa-api:@dev

```

В модуле используется [php-http/discovery](https://packagist.org/packages/php-http/discovery), который автоматически найдет подходящий `PSR-18 HTTP Client` из уже установленных или, если ни один подходящий не установлен, предложит установку по спискам:

- [psr/http-client-implementation](https://packagist.org/providers/psr/http-client-implementation)
- и [psr/http-factory-implementation](https://packagist.org/providers/psr/http-factory-implementation)( включая [psr/http-message-implementation](https://packagist.org/providers/psr/http-message-implementation) )

При необходимости в настройках модуля можно указать какой `PSR-18 HTTP Client` следует использовать.

Настройка модуля
----------------

[](#настройка-модуля)

```
$robokassa = new \netFantom\RobokassaApi\RobokassaApi(
    merchantLogin: 'robo-demo',
    password1: 'password_1',
    password2: 'password_2',
    isTest: false,
    psr18Client: new \Http\Discovery\Psr18Client(),  // необязательно
);
```

`RobokassaApi::psr18Client` указывать необязательно.

`PSR-18 HTTP Client` используется для отправки некоторых запросов
(формирование второго чека, получение статуса чека, отправка СМС)

Его можно изменить или получить после создания и настройки объекта RobokassaApi.

При его отсутствии будет произведена попытка автоматического поиска подходящего уже установленного `PSR-18 HTTP Client` с помощью [php-http/discovery](https://packagist.org/packages/php-http/discovery)

```
$robokassa = new \netFantom\RobokassaApi\RobokassaApi(
    // ...
    psr18Client: new \Http\Discovery\Psr18Client(),  // вручную указываем свой psr18Client
    // или
    psr18Client: null,  // разрешить автоматический поиск подходящего psr18Client
);

$psr18Client = $robokassa->getPsr18Client(); // получение указанного psr18Client или поиск подходящего

$robokassa->setPsr18Client(new \Http\Discovery\Psr18Client()); // изменение psr18Client
```

Методы
------

[](#методы)

- [Получение параметров платежа для передачи в Робокассу](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2-%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8-%D0%B2-%D1%80%D0%BE%D0%B1%D0%BE%D0%BA%D0%B0%D1%81%D1%81%D1%83)
- [Получение URL для оплаты счета с указанными параметрами](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-url-%D0%B4%D0%BB%D1%8F-%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D1%8B-%D1%81%D1%87%D0%B5%D1%82%D0%B0-%D1%81-%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0%D0%BC%D0%B8)
- [Получение параметров платежа в формате `JSON строки`](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2-%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B0-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5-json-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)
- [Отправка второго чека](#%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE-%D1%87%D0%B5%D0%BA%D0%B0)
- [Получение статуса чека](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0-%D1%87%D0%B5%D0%BA%D0%B0)
- [Отправка СМС](#%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D1%81%D0%BC%D1%81)
- [Получение результата оплаты счета от Робокассы](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0-%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D1%8B-%D1%81%D1%87%D0%B5%D1%82%D0%B0-%D0%BE%D1%82-%D1%80%D0%BE%D0%B1%D0%BE%D0%BA%D0%B0%D1%81%D1%81%D1%8B)
- [Вспомогательные методы](#%D0%B2%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B)
    - [Параметры для отправки СМС](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B4%D0%BB%D1%8F-%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8-%D1%81%D0%BC%D1%81)
    - [Формирование данных для отправки второго чека или проверки статуса чека](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B4%D0%BB%D1%8F-%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8-%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE-%D1%87%D0%B5%D0%BA%D0%B0-%D0%B8%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8-%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0-%D1%87%D0%B5%D0%BA%D0%B0)

### Получение параметров платежа для передачи в Робокассу

[](#получение-параметров-платежа-для-передачи-в-робокассу)

(для формирования `ФОРМЫ` оплаты с методом передачи POST запросом)

```
use netFantom\RobokassaApi\Options\InvoiceOptions;
use netFantom\RobokassaApi\Params\Option\{Culture, OutSumCurrency, Receipt};
use netFantom\RobokassaApi\Params\Item\{PaymentMethod, PaymentObject};
use netFantom\RobokassaApi\Params\Receipt\{Item, Sno, Tax};
use netFantom\RobokassaApi\RobokassaApi;

$robokassa = new RobokassaApi(
    // ...
);
$paymentParametersArray = $robokassa->getPaymentParameters(new InvoiceOptions(
    outSum: 999.99,
    invId: 1,
    description: 'Description',
    receipt: new Receipt(
        items: [
            new Item(
                name: "Название товара 1",
                quantity: 1,
                sum: 100,
                tax: Tax::vat10,
                payment_method: PaymentMethod::full_payment,
                payment_object: PaymentObject::commodity,
            ),
            new Item(
                name: "Название товара 2",
                quantity: 3,
                sum: 450,
                tax: Tax::vat10,
                payment_method: PaymentMethod::full_payment,
                payment_object: PaymentObject::service,
                cost: 150,
                nomenclature_code: '04620034587217',
            ),
        ],
        sno: Sno::osn
    ),
    expirationDate: (new DateTimeImmutable())->add(new DateInterval('PT48H')),
    email: 'user@email.com',
    outSumCurrency: OutSumCurrency::USD,
    userIP: '127.0.0.1',
    incCurrLabel: null,
    userParameters: [
        'user_id' => '123',
        'parameter2' => 'parameter2_value',
        // ...
    ],
    encoding: 'utf-8',
    culture: Culture::ru,
));
//[
//    'MerchantLogin' => ...,
//    'OutSum' => ...,
//    'Description' => ...,
//    'SignatureValue' => ...,
//    'IncCurrLabel' => ...,
//    'InvId' => ...,
//    'Culture' => ...,
//    'Encoding' => ...,
//    'Email' => ...,
//    'ExpirationDate' => ...,
//    'OutSumCurrency' => ...,
//    'UserIp' => ...,
//    'Receipt' => ...,
//    'IsTest' => ...,
//    'shp_...' => ...,
//    'shp_...' => ...,
//    'shp_...' => ...,
//    // ...
//]
```

### Получение параметров платежа в формате `JSON строки`

[](#получение-параметров-платежа-в-формате-json-строки)

(для использования PopUp iFrame виджета Робокассы `robokassa_iframe.js`)

```
