Оплата банковской картой
Сценарий использования
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 | IP адрес. IP адрес сайта, с которого выставляется платеж. |
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://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;
Пример ответов