О HTTP API СНГБ

API организовано на архитектуре REST. СНГБ API предсказуемое, ресурс ориентированное, использующее стандартные HTTP методы. Мы используем стандартные решения HTTP, как HTTP authentication.

Вам следуем помнить, что API TOKEN ни в коем случаем нельзя выставлять на публичный доступ.

Чтобы сделать СНГБ API Электронной коммерции более удобной, у нас есть тестовая среда и тестовый API TOKEN. Тестовая среда и боевая будут доступны вам в любое время. Тестовая среда работает с тестовыми (не настоящими) картами.

Библиотеки

Доступна на php.

Пример php магазина на Github.

API Endpoint

https://ecm.sngb.ru/Gateway - промышленный сервер
https://ecm.sngb.ru/ECommerce - тестовый сервер
Список ссылок сервиса
  • /PaymentInitServlet
  • /PaymentTranServlet
  • /v1/payments
  • /v1/payments/{CHARGE_ID}

Инициализация платежа

https://ecm.sngb.ru/ECommerce/PaymentInitServlet

Метод POST

Аргументы:


Обязательные


Идентификатор мерчанта (Пример: 7000)

Идентификатор терминала. (Пример: 7000-alias)

Код транзакции.

  • 1 - PURCHASE (Полная операции оплаты)
  • 4 - AUTHORIZATION (Блокрирование суммы на карте)

Сумма операции.

Уникальный идентификатор заказа, созданный сайтом магазина.

Хэш для аутентификации запроса.

            
$salt = $merchant . $amt . $trackid . $action . $psk;
$udf5 = sha1($salt);
            
          

Пользовательские поля (Не обязательные)


Любые текстовые значения длиной до 255 символов, не содержащие символы :{ ~`!@#$%^=+|\\:'\",/& } '`}

udf1-4 должны быть в кодировке UTF-8

Пример: Номер заявки

Пример: Номер телефона

Пример: Вид услуги

Пример: Контактный номер: 8 800 .......

Пример запроса на php

            
$salt = $merchant . $amt . $trackid . $action . $psk;
$hash = sha1($salt);

$params = array(
  'merchant' => $merchant,
  'terminal' => $terminal,
  'action' => $action,
  'amt' => $price,
  'trackid' => $trackid,
  'udf1' => "8800...",
  'udf2' => "Доставка",
  'udf3' => "+7992...",
  'udf4' => 1201,
  'udf5' => $hash
);

$url = 'https://ecm.sngb.ru/ECommerce/PaymentInitServlet'; 
$postdata = "";
foreach ( $params as $key => $value )
  $postdata .= "&".rawurlencode($key)."=".rawurlencode($value);
    
// POST
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url );
curl_setopt ($ch, CURLOPT_POST, 1 );
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata );
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
            
          

Пример ответа

            
              https://ecm.sngb.ru/Gateway/hppaction?formAction=com.aciworldwide.commerce.gateway.payment.action.HostedPaymentPageAction&PaymentID=4841976051232680
            
          

Управление операцией

https://ecm.sngb.ru/ECommerce/PaymentTranServlet

Метод POST

Аргументы:


Обязательные


Идентификатор мерчанта (Пример: 7000)

Идентификатор терминала. (Пример: 7000-alias)

Код транзакции.

  • 2 - Credit; (Возврат средств)
  • 5 - Capture (Списание средств)
  • 9 - Void Authorization (Отмена блокировки средств)

Сумма операции.

Уникальный идентификатор платежа, созданный СНГБ.

Уникальный идентификатор заказа, созданный сайтом магазина.

Уникальный идентификатор транзакции, созданный СНГБ для каждой операции (блокировка, списание средств).

Хэш для аутентификации запроса.

Формирование хэша отличается от инициализации платежа

            
$salt = $merchant . $amt . $trackid . $psk;
$hash = sha1($salt);
            
          

Пример запроса на php

            
$salt = $merchant . $amt . $trackid . $psk;
$hash = sha1($salt);

$params = array(
  'merchant' => $merchant,
  'terminal' => $terminal,
  'action' => $action,
  'amt' => $amt,
  'paymentid' => $paymentid,
  'trackid' => $trackid,
  'tranid' => $tranid,
  'udf5' => $hash
);

$url = 'https://ecm.sngb.ru/ECommerce/PaymentTranServlet'; 
$postdata = "";
foreach ( $params as $key => $value )
  $postdata .= "&".rawurlencode($key)."=".rawurlencode($value);
    
// POST
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url );
curl_setopt ($ch, CURLOPT_POST, 1 );
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata );
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
            
          

Получаем информацию о платеже

curl https://ecm.sngb.ru/ECommerce/v1/payments/6920234094370
\ -u effa52e1d2fcb14ae588770c1f22608e2234df3cac0ab9932aafb5663:


Метод GET

Пример ответа

          
            {
              "object": "list",
              "data": [{
                "created": 1391511982932,
                "tranid": "1149123061740350",
                "livemode": false,
                "currency": "rub",
                "id": "4412478061740350",
                "object": "payment",
                "amount": 12.34000015258789,
                "authorization": true,
                "track": "468078",
                "refunded": false,
                "captured": true,
                "count": 0
              }],
              "url": "/ECommerce/v1/payments",
              "count": "1"
            }
          
          

Получаем информацию о платежах

curl https://ecm.sngb.ru/ECommerce/v1/payments
\ -u effa52e21d2fcb134ae5887710c1f226308e20cac0ab9932aafb5663:


Метод GET

Аргументы:


Не обязательное. (default = 10). Ограничивает число возвращаемых платежей. Может быть от 1 до 100 платежей.

Не обязательное. Фильтр основанный на дате создания платежа. Значение строковое UTC timestamp или словарь со следующими аргументами:

gt
gt: Возращает платежи после timestamp
gte
gte: Возвращает платежи после или равное timestamp
lt
lt: Возвращает платежи до timestamp
lte
lte: Возвращает платежи до или равное timestamp

Не обязательное. (default = 0) Значение смещения в списке возвращаемых платежей.

Пример сложного запроса c фильтром

curl https://ecm.sngb.ru/ECommerce/v1/payments
-u 47f60b65f9113820fd0695979040211673a1a542148bd3d60768b8b9:
-d lt=1491504453903
-d gte=1391504390088
-d count=10
-d offset=0

Пример ответа

          
            {
              "object": "list",
              "data": [{
                "created": 1391656955202,
                "tranid": "7926316220940370",
                "livemode": false,
                "currency": "rub",
                "id": "6923027220940370",
                "object": "payment",
                "amount": 100,
                "authorization": true,
                "track": "2",
                "refunded": true,
                "data": [
                  {
                    "created": 1391512573345,
                    "tranid": "6817871240940370",
                    "amount": 20,
                    "object": "refund",
                    "refund": true,
                    "currency": "rub"
                  },
                  {
                    "created": 1391512095720,
                    "tranid": "1470124260940370",
                    "amount": 80,
                    "object": "refund",
                    "refund": true,
                    "currency": "rub"
                  }
                ],
                "captured": true,
                "count": 2
              }],
              "url": "/ECommerce/v1/payments",
              "count": "1"
            }
          
          

Часто задаваемые вопросы

При инициализации платежа я не получаю ссылку на платежную страницу?

Скорее всего вы не правильно формируете udf5. Проверьте psk в личном кабинете. Если вы используете тестовый сервер, то используйте тестовый личный кабинет по адресу http://ecm.sngb.ru/ECommerce/Merchant Сгенерировать новый psk можно по кнопке "make psk".

Как на тестовой платежной странице провести оплату?

Используйте сслыки MASTER CARD и VISA в левом верхнем углу платежной страницы.

На notification url не приходит ответ после успешной оплаты и происходит редирект на error url, прописанный в личном кабинете.

Возможно вы не передали нам IP адрес вашего сервера, который общается с СНГБ API. Или этот адрес не статический.
Если приходит responsecode 03 обратитесь в СНГБ.

Не удается зайти в личный кабинет CommerceGateway.

Возможно учетная запись была заблокирована. Следует обратиться к сотрудникам банка. Так же личный кабинет несовместим с некоторыми версиями браузера Opera.

Приходит в ответе ACCESS DENIED

Пароль (PSK) передаваемый в запросе инициализации заказа не соответствует заданному при регистрации в личном кабинете