Перейти к содержанию

Mir Pay

Условие использования

Платёжный метод возможно использовать только на Android устройствах с версией 7.0 и выше.

TypeScript
export function isMirpayReadyToPay(): boolean {
    return /android/i.test(window.navigator.userAgent);
}
...
if (isMirpayReadyToPay) {
    // Отображаем кнопку оплаты через MirPay
    ...
}

Сценарий использования

1. Создаем СКО (CreateInvoice)

2. Инициализируем оплату МирПей с получением ссылки на сервис оплаты МИР (mirpay/getlink)

JSON
   {
       "OperationState": {
         "Code": 0,
         "Desc": "Успешно обработана"
       },
       "Result": {
         "State": {
           "Code": 0,
           "Desc": "Успешно обработан"
         },
         "UniversalLink": "https://pay.mironline.ru/inapp/eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBzOi8vbW...",
         "DeepLink": "mirpay://pay.mironline.ru/inapp/eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBz..."
       }
   }
После получения ответа, необходимо перенаправить клиента с задержкой на адрес содержащиеся в свойстве DeepLink и UniversalLink:

TypeScript
    const deepLink = () => {
          window.location.href = Data.Result.DeepLink;
    };
    const universalLink = () => {
          window.location.href = Data.Result.UniversalLink;
    };
    // Открывает ссылку из `DeepLink`
    setTimeout(deepLink , 50);
    // ... Ожидание 50мс
    // Открывает ссылку из `UniversalLink`
    setTimeout(universalLink , 50);
3. Отслеживаем статус платежа (доступны 2 способа)

3.1. Перезапрашиваем GetBankCardPaymentState ожидая получения статуса отличного от: Created, InProcess, SendTo3DS:

Примеры ответов:

JSON
{
  "OperationState": {
    "Code": 0,
    "Desc": "Успешно обработана"
  },
  "EshopId": 459299,
  "Result": {
    "PaymentStep": "OK",
    "State": {
      "Code": 0,
      "Desc": "Успешно обработан"
    }
  }
}
JSON
{
 "OperationState": {
   "Code": 0,
   "Desc": "Успешно обработана"
 },
 "EshopId": 459299,
 "Result": {
   "PaymentStep": "Error",
   "State": {
     "Code": 0,
     "Desc": "Успешно обработан"
   }
 }
}

3.2. Ожидаем вебхук на адрес, указанный при создании счёта (CreateInvoice) в параметре ResultUrl или в расширенных настройках магазина на вкладке "Подключение магазина".


Описание

Используется для оплаты СКО через МирПэй.

POST (Уровень доступа: Базовый)

https://api.intellectmoney.ru/merchant/mirpay/getlink

Заголовки запроса

Параметр Свойства Описание
Accept STRING OPTIONAL application/json Заголовок, указывающий формат данных, которые клиент хочет получить от сервера.
Content-Type STRING OPTIONAL application/json application/xml Заголовок, указывающий формат данных в теле запроса.
Authorization STRING REQUIRED Bearer {token} Заголовок, используемый для аутентификации клиента с помощью Bearer токена.
Подробнее об использование Bearer токена.
Sign STRING REQUIRED Заголовок с подписью для аутентификации запроса.

Сигнатура подписи:
EshopId::InvoiceId::SignSecretKey

Тело запроса

Параметр Свойства Описание
EshopId INT REQUIRED max 6 Номер магазина.
Можно найти в личном кабинете, в разделе магазины.
InvoiceId STRING REQUIRED 3xxxxxxxxx Номер СКО.
InitPaymentId STRING REQUIRED Guid Инициализированный номер платежа.
Представляет сгенерированный Guid для идентификации платежа.
Hash STRING REQUIRED Подпись данных запроса.
Выполняет две ключевые функции:
  1. Целостность данных - защиту от изменений: подпись гарантирует, что информация в запросе не была модифицирована при передаче.
  2. Аутентификацию отправителя - подтверждение, что запрос создан доверенным сервисом (используется секретный ключ магазина, доступный только отправителю).
Подробнее о формирование и проверки подписи.

Сигнатура подписи:
EshopId::InvoiceId::SecretKey

Тело ответа

Поле Тип Описание
OperationState OperationState Статус выполнения операции.
OperationId GUID Идентификатор операции.
EshopId INT Номер магазина.
Result GetLinkData Результат выполнения запроса.
Примеры кода
C#
var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, "https://api.intellectmoney.ru/merchant/mirpay/getlink");

request.Headers.Add("Accept", "application/json");
request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("Authorization", "Bearer 9d97820c61424eb6ac0db414ccb7ac60");
request.Headers.Add("Sign", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("EshopId", "450000"));
collection.Add(new("InvoiceId", "3000000000"));
collection.Add(new("InitPaymentId", "aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee"));
collection.Add(new("Hash", "d41d8cd98f00b204e9800998ecf8427e"));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.intellectmoney.ru/merchant/mirpay/getlink',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => 'EshopId=450000&InvoiceId=3000000000&InitPaymentId=aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee&Hash=d41d8cd98f00b204e9800998ecf8427e',
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/json',
        'Authorization: Bearer 9d97820c61424eb6ac0db414ccb7ac60',
        'Sign: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Пример ответов
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        },
        "UniversalLink": "https://pay.mironline.ru/inapp/eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBzOi8vbW...",
        "DeepLink": "mirpay://pay.mironline.ru/inapp/eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBz..."
    }
}
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "Result": {
        "State": {
            "ErrorSourceParam": "hash",
            "Code": 154,
            "Desc": "Не передан обязательный параметр hash или передан неверно."
        }
    }
}