2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00
2025-02-24 22:31:15 +03:00

Moneta SDK PHP

SDK PHP для использования платежных методов Монета | PayAnyWay

Документация SDK
Документация Монеты

Требования

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');\""
        ]
    }
...
  1. Обновите зависимости проекта. В консоли перейдите в каталог, где лежит composer.json, и выполните команду:
composer update
  1. Затем выполните скрипт:
composer moneta-copy-config

Обратите внимание, что каталог конфигурации появится в корне вашего проекта. При инициализации объекта MonetaSDK вам потребуется передавать путь до каталога конфигурации, например:

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();
  1. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
include_once('vendor/autoload.php');

Установка через git

  1. Выполните следующую команду:
git clone https://git.pub.moneta.ru/Moneta-Labs/moneta-sdk-php.git
  1. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
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;
    password --- пароль от личного кабинета Moneta | PayAnyWay;
    payment_password --- платежный пароль.

    Полное описание config-файлов можете прочитать в документации к SDK.

  2. Пример генерации ссылки на оплату с помощью MONETA.Assistant:

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

Когда ссылка будет сгенерирована, нужно направить на неё плательщика..

  1. После оплаты на указанный PayURL в настройках счета будет направлено платежное уведомление от Монеты. В вашем обработчике уведомление потребуется сменить статус заказа в системе магазина, а также сформировать ответ для Монеты.
    3.1. Ответ без передачи номенклатуры:
include_once('vendor/autoload.php');

$orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление
$mSdk = new Moneta\MonetaSdk($orderId);
$mSdk->responseToPaymentNotification(); // Результат: SUCCESS 

В результате для Монеты будет предоставлен минимальный ответ SUCCESS. Для платежной системы это будет означать, что система магазина приняла уведомление и изменила статус заказа, после чего в Монете у операции будет присвоен статус "Выполнена".
3.2. Ответ с передачей номенклатуры:

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 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

В документации описаны методы и примеры их использования:

Description
SDK PHP для использования платежных методов Монета | PayAnyWay
https://docs.moneta.ru
Readme 43 KiB
v2.0.0 Latest
2025-02-24 19:30:23 +00:00
Languages
PHP 100%