10 KiB
Обработка http-уведомлений от Монеты
- Минимальный ответ на платежное уведомление (PayURL)
- Ответ с передачей номенклатуры (PayURL)
- Ответ на проверочный запрос с передачей номенклатуры (CheckURL)
- Документация SDK
Минимальный ответ на платежное уведомление (PayURL)
Минимальный ответ в документации
Чтобы сгенерировать минимальный ответ для платежного уведомления от Монеты, требуется создать объект MonetaSDK и передать номер заказа. В результате для Монеты будет предоставлен минимальный ответ SUCCESS и на стороне платежной системы статус операции будет изменен на "Выполнена"
include_once('vendor/autoload.php');
$orderId = $_POST['MNT_TRANSACTION_ID'];
$mSdk = new Moneta\MonetaSdk($orderId);
$mSdk->responseToPaymentNotification();
Ответ с передачей номенклатуры (PayURL)
Чтобы передать номенклатуру в ответе на платежное уведомление, нужно создать объект MonetaSdkReceipt и заполнить переменные объекта:
items* --- переменная товаров, типarray.
В примере ниже показан максимальный и минимальный набор передаваемых параметров товара. Подробное о параметрах и их значениях можно прочитать в документации раздел "Передача номенклатуры через ответ скрипта Pay URL".
Обратите внимание, что значения
vatотличаются от того, что написано в документации:
none- без НДС
vat0- НДС по ставке 0%
vat10- НДС чека по ставке 10%
vat110- НДС чека по расчетной ставке 10/110
vat20- НДС чека по ставке 20%
vat120- НДС чека по расчетной ставке 20/120
vat5- 5%
vat15- по расчётной ставке 5%
vat7- 7%
vat17- по расчётной ставке 7
-
customer* --- переменная плательщика, типarray.
Используется для отправки чека. Параметрemail--- обязательный -
delivery--- переменная доставки, типfloat. Если есть доставка, то указать ее стоимость.Параметры, отмеченные *, являются обязательными. Их нужно передать при создании объекта MonetaSDKReceipt.
После этого создайте объект MonetaSDK, передав номер заказа и сумму. Затем вызовите метод responseToPaymentNotification, передайте в него ранее созданный объект MonetaSdkReceipt. В результате система Монета получит ответ в формате XML, статус операции изменится на "Выполнена", а в кассовый сервис kassa.payanyway будет передана номенклатура для печати чеков.
include_once('vendor/autoload.php');
$mSdkReceipt = new Moneta\MonetaSdkReceipt();
// "Тестовый товар №1" ——— максимальный набор параметров товара
// "Тестовый товар №2" ——— минимальный набор параметров товара
$mSdkReceipt->items = [
[
'name' => 'Тестовый товар №1',
'price' => 123.45,
'quantity' => 1,
'measure' => 'шт',
"paymentMethod" => "full_payment",
"paymentObject" => "commodity",
'vat' => 'none',
'agentInfo' => [
'type' => 'payment_agent',
],
'supplierInfo' => [
'name' => 'Поставщик 1',
'inn' => '1234567890',
'phones' => [
'79995558844',
'79998855221'
]
]
],
[
'name' => 'Тестовый товар №2',
'price' => 999,
'quantity' => 2,
]
];
$mSdkReceipt->customer = [
'email' => 'com@moneta.ru',
'phone' => '74956465848'
];
$mSdkReceipt->delivery = 456.78;
$orderId = $_POST['MNT_TRANSACTION_ID'];
$mSdk = new Moneta\MonetaSdk($orderId);
$mSdk->responseToPaymentNotification($mSdkReceipt);
Ответ на проверочный запрос с передачей номенклатуры (CheckURL)
Если вы используете кассу БПА ПА (Payanyway) и в настройках счёта указан CheckURL, вам нужно ответить на проверочный запрос, передав номенклатуру. Ответ нужно предоставить до оплаты. Если система магазина не ответит на запрос, пользователь не сможет перейти к оплате.
Чтобы передать номенклатуру в ответе, создайте объект MonetaSdkReceipt и заполните его переменные:
-
items* --- переменная товаров, типarray.
В примере ниже показан максимальный и минимальный набор передаваемых параметров товара. Подробное о параметрах и их значениях можно прочитать в документации в разделе "Ответ на проверочный запрос (check url - уведомление)". -
customer* --- переменная плательщика, типarray.
Используется для отправки чека. Параметрemail--- обязательный -
delivery--- переменная доставки, типfloat. Если есть доставка, то указать ее стоимость.*--- обязательная переменная, её нужно заполнить.
После заполнения переменных создайте объект MonetaSDK, передав номер заказа и сумму. Затем вызовите метод responseToCheckRequest, передав в него ранее созданный объект MonetaSdkReceipt. В результате система Монета получит ответ в формате JSON, и пользователь сможет перейти на страницу оплаты.
include_once('vendor/autoload.php');
$mSdkReceipt = new Moneta\MonetaSdkReceipt();
$mSdkReceipt->items = [
[
'name' => 'Тестовый товар №1',
'price' => 123.45,
'quantity' => 1,
'measure' => 'шт',
"paymentMethod" => "full_payment",
"paymentObject" => "commodity",
'vat' => 'none',
'agentInfo' => [
'payingAgent' => [
'operation' => 'Наименование операции банковского платежного агента',
'phones' => [
'79995558844',
'79998855221'
]
],
'supplierInfo' => [
'name' => 'Поставщик 1',
'inn' => '1346',
'phones' => [
'79995558844',
'79998855221'
]
]
]
],
[
'name' => 'Тестовый товар2',
'price' => 999,
'quantity' => 2,
]
];
$mSdkReceipt->customer = [
'name' => 'Иванов Иван Иванович',
'inn' => '1234567890',
'email' => 'com@moneta.ru',
'phone' => '75556664477'
];
$mSdkReceipt->additionalCheckProp = 'Дополнительный реквизит чека';
$mSdkReceipt->additionalUserProps = [
'name' => 'Доп. реквизиты пользователя',
'value' => 'Значение',
];
$mSdkReceipt->delivery = 456.78;
$orderId = $_POST['MNT_TRANSACTION_ID'];
$amount = $_POST['MNT_AMOUNT'];
$mSdk = new Moneta\MonetaSdk($orderId, $amount);
$mSdk->responseToCheckRequest($mSdkReceipt);
Если вы передаете номенклатуру в ответе на проверочный запрос, то на платежное уведомление можно отдать минимальный ответ в виде SUCCESS (Пример).