Kaspi Bank

Обзор

Kaspi Bank — это популярный в Казахстане платежный метод, с помощью которого пользователи могут пополнять лицевой счет в вашей системе и оплачивать различные услуги. В платежном методе Kaspi Bank оплата совершается через мобильное приложение. В платежной платформе пополнение лицевого счета осуществляется через Gate.

Загрузить логотип этого платежного метода в векторном формате можно здесь.

Тип платежного метода Платежи через терминалы
Регионы использования Казахстан
Валюты платежей KZT
Суммы платежей Информацию уточняйте у курирующего менеджера JetPay. Также вы можете уточнить в Dashboard минимальную и максимальную сумму платежа, доступную в вашем проекте.
Конвертация валют
Оплата
Выплата
Повторяемая оплата
Полный возврат
Частичный возврат
Опротестование
Особенности
Организация и стоимость подключения По согласованию с курирующим менеджером JetPay

Основные операции

Интерфейсы
Payment Page Gate Dashboard
Оплата

Уточнить минимальную и максимальную сумму платежа, доступную в вашем проекте, вы можете в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Платежные методы.

Далее подробно рассказывается, что вам нужно делать для проведения платежа, а также о возможностях анализа уже проведенных платежей.

Пополнение лицевого счета

Общая информация

При пополнении лицевого счета с использованием платежного метода Kaspi Bank необходимо:

  1. Принять и обработать запрос от JetPay на проверку существования в вашей системе лицевого счета пользователя.
  2. Отправить ответ с информацией о существовании лицевого счета пользователя.
  3. Принять и обработать запрос на получение идентификатора платежа в вашей системе.
  4. Отправить ответ с идентификатором платежа.
  5. Принять оповещение о результате пополнения лицевого счета пользователя.

Полная схема оплаты с использованием метода Kaspi Bank выглядит следующим образом.



Рис.: Пополнение лицевого счета

  1. Пользователь выбирает ваш сервис в приложении провайдера и вводит данные, необходимые для пополнения лицевого счета.
  2. Сервис провайдера отправляет запрос на проверку существования лицевого счета в платежную платформу JetPay.
  3. Платежная платформа JetPay обрабатывает запрос.
  4. Платежная платформа отправляет вашей системе запрос на проверку существования лицевого счета пользователя.
  5. Ваша система обрабатывает запрос.
  6. Ваша система отправляет платежной платформе ответ на запрос.
  7. Платежная платформа передает в сервис провайдера результат проверки данных лицевого счета пользователя.
  8. Пользователь выполняет необходимые действия для пополнения лицевого счета.
  9. Сервис провайдера отправляет запрос на пополнение лицевого счета в платежную платформу JetPay.
  10. Платежная платформа JetPay обрабатывает запрос.
  11. Платежная платформа отправляет вашей системе запрос на получение идентификатора платежа в вашей системе.
  12. Ваша система обрабатывает запрос.
  13. Ваша система отправляет платежной платформе ответ с идентификатором платежа.
  14. Платежная платформа направляет вашей системе оповещение (callback) о результате пополнения лицевого счета.
  15. Платежная платформа направляет в сервис провайдера уведомление о результате пополнения лицевого счета пользователя.
  16. Пользователь получает информацию о результате пополнения лицевого счета.

Запросы

Запрос verify на проверку существования счета

При работе с запросами на проверку существования в вашей системе лицевого счета пользователя необходимо учитывать следующее:

  1. Запрос verify для проверки существования лицевого счета пользователя платежная платформа отправляет на URL-адрес вашей системы методом POST.
  2. Запрос содержит следующие обязательные параметры:
    • type — тип операции в вашей системе, значение параметра всегда verify;
    • customer_id — идентификатор учетной записи пользователя в вашей системе, на баланс которой зачисляются денежные средства;
    • project_id — идентификатор проекта, полученный от JetPay при интеграции;
    • signature — подпись запроса.

    Рис.: Пример данных из запроса на проверку существования лицевого счета пользователя

    {
        "type": "verify",
        "project_id": 1234,
        "customer_id": "7123456789",
        "signature": "e19695449545fac562843ca06e7e0f3e51281ad6"
    }
  3. Ответ на запрос verify должен отправляться синхронно и содержать следующие обязательные параметры:
    • code — код ответа на запрос;
    • additional_customer_id — идентификатор пользователя, уникальный в рамках проекта, который используется для идентификации пользователя в платежной платформе JetPay. Данный параметр обязателен для ответа с кодом 0;
    • currency — код валюты платежа в формате ISO-4217 alpha-3. Данный параметр обязателен для ответа с кодом 0;
    • entities.id — идентификатор договора. Данный параметр обязателен для ответа с кодом 0;
    • entities.number — номер договора. Данный параметр обязателен для ответа с кодом 0;
    • entities.payment — сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Обязательность этого параметра уточняйте у курирующего менеджера JetPay.
    Табл. 1. Допустимые коды ответов
    Код Описание
    0 Операция успешна
    400 Ошибка подписи
    404 Счет пользователя не существует
    500 Общая ошибка, причина должна быть описана в параметре message

    Ответ может содержать следующие необязательные параметры:

    • message — произвольное описание кода ответа;
    • entities.info — объект с произвольным набором полей, используется для отображения дополнительной информации пользователю. Структура согласовывается индивидуально, уточняйте у курирующего менеджера JetPay;
    • entities.min_payment — минимальная сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

    Вот пример ответа на запрос, если лицевой счет пользователя существует в вашей системе.

    Рис.: Пример ответа на запрос

    {
        "code": 0,
        "currency": "KZT",
        "entities": [
            {
                "id": "12345",
                "number": "1234_ABC/01-01-2025/Abcdef12",
                "min_payment": 100000,
                "payment": 100000,
                "info": {
                    "total_debt": 500000,
                    "monthly_payment": 100000,
                    "customer_name": "John Doe"
                }
            },
            {
                "id": "67890",
                "number": "5678_ABC/01-01-2025/Abcdef34",
                "min_payment": 100000,
                "payment": 150000,
                "info": {
                    "total_debt": 1000000,
                    "monthly_payment": 150000,
                    "customer_name": "John Doe"
                }
            }
        ],
        "additional_customer_id": "ABCDE12345"
    }

    Если запрос нельзя корректно обработать или не удалось обнаружить запрошенный лицевой счет, ответ на запрос должен содержать код ответа 404, а также может содержать дополнительную информацию об ошибке в параметре message.

    Рис.: Пример ответа с кодом ошибки

    { 
        "code": 404,
        "message": "Account does not exist"
    }
Запрос check_deposit на получение идентификатора платежа

При работе с запросами на получение идентификатора платежа в вашей системе необходимо учитывать следующее:

  1. Запрос check_deposit для получения идентификатора платежа платежная платформа отправляет методом POST на URL-адрес вашей системы.
  2. Запрос содержит следующие обязательные параметры:
    • type — тип операции в вашей системе, значение параметра всегда check_deposit;
    • project_id — идентификатор проекта, полученный от JetPay при интеграции;
    • customer_id — идентификатор учетной записи пользователя в вашей системе, на баланс которой зачисляются денежные средства;
    • entity_id — идентификатор договора, по которому выполняется оплата;
    • amount — сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;
    • currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_method — идентификатор платежного метода, значение параметра всегда terminal/kaspi;
    • signature — подпись запроса.

    Рис.: Пример данных из запроса на получение идентификатора платежа в вашей системе

    { 
       "type": "check_deposit",
       "project_id": 1234,
       "customer_id": "123456789",
       "entity_id": "12345",
       "amount": 10000,
       "currency": "KZT",
       "payment_method": "terminal/kaspi",
       "signature": "lY0LTSAzpR7zGce5qfYGacOuYlHANnkIR7mdOqRXJnL1kO0lUmkQ0YYLWRg=="
    }
  3. Ответ на запрос check_deposit должен отправляться синхронно и содержать следующие обязательные параметры:
    • code — код ответа на запрос;
    • payment_id — уникальный идентификатор платежа в вашей системе. Данный параметр обязателен для ответа с кодом 0.
    Табл. 2. Допустимые коды ответов
    Код Описание
    0 Операция успешна
    400 Ошибка подписи
    404 Cчет пользователя не существует
    500 Общая ошибка, причина должна быть описана в параметре message

    Ответ может также содержать следующие необязательные параметры:

    • message — произвольное описание кода ответа;
    • description — описание платежа.

    Ответ на запрос получения идентификатора платежа в вашей системе должен содержать код ответа на запрос и уникальный идентификатор платежа.

    Рис.: Пример ответа с идентификатором платежа

    {
        "code": 0,
        "payment_id": "payment_47",
        "description": "Success"
    }

    Ответ c информацией об ошибке должен содержать код ответа на запрос и сообщение об ошибке.

    Рис.: Пример ответа с информацией об ошибке

    {
        "code": 500,
        "message": "Something went wrong"
    }

Оповещение (callback)

В методе Kaspi Bank результат пополнения лицевого счета пользователя платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Gate.

Вот пример тела оповещения с информацией об успешно выполненной оплате:

Рис.: Пример тела оповещения об успешно выполненной оплате

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "success",
        "date": "2022-03-25T11:08:45+0000",
        "method": "kaspi",
        "sum": {
            "amount": 10000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "123456"
    },
    "operation": {
        "id": 28,
        "type": "sale",
        "status": "success",
        "date": "2022-03-25T11:08:45+0000",
        "created_date": "2022-03-25T11:08:05+0000",
        "request_id": "9e32835fb27907e0b08569d7d150e387a16a80e336c5117242b5cf60a4e17839",
        "sum_initial": {
            "amount": 10000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 10000,
            "currency": "KZT"
        },
        "code": "0",
        "message": "Success",
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        }
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

Вот пример тела оповещения с информацией об отклоненной оплате.

Рис.: Пример тела оповещения об отклоненной оплате

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "decline",
        "date": "2022-03-25T11:20:30+0000",
        "method": "kaspi",
        "sum": {
            "amount": 10000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "123456"
    },
    "operation": {
        "id": 31,
        "type": "sale",
        "status": "decline",
        "date": "2022-03-25T11:20:30+0000",
        "created_date": "2022-03-25T11:19:53+0000",
        "request_id": "fff3d5f8d5d31bc460b68b57dc63f4b482e906eb",
        "sum_initial": {
            "amount": 10000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 10000,
            "currency": "KZT"
        },
        "code": "20000",
        "message": "General decline",
        "provider": {
            "id": 15923,
            "payment_id": "0cf4215c-8978",
            "auth_code": ""
        }
    },
    "signature": "J7W15rkqrLzTCD4HkoM4qoEnlVlfqz8155QSlXJKR4m8C4z2iFYv58P4VnHANu445/jmY+g=="
}

Дополнительные материалы

Анализ результатов проведения платежей

Как и при работе с другими платежными методами, которые предоставляет JetPay, при использовании этого метода доступны разные способы анализа информации о платежах и операциях.

Всю необходимую информацию можно получать и анализировать средствами Dashboard (dashboard.jetpay.kz), в том числе с помощью аналитических панелей в разделе Аналитика.

Также можно выгружать необходимую информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:

  • Dashboard позволяет выгружать данные в формате CSV с помощью инструментов в разделе Отчеты. При этом можно выполнять разовые и периодические выгрузки информации на локальный компьютер.
  • Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы к конечной точке /operations/get.

С любыми вопросами о возможностях анализа можно обращаться в службу технической поддержки JetPay.