Платежи H2H

URL POST
https://api-merchant.alikassa.com/v1/payment
HEADER
Content-Type application/json
Account Ваш uuid счета (вы можете найти в разделе "Счета")
https://merchant.alikassa.com/cabinet/resources/project-accounts
Sign Подпись запроса
Application Выданный Application UUID

1. Создать платеж, получить uuid

Создайте платеж, используя API

function requestPayment(string $method, string $account, array $data)
{
    $data = json_encode($data);

    $privateKey = openssl_pkey_get_private(
        file_get_contents(__DIR__ . '/cert/payment/private.pem'),
        file_get_contents(__DIR__ . '/cert/payment/password.txt')
    );

    if ($privateKey===false) {

        throw new \Exception('Error cert.');
    }

    openssl_sign($data, $sign, $privateKey);
    $sign = base64_encode($sign);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api-merchant.alikassa.com/' . $method);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Account: ' . $account,
        'Sign: ' . $sign,
    ]);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_USERAGENT, 'AliKassa2.0 API');
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $response = curl_exec($ch);

    return json_decode($response, true);
}

requestPayment('v1/payment', '93d5df06-996c-48c3-9847-348d6b580b80', [
    'order_id' => (string)time(),
    'amount' => 500,
    'customer_browser_user_agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0',
    'customer_ip' => '18.191.80.10',
    'success_redirect_id' => 1,
    'fail_redirect_id' => 1,
    'notification_endpoint_id' => 5,
    'service' => 'payment_card_uah_hpp',

    'customer_browser_accept_header' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'customer_browser_color_depth' => '32',
    'customer_browser_language' => 'ru',
    'customer_browser_screen_height' => 1080,
    'customer_browser_screen_width' => 1920,
    'customer_browser_window_width' => 900,
    'customer_browser_window_height' => 640,
    'customer_browser_time_different' => -180,
    'customer_browser_java_enabled' => 1,
    'customer_browser_user_agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0',
]);

2. Отправить данные на https://api-h2h.alikassa.com/v1/payment

* - Обязательные поля
Название Тип Описание Пример
card_first_name* string Имя держателя карты Ivan
card_last_name* string Фамилия держателя карты Ivanov
card_number* int Номер карты 4242 4242 4242 4242
card_year* int (2) Срок окончания (последние 2 цифры года) 29
card_month* int (2) Срок окончания (месяц) 08
card_cvc* int (3) CVC карты 077
payment_uuid* int AliKassa Uuid
return_url* string URL для возврата
(в ссылке укажите uuid платежа)
browser_user_agent* string User agent пользователя Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
browser_accept_header* string Заголовок браузера Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
browser_language* string Язык браузера ru
browser_color_depth* int (Глубина цвета) – количество бит, которые вмещаются в один пиксель screen.colorDepth
browser_screen_height* int Высота экрана браузера screen.height
browser_screen_width* int Ширина экрана браузера screen.width
browser_window_width* int Ширина окна браузера window.innerWidth
browser_window_height* int Высота окна браузера window.innerHeight
browser_time_different* int Разница во времени в браузере (new Date()).getTimezoneOffset()
browser_java_enabled* int Включен ли java в браузере 1
browser_ip* ip IP плательщика REMOTE_ADDR

Ответ

Название Описание
success true — успешно выполнено
false — ошибка выполнения
redirect Object редиректа плательщика для оплаты

url — ссылка
method — get | post
params — параметры для get или post

Тестовые карты

4242 4242 4242 4242 — успешный платеж
5555 5555 5555 4444 — ошибка платежа

Срок действия — любой непросроченный,
код CVV произвольный.

Пример успешного ответа HTTP CODE 200:

{
   "success": true,
   "redirect": {
      "url":"https://payment.com/3ds",
      "method":"get",
      "params":[

      ]
   }

Пример не успешного ответа HTTP CODE 400:

{
   "success": false,
   "error": "...",
   "errorCode": "..."
}

3. Переадресовать клиента на 3ds по redirect

После получения url переадресуйте плательщика.

Пример:

function requestH2H(string $method, string $account, array $data)
{
    $privateKey = openssl_pkey_get_private(
        file_get_contents(__DIR__ . '/cert/payment/private.pem'),
        file_get_contents(__DIR__ . '/cert/payment/password.txt')
    );

    if ($privateKey===false) {

        throw new \Exception('Error cert.');
    }

    openssl_sign((string)$data['payment_uuid'], $sign, $privateKey);
    $sign = base64_encode($sign);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api-h2h.alikassa.com/' . $method);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Account: ' . $account,
        'Sign: ' . $sign,
        'Application: {APPLICATION_UUID}',
    ]);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_USERAGENT, 'AliKassa2.0 API');
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    return json_decode(curl_exec($ch), true);
}

$payment = requestH2H('v1/payment', '93d5df06-996c-48c3-9847-348d6b580b80', [
    'payment_uuid' => 'a0c0809e-9121-0c08-8fba-ef0227083121',
    'return_url' => 'http://site.ru/confirm',
    'card_number' => '506900010009002',
    'card_year' => '20',
    'card_month' => '07',
    'card_cvc' => '704',
]);

Подписывать нужно только payment_uuid.

4. После оплаты плательщик вернется на указанную вашу страницу return_url

После оплаты плательщик вернется на указанную вашу страницу return_url.

5. Отправить запрос confirm (подтверждение платежа)

После оплаты плательщик вернется на страницу return_url, прежде чем проверить статус платежа, отправьте нам подтверждение

Отправьте все данные POST которые вы получили и также uuid платежа.

* - Обязательные поля
Название Тип Описание
payment_uuid* string AliKassa Uuid
data array Данные POST

Ответ

Название Описание
success true — успешно выполнено
false — ошибка выполнения

Пример:

requestH2H('v1/payment/confirm', '93d5df06-996c-48c3-9847-348d6b580b80', [
    'payment_uuid' => $_GET['uuid'],
    'data' => $_POST,
]);