Оплата банковской картой
Сценарий использования
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:
Примеры ответов:
4.2. Ожидаем уведомления на адрес, указанный при создании счёта (CreateInvoice) в параметре
ResultUrlили в расширенных настройках магазина на вкладке "Подключение магазина".
Описание
Используется для оплаты СКО банковской картой.
Заголовки запроса
| Параметр | Свойства | Описание |
|---|---|---|
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 | IPv4-адрес сайта, с которого выставляется платеж. |
Hash |
STRING REQUIRED | Подпись данных запроса. Выполняет две ключевые функции:
Сигнатура подписи: 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://test.ru/return"));
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://test.ru/return&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;
Пример ответов