157 lines
8.2 KiB
Markdown
157 lines
8.2 KiB
Markdown
# Moneta SDK PHP
|
||
|
||
SDK PHP для использования платежных методов [Монета | PayAnyWay](https://moneta.ru/info/d/ru/public/welcome.htm)
|
||
|
||
[Документация SDK](docs/)
|
||
[Документация Монеты](https://docs.moneta.ru/)
|
||
|
||
## Требования
|
||
PHP 8.0 (и выше)
|
||
|
||
## Установка
|
||
|
||
### Установка через composer
|
||
1. Добавьте строку `"moneta-integrations/moneta-sdk-php": "^2.0"` в список зависимостей вашего проекта в файле composer.json
|
||
```
|
||
...
|
||
"require": {
|
||
"moneta-integrations/moneta-sdk-php": "^2.0"
|
||
}
|
||
...
|
||
```
|
||
а также разместите следующие скрипты в секции "scripts" файла composer.json. Эти скрипты скопируют каталог конфигурации (config) из пакета moneta-integrations/moneta-sdk-php и разместят его в корне вашего проекта:
|
||
```
|
||
...
|
||
"scripts": {
|
||
"moneta-copy-config": [
|
||
"php -r \"if(!is_dir('config')){ mkdir('config');}\"",
|
||
"php -r \"copy('vendor/moneta-integrations/moneta-sdk-php/config/account.php', 'config/account.php');\"",
|
||
"php -r \"copy('vendor/moneta-integrations/moneta-sdk-php/config/url.php', 'config/url.php');\""
|
||
]
|
||
}
|
||
...
|
||
```
|
||
2. Обновите зависимости проекта. В консоли перейдите в каталог, где лежит composer.json, и выполните команду:
|
||
```bash
|
||
composer update
|
||
```
|
||
3. Затем выполните скрипт:
|
||
```
|
||
composer moneta-copy-config
|
||
```
|
||
> Обратите внимание, что каталог конфигурации появится в корне вашего проекта. При инициализации объекта MonetaSDK вам потребуется передавать путь до каталога конфигурации, например:
|
||
```php
|
||
include_once('vendor/autoload.php');
|
||
|
||
$orderId = 'ORDER_471';
|
||
$amount = 123.45;
|
||
$description = 'Оплата заказа ORDER_471';
|
||
$configPath = 'config';
|
||
$mSdk = new Moneta\MonetaSdk($orderId, $amount, $description, $configPath);
|
||
$mSdk->getAssistantPaymentLink();
|
||
```
|
||
|
||
4. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
|
||
```php
|
||
include_once('vendor/autoload.php');
|
||
```
|
||
### Установка через git
|
||
1. Выполните следующую команду:
|
||
```git
|
||
git clone https://git.pub.moneta.ru/Moneta-Labs/moneta-sdk-php.git
|
||
```
|
||
2. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
|
||
```php
|
||
include_once('moneta-sdk-php/autoload.php');
|
||
```
|
||
## Начало работы
|
||
1. В конфигурации SDK укажите свои данные:
|
||
1.1. Если вы планируете использовать базовый функционал (выставление ссылок на оплату через Assistant), то заполните только следующие параметры:
|
||
`id` --- номер бизнес счета;
|
||
`secret` --- код проверки целостности данных;
|
||
`demo_mode` --- указать `true`, если вы проводите интеграцию на демо-стенде (demo.moneta.ru).
|
||
|
||
1.2. Если вы планируете использовать функционал MerchantAPI, то требуется указать дополнительно:
|
||
`username` --- логин от личного кабинета [Moneta | PayAnyWay](https://www.payanyway.ru/backoffice/auth/signin);
|
||
`password` --- пароль от личного кабинета [Moneta | PayAnyWay](https://www.payanyway.ru/backoffice/auth/signin);
|
||
`payment_password` --- платежный пароль.
|
||
|
||
Полное описание config-файлов можете прочитать в [документации к SDK](/docs/config.md).
|
||
|
||
2. Пример генерации ссылки на оплату с помощью [MONETA.Assistant](https://www.moneta.ru/doc/MONETA.Assistant.ru.pdf):
|
||
```php
|
||
include_once('vendor/autoload.php');
|
||
|
||
$orderId = 'ORDER_471'; // Номер заказа в системе магазина
|
||
$amount = 123.45; // Сумма заказа
|
||
$mSdk = new Moneta\MonetaSdk($orderId, $amount);
|
||
$mSdk->getAssistantPaymentLink(); // Результат: https://demo.moneta.ru/assistant.htm?MNT_ID=96324612&MNT_AMOUNT=123.45&MNT_TRANSACTION_ID=ORDER_471&MNT_CURRENCY_CODE=RUB&MNT_SIGNATURE=93742a04b8b3124779c13a5cfc414784&moneta.locale=ru
|
||
```
|
||
Когда ссылка будет сгенерирована, нужно направить на неё плательщика..
|
||
|
||
3. После оплаты на указанный PayURL в настройках счета будет направлено платежное уведомление от Монеты. В вашем обработчике уведомление потребуется сменить статус заказа в системе магазина, а также сформировать ответ для Монеты.
|
||
3.1. Ответ без передачи номенклатуры:
|
||
```php
|
||
include_once('vendor/autoload.php');
|
||
|
||
$orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление
|
||
$mSdk = new Moneta\MonetaSdk($orderId);
|
||
$mSdk->responseToPaymentNotification(); // Результат: SUCCESS
|
||
```
|
||
В результате для Монеты будет предоставлен минимальный ответ `SUCCESS`. Для платежной системы это будет означать, что система магазина приняла уведомление и изменила статус заказа, после чего в Монете у операции будет присвоен статус "Выполнена".
|
||
⠀⠀⠀3.2. Ответ с передачей номенклатуры:
|
||
```php
|
||
include_once('vendor/autoload.php');
|
||
|
||
$orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление
|
||
$mSdkReceipt = new Moneta\MonetaSdkReceipt();
|
||
// Минимальный набор данных о товаре:
|
||
$mSdkReceipt->items = [
|
||
[
|
||
'name' => 'Тестовый товар 2',
|
||
'price' => 123.45,
|
||
'quantity' => 1,
|
||
]
|
||
];
|
||
|
||
// Минимальный набор данных о плательщике
|
||
$mSdkReceipt->customer = [
|
||
'email' => 'com@moneta.ru',
|
||
];
|
||
|
||
// Если имеется доставка, то указать ее стоимость:
|
||
$mSdkReceipt->delivery = 67.89;
|
||
|
||
$mSdk = new Moneta\MonetaSdk($orderId);
|
||
$mSdk->responseToPaymentNotification($mSdkReceipt); // Результат: ответ в формате xml, см. ниже
|
||
```
|
||
В результате для Монеты будет сформирован ответ в формате xml с номенклатурой:
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<MNT_RESPONSE>
|
||
<MNT_ID>12346578</MNT_ID>
|
||
<MNT_TRANSACTION_ID>ORDER_471</MNT_TRANSACTION_ID>
|
||
<MNT_RESULT_CODE>200</MNT_RESULT_CODE>
|
||
<MNT_SIGNATURE>ec134dd3a9d2d0e84597f5bf0eef8a3e</MNT_SIGNATURE>
|
||
<MNT_ATTRIBUTES>
|
||
<MNT_ATTRIBUTE>
|
||
<KEY>INVENTORY</KEY>
|
||
<VALUE>[{"name":"Тестовый товар 2","price":123.45,"quantity":1,"vatTag":"1105","pm":"full_payment","po":"commodity"}]</VALUE>
|
||
</MNT_ATTRIBUTE>
|
||
<MNT_ATTRIBUTE>
|
||
<KEY>CUSTOMER</KEY>
|
||
<VALUE>com@moneta.ru</VALUE>
|
||
</MNT_ATTRIBUTE>
|
||
<MNT_ATTRIBUTE>
|
||
<KEY>DELIVERY</KEY>
|
||
<VALUE>67.89</VALUE>
|
||
</MNT_ATTRIBUTE>
|
||
</MNT_ATTRIBUTES>
|
||
</MNT_RESPONSE>
|
||
```
|
||
## Документация SDK
|
||
В документации описаны методы и примеры их использования:
|
||
- #### [Описание config-файлов](docs/config.md);
|
||
- #### [Базовые методы](docs/baseMethods.md);
|
||
- #### [Обработка http-уведомлений от Монеты](docs/notifications.md);
|
||
- #### [Методы MerchantAPI](docs/merchantAPI.md). |