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

Оплата банковской картой


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

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

2. Инициализируем оплату банковской картой (BankCardPayment)

3. Запрашиваем статус (GetBankCardPaymentState)

Перезапрашиваем пока не получим статус PaymentStep, отличный от Created или InProcess.

JSON
{
  "OperationState": {
    "Code": 0,
    "Desc": "Успешно обработана"
  },
  "EshopId": 459299,
  "Result": {
    "PaymentStep": "SendTo3DS",
    "Form3DS": "<body OnLoad=\"document.forms[0].submit();\"><FORM ACTION=\"https://merchant.intellectmoney.ru/3ds\" METHOD=\"post\"><input type=\"hidden\" name=\"data\" value=\"MklmQnh4M1JjV...\"></FORM></body>",
    "State": {
      "Code": 0,
      "Desc": "Успешно обработан"
    }
  }
}
JSON
{
  "OperationState": {
    "Code": 0,
    "Desc": "Успешно обработана"
  },
  "EshopId": 459299,
  "Result": {
    "PaymentStep": "ActivationPayment",           
    "State": {
      "Code": 0,
      "Desc": "Успешно обработан"
    }
  }
}

Активационный платеж

Для проведения активационного платежа необходимо вызвать ActivationPayment

4. Отслеживаем статус платежа (доступны 2 способа)

4.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": "Успешно обработан"
   }
 }
}

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


Описание

Используется для оплаты СКО банковской картой.

POST (Уровень доступа: PCI/DSS, Тестовый)

https://api.intellectmoney.ru/merchant/bankCardPayment

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

Параметр Свойства Описание
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::Pan::CardHolder::ExpiredMonth::ExpiredYear::Cvv::ReturnUrl::IpAddress::SignSecretKey

Тело запроса

Параметр Свойства Описание
EshopId INT REQUIRED max 6 Номер магазина.
Можно найти в личном кабинете, в разделе магазины.
InvoiceId STRING REQUIRED 3xxxxxxxxx Номер СКО.
Pan STRING REQUIRED max 20 Номер банковской карты плательщика.
CardHolder STRING OPTIONAL max 36 Имя и фамилия плательщика.
ExpiredMonth INT REQUIRED max 2 Месяц, до которого действует карта.
ExpiredYear INT REQUIRED max 2 Год, до которого действует карта.
Cvv STRING OPTIONAL max 4 Секретный код CVV2 (CVC2).
Обычно указан на обороте карты (последние три цифры на полосе для подписи).
ReturnUrl STRING REQUIRED max 512 Адрес успешной 3DS авторизации.
URL адрес, на который перенаправляет плательщика после завершения 3DS.
IpAddress STRING REQUIRED 0.0.0.0/0 IP адрес.
IP адрес сайта, с которого выставляется платеж.
Hash STRING REQUIRED Подпись данных запроса.
Выполняет две ключевые функции:
  1. Целостность данных - защиту от изменений: подпись гарантирует, что информация в запросе не была модифицирована при передаче.
  2. Аутентификацию отправителя - подтверждение, что запрос создан доверенным сервисом (используется секретный ключ магазина, доступный только отправителю).
Подробнее о формирование и проверки подписи.

Сигнатура подписи:
EshopId::InvoiceId::Pan::CardHolder::ExpiredMonth::ExpiredYear::Cvv::ReturnUrl::IpAddress::SecretKey

Тело ответа

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

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

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("Pan", "212121******2121"));
collection.Add(new("CardHolder", "TEST"));
collection.Add(new("ExpiredMonth", "12"));
collection.Add(new("ExpiredYear", "30"));
collection.Add(new("Cvv", "900"));
collection.Add(new("ReturnUrl", "https://shop.ru"));
collection.Add(new("IpAddress", "127.0.0.1"));
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/bankCardPayment',
    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&Pan=212121******2121&CardHolder=TEST&ExpiredMonth=12&ExpiredYear=30&Cvv=900&ReturnUrl=https://shop.ru&IpAddress=127.0.0.1&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": "Успешно обработана"
    },
    "EshopId": 459299,
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        }
    }
}
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "Result": {
        "State": {
            "Code": 258,
            "Desc": "Есть не завершенные платежи. Дождитесь обработки."
        }
    }
}