Платежи на сайте через IntellectMoney PHP

Пример PHP-скриптов для оплаты заказов на сайте через экваринг Intellectmoney.

Подробная документация на https://wiki.intellectmoney.ru.

В личном кабинете, в разделе «Магазины» нужно перейти в настройки магазина. Вкладка «Прием платежей»:

Нужно указать:

  • Back URL – адрес интернет-магазина, на который будет возвращен пользователь после оплаты.
  • Result URL – URL, на который система IntellectMoney посылает POST-оповещения о оплате.

На сайте, после оформления заказа нужно сформировать ссылку для оплаты и перенаправить туда пользователя:

<?php
$params = array(
	'eshopId'           => '123456',  // идентификатор магазина
	'orderId'           => '1',       // ID заказа
	'serviceName'       => '',        // Описание заказа
	'recipientAmount'   => 100,       // Сумма заказа
	'recipientCurrency' => 'RUB',  
);

// Перенаправляем пользователя на страницу оплаты
header('Location: https://merchant.intellectmoney.ru/ru/?' . urldecode(http_build_query($params)));
exit;
PHP

Далее откроется форма оплаты:

После оплаты, на Result URL придет POST-запрос со следующими полями:

Array
(
    [eshopId] => 123456
    [paymentId] => xxxxxxx
    [orderId] => 1
    [eshopAccount] => xxxxxxx
    [serviceName] => 
    [recipientAmount] => 100.00
    [commissionAmount] => 10.50
    [recipientOriginalAmount] => 100.00
    [recipientCurrency] => RUB
    [paymentStatus] => 5
    [userName] => Иван Иванов
    [userEmail] => test@example.com
    [paymentData] => 2022-03-23 13:38:54
    [secretKey] => 
    [payMethod] => Acquiring
    [shortPan] => 
    [country] => 
    [bank] => 
    [ipAddress] => 
    [cardHolder] => 
    [brandType] => 
    [rcCode] => 
    [rcCodeUserDescription] => 
    [gatewayName] => QiwiBankDirect
    [hash] => 2672e672443b9784e190664b5de77580
)

По ним определяем статус платежа:

  • 3 (создан счет к оплате (СКО) за покупку),
  • 4 (СКО аннулирован, деньги возвращены пользователю),
  • 7 (СКО частично оплачен, в данном случае сумма которая уже оплачена передается в параметре recipientAmount),
  • 5 (СКО полностью оплачен, деньги переведены на счет интернет-магазина),
  • 6 (необходимая сумма заблокирована (холдирована) на СКО, ожидается запрос на списание или разблокировку средств или истечение срока блокировки),
  • 8 (по СКО был произведен возврат, в данном случае в параметре refundAmount передается сумма по возврату, в параметре recipientAmount передается сумма, оставшаяся у интернет-магазина).

И обновляем данные заказа в своём магазине.

<?php
// Сохраняем запрос в лог-файл
file_put_contents(__DIR__ . '/log.txt', print_r($_POST, true) . PHP_EOL, FILE_APPEND);

$orderId   = intval(@$_POST["orderId"]);
$paymentId = intval(@$_POST["paymentId"]);

if (@$_POST["paymentStatus"] == '5') {
	// Статус = 5, значит оплата прошла.
	// Далее нужно сохранить полученный paymentId в таблице заказов используя $orderId.
}

echo "OK";
exit();
PHP
12.04.2022
237

Комментарии

, чтобы добавить комментарий.

Другие публикации

Прием платежей на сайте через Юкассу
В данной статье описан процесс оплаты через сервис ЮKassa с помощью прямых запросов к API через PHP cURL.
8593
+5
Отправка sms через «SMS Aero» в PHP
Для отправки SMS-сообщений со своего сайта можно воспользоваться сервисом SMS Aero.
3444
+3
Прием платежей на сайте через интернет-эквайринг Тинькофф
Предварительно, чтобы реализовать оплату заказов на своем сайте через API Интернет-эквайринга банка Тинькофф...
3406
+5
Авторизация на сайте через Яндекс
Сервис Яндекс.Паспорт позволяет через API реализовать авторизацию пользователя на своем сайте. После разрешения доступа...
9528
+8
HTTP коды
Список основных кодов состояния HTTP, без WebDAV.
7238
+1
Чтение XML файла Яндекс Маркета в PHP
Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP...
11134
+3