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 (Пример).