Kaspi Bank
Обзор
|
Kaspi Bank — это популярный в Казахстане платежный метод, с помощью которого пользователи могут пополнять лицевой счет в вашей системе и оплачивать различные услуги. В платежном методе Kaspi Bank оплата совершается через мобильное приложение. В платежной платформе пополнение лицевого счета осуществляется через Gate. Загрузить логотип этого платежного метода в векторном формате можно здесь. |
| Тип платежного метода | Платежи через терминалы |
|---|---|
| Регионы использования | Казахстан |
| Валюты платежей | KZT |
| Суммы платежей | Информацию уточняйте у курирующего менеджера JetPay. Также вы можете уточнить в Dashboard минимальную и максимальную сумму платежа, доступную в вашем проекте. |
| Конвертация валют | |
| Оплата | |
| Выплата | |
| Повторяемая оплата | |
| Полный возврат | |
| Частичный возврат | |
| Опротестование | |
| Особенности | |
| Организация и стоимость подключения | По согласованию с курирующим менеджером JetPay |
Основные операции
| Интерфейсы | |||
|---|---|---|---|
| Payment Page | Gate | Dashboard | |
| Оплата | |||
Уточнить минимальную и максимальную сумму платежа, доступную в вашем проекте, вы можете в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Платежные методы.
Далее подробно рассказывается, что вам нужно делать для проведения платежа, а также о возможностях анализа уже проведенных платежей.
Пополнение лицевого счета
Общая информация
При пополнении лицевого счета с использованием платежного метода Kaspi Bank необходимо:
- Принять и обработать запрос от JetPay на проверку существования в вашей системе лицевого счета пользователя.
- Отправить ответ с информацией о существовании лицевого счета пользователя.
- Принять и обработать запрос на получение идентификатора платежа в вашей системе.
- Отправить ответ с идентификатором платежа.
- Принять оповещение о результате пополнения лицевого счета пользователя.
Полная схема оплаты с использованием метода Kaspi Bank выглядит следующим образом.
Рис.: Пополнение лицевого счета
- Пользователь выбирает ваш сервис в приложении провайдера и вводит данные, необходимые для пополнения лицевого счета.
- Сервис провайдера отправляет запрос на проверку существования лицевого счета в платежную платформу JetPay.
- Платежная платформа JetPay обрабатывает запрос.
- Платежная платформа отправляет вашей системе запрос на проверку существования лицевого счета пользователя.
- Ваша система обрабатывает запрос.
- Ваша система отправляет платежной платформе ответ на запрос.
- Платежная платформа передает в сервис провайдера результат проверки данных лицевого счета пользователя.
- Пользователь выполняет необходимые действия для пополнения лицевого счета.
- Сервис провайдера отправляет запрос на пополнение лицевого счета в платежную платформу JetPay.
- Платежная платформа JetPay обрабатывает запрос.
- Платежная платформа отправляет вашей системе запрос на получение идентификатора платежа в вашей системе.
- Ваша система обрабатывает запрос.
- Ваша система отправляет платежной платформе ответ с идентификатором платежа.
- Платежная платформа направляет вашей системе оповещение (callback) о результате пополнения лицевого счета.
- Платежная платформа направляет в сервис провайдера уведомление о результате пополнения лицевого счета пользователя.
- Пользователь получает информацию о результате пополнения лицевого счета.
Запросы
verify на проверку существования счетаПри работе с запросами на проверку существования в вашей системе лицевого счета пользователя необходимо учитывать следующее:
- Запрос
verifyдля проверки существования лицевого счета пользователя платежная платформа отправляет на URL-адрес вашей системы методом POST. - Запрос содержит следующие обязательные параметры:
- type — тип операции в вашей системе, значение параметра всегда
verify; - customer_id — идентификатор учетной записи пользователя в вашей системе, на баланс которой зачисляются денежные средства;
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- signature — подпись запроса.
Рис.: Пример данных из запроса на проверку существования лицевого счета пользователя
{ "type": "verify", "project_id": 1234, "customer_id": "7123456789", "signature": "e19695449545fac562843ca06e7e0f3e51281ad6" } - type — тип операции в вашей системе, значение параметра всегда
- Ответ на запрос
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 на получение идентификатора платежаПри работе с запросами на получение идентификатора платежа в вашей системе необходимо учитывать следующее:
- Запрос
check_depositдля получения идентификатора платежа платежная платформа отправляет методом POST на URL-адрес вашей системы. - Запрос содержит следующие обязательные параметры:
- 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==" } - type — тип операции в вашей системе, значение параметра всегда
- Ответ на запрос
check_depositдолжен отправляться синхронно и содержать следующие обязательные параметры:- code — код ответа на запрос;
- payment_id — уникальный идентификатор платежа в вашей системе. Данный параметр обязателен для ответа с кодом
0.
Табл. 2. Допустимые коды ответов Код Описание 0Операция успешна 400Ошибка подписи 404Cчет пользователя не существует 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.