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

Gazprom Pay


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

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

2. Инициализируем оплату Gazprom Pay (GazpromPayPayment)

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

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

JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "EshopId": 459276,
    "Result": {
        "PaymentStep": "SendTo3DS",
        "Form3DS": "https://gpay.online.gpb.ru/oks-gaz-pay/?gppTrxId=d50f53f7-99a0-42ee-a8b4-9ad58c98c662&merchId=9082705BA3C38F7C38E8",
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        }
    }
}

После получения ссылка на сервис оплаты "GPay", перенаправляем клиент на данный адрес:

TypeScript
 let gpay = Data.Result.Form3DS; // Ссылка на сервис оплаты "GPay" https://gpay.online.gpb.ru/oks-gaz-pay/...
 window.location.replace(gpay);
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 или в расширенных настройках магазина на вкладке "Подключение магазина".


Описание

Используется для оплаты СКО через Gazprom Pay.

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

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

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

Параметр Свойства Описание
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::SuccessUrl::FailUrl::AdditionalParams::IpAddress::SignSecretKey

Тело запроса

Параметр Свойства Описание
EshopId INT REQUIRED max 6 Номер магазина.
Можно найти в личном кабинете, в разделе магазины.
InvoiceId STRING REQUIRED 3xxxxxxxxx Номер СКО.
SuccessUrl STRING REQUIRED max 512 Адрес успешного платежа.
URL-адрес, на который происходит перенаправление плательщика с платежной страницы после успешной оплаты.
FailUrl STRING OPTIONAL max 512 Адрес неуспешного платежа.
URL-адрес, на который происходит перенаправление плательщика с платежной страницы после неуспешной оплаты.
AdditionalParams STRING OPTIONAL Дополнительные параметры.
Параметр не используется и зарезервирован под изменения.
IpAddress STRING REQUIRED 0.0.0.0/0 IPv4-адрес сайта, с которого выставляется платеж.
Hash STRING REQUIRED Подпись данных запроса.
Выполняет две ключевые функции:
  1. Целостность данных - защиту от изменений: подпись гарантирует, что информация в запросе не была модифицирована при передаче.
  2. Аутентификацию отправителя - подтверждение, что запрос создан доверенным сервисом (используется секретный ключ магазина, доступный только отправителю и получателю).
Подробнее об использовании контрольной подписи.

Сигнатура подписи:
EshopId::InvoiceId::SuccessUrl::FailUrl::AdditionalParams::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/gazpromPayPayment");

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("SuccessUrl", "https://test.ru/success"));
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/gazpromPayPayment',
    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&SuccessUrl=https://test.ru/success&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": 450000,
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        }
    }
}
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработана"
    },
    "Result": {
        "State": {
            "ErrorSourceParam": "successUrl",
            "Code": 166,
            "Desc": "Параметр successUrl передан неверно."
        }
    }
}