Платежная страница, оплата посредством HalykID

Перед началом работы вам следует обратиться по адресу halykid@halykbank.kz для получения тестовых данных,тестового приложения и внедрения процесса получения получения кросс-авторизационного ключа homebankCasKey, который будет использоваться для дальнейшей передачи в систему ePay.

При регистрации вам будут выданы данные, которые нужно будет использовать при проведении платежа:

TerminalIDИдентификатор магазина
ClientIDИдентификатор клиента
ClientSecretСекретный ключ

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

TEST URL POST https://testoauth.homebank.kz/epay2/oauth2/token
PROD URL POST https://epay-oauth.homebank.kz/oauth2/token

Запрос

Body: form-data

grant_type: 	"client_credentials"
scope: 			" webapi usermanagement email_send verification statement statistics payment"
client_id: 		"test"
client_secret: 	"yF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG"
invoiceID: 		"000000001"
secret_hash: "HelloWorld123#"
amount: 		100
currency: 		"KZT"
terminal: 		"67e34d63-102f-4bd1-898e-370781d0074d"
postLink:       ""
failurePostLink: ""

ПолеОписание
grant_typeтип авторизации, для проведения платежа используется тип client_credentials
scopeресурс
client_idИдентификатор коммерсанта, можно получить в кабинете, выдается при регистрации
client_secretКлюч доступа коммерсанта, можно получить в кабинете, выдается при регистрации
invoiceIDНомер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа,от 6 до 15 цифр. Если ваш номер заказа содержит более 6 цифр, то дополнительно уникальность должна соблюдаться по последним 6ти цифрам
secret_hashдополнительное секретное значение(строка), сгенерированное системой интернет-магазина, которое будет возвращено на Postlink, ОБЯЗАТЕЛЬНОЕ ЗНАЧЕНИЕ
amountСумма заказа
currencyВалюта
terminalИдентификатор точки продаж, можно получит в кабинете, выдается при регистрации
postLinkобязательный параметры, отправка postlink в случае успеха
failurePostLinkне обязательный параметры. отправка postlink в случае неудачи

Ответ

{
  "access_token":"DCEB8O_ZM5U7SO_T_U5EJQ",
  "expires_in": 7200,
  "refresh_token":"",
  "scope":" webapi usermanagement email_send verification statement statistics payment",
  "token_type":"Bearer"
}

ПолеОписание
access_tokenТокен для проведения операции
expires_inВремя истечения токена
refresh_tokenНе используется при данном типе авторизации
scopeРесурс, для проведения платежа используется ресурс
token_typeТип авторизации

Перенаправление на платежную страницу

На странице нужно подключить JS-библиотеку и вызвать в ней метод halyk.pay().

Прод версия

URL TEST: https://test-epay.homebank.kz/payform/payment-api.js
URL PROD: https://epay.homebank.kz/payform/payment-api.js

В метод halyk.pay() нужно передать следующие параметры.

var createPaymentObject = function(auth, invoiceId, amount) {
            var paymentObject = {
					invoiceId: "000000001",
             invoiceIdAlt:"8564546",
					backLink: "https://example.kz/success.html",
					failureBackLink: "https://example.kz/failure.html",
          autoBackLink: true,
					postLink: "https://example.kz/",
					failurePostLink: "https://example.kz/order/1123/fail",
					language: "rus",
					description: "Оплата в интернет магазине",
					accountId: "testuser1",
					terminal: "67e34d63-102f-4bd1-898e-370781d0074d",
          homebankCasKey: "66a5466d6e704ea2b9191b59b7f427dd"
					amount: 100,
              data: "{\"statement\":{\"name\":\"Arman Ali\",\"invoiceID\":\"80000016\"}}",
					currency: "KZT",
          phone: "77777777777",
          name:"Arman Ali",
          email: "example@example.com"
                };
          paymentObject.auth = auth;
          return paymentObject;
        };

halyk.pay(createPaymentObject(auth, invoiceId, amount));

ПолеОписание
invoiceIdНомер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа,от 6 до 15 цифр. Если ваш номер заказа содержит более 6 цифр, то дополнительно уникальность должна соблюдаться по последним 6ти цифрам
invoiceIdAltдополнительный номер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа,от 6 до 15 цифр
backLinkСсылка для возврата в магазин при удачном платеже
failureBackLinkСсылка для возврата в магазин при не удачном платеже
autoBackLinkФлаг автоматического перенаправления на URL из backLink
postLinkУведомление о платеже
failurePostLinkУведомление о неудачном платеже, если не заполнено, то информация будет отправлена на адрес указанный в postLink
languageЯзык rus/kaz/eng
descriptionОписание заказа, допустимое количество символов 125 байтов
accountIdполе для указания идентификатора клиента магазина, обязателен при сохранений карты (cardSave:true) для сервиса получения списка сохраненных карт
terminalИдентификатор магазина
homebankCasKeyкросс-авторизационный ключ полученый от системы Halyk Supper App
amountСумма заказа
currencyВалюта
phoneномер телефона клиента (не обязательно)
nameимя плательщика, только на латинице (не обязательно)
emailemail клиента (не обязательно)
authТокен / передается полностью как объект, все данные полученные от epay по запросу токена
dataдополнительное поле транслируется в отчете при заполнении (не обязательно)

Postlink

На указанный URL указанный в поле postLink будет отправлено сообщение. В случае если вы не получили postlink, или для проверки запроса от системы ePay, необходимо воспользоваться сервисом Статус транзакции

Ответ в случае успеха:

{
    "accountId": "testuser1",
    "amount": 100,
    "approvalCode": "919412",
    "cardId": "",
    "cardMask": "440043...0128",
    "cardType": "HalykId",
    "code": "ok",
    "currency": "KZT",
    "dateTime": "2025-02-12T09:42:51.960781107+05:00",
    "description": "Оплата в интернет магазине",
    "email": "",
    "id": "a2bd2222-2as2-2d2r-f22d-22a33f453a2b",
    "invoiceId": "000000001",
    "invoiceIdAlt": "8564546",
    "ip": "92.211.91.91",
    "ipCity": "",
    "ipCountry": "",
    "ipDistrict": "",
    "ipLatitude": 0,
    "ipLongitude": 0,
    "ipRegion": "",
    "issuer": "HALYK BANK",
    "language": "RUS",
    "name": "ARMAN ALI",
    "phone": "",
    "reason": "success",
    "reasonCode": 0,
    "reference": "505555555554",
    "secure": "no",
    "secureDetails": "",
    "terminal": "67e34d63-102f-4bd1-898e-370781d0074d"
}

ПолеОписание
accountIdИдентификатор аккаунта пользователя, уникальный для каждого пользователя.
amountСумма транзакции в валюте, указанной в поле
currency
.
approvalCodeКод одобрения транзакции, генерируемый платежной системой.
cardIdИдентификатор карты.
cardMaskМаска номера карты, отображающая только последние четыре цифры (например,
440043...0128
).
cardTypeТип транзакции, используемой для транзакции (например,
HalykId
).
codeКод результата транзакции (например,
ok
для успешной транзакции).
currencyВалюта транзакции (например,
KZT
для казахстанских тенге).
dateTimeДата и время выполнения транзакции в ISO 8601 формате.
descriptionОписание транзакции (например,
Оплата в интернет магазине
).
emailАдрес электронной почты пользователя, если доступен; может быть пустым.
idУникальный идентификатор транзакции.
invoiceIdНомер заказа, генерируемый коммерсантом, должен быть уникальным для каждого нового заказа.
invoiceIdAltДополнительный номер заказа, генерируемый коммерсантом.
ipIP-адрес пользователя, совершившего транзакцию.
ipCityГород пользователя, извлеченный из IP-адреса; может быть пустым.
ipCountryСтрана пользователя, извлеченная из IP-адреса; может быть пустым.
ipDistrictРайон пользователя, извлеченный из IP-адреса; может быть пустым.
ipLatitudeШирота местоположения пользователя, извлеченная из IP-адреса.
ipLongitudeДолгота местоположения пользователя, извлеченная из IP-адреса.
ipRegionРегион пользователя, извлеченный из IP-адреса; может быть пустым.
issuerЭмитент карты, использованной в транзакции (например,
HALYK BANK
).
languageЯзык, выбранный пользователем для транзакции (например,
RUS
для русского).
nameИмя пользователя, совершающего транзакцию (например,
ARMAN ALI
).
phoneНомер телефона пользователя, если доступен; может быть пустым.
reasonПричина транзакции (например,
success
для успешной транзакции).
reasonCodeКод причины результата транзакции (например,
0
для успешной транзакции).
referenceСсылка на транзакцию, используемая для дальнейшего отслеживания.
secureУказывает, является ли транзакция безопасной (например,
no
для небезопасной).
secureDetailsДополнительные детали безопасности транзакции, если доступны; может быть пустым.
terminalИдентификатор терминала, через который была выполнена транзакция.

Коды ответов

Ответ в случае неудачи:

request: {
    "accountId": "testuser1",
    "amount": 100,
    "approvalCode": "",
    "cardId": "",
    "cardMask": "",
    "cardType": "",
    "code": "error",
    "currency": "KZT",
    "dateTime": "2025-02-12T09:42:51.960781107+05:00",
    "description": "Оплата в интернет магазин",
    "email": "",
    "id": "a2bd2222-2as2-2d2r-f22d-22a33f453a2b",
    "invoiceId": "000000001",
    "invoiceIdAlt": "8564546",
    "ip": "155.55.55.55",
    "ipCity": "Shymkent",
    "ipCountry": "Kazakhstan",
    "ipDistrict": "",
    "ipLatitude": 42.5555,
    "ipLongitude": 69.55,
    "ipRegion": "",
    "issuer": "HALYK BANK",
    "language": "RUS",
    "name": "",
    "phone": "77771231212",
    "reason": "Not sufficient funds",
    "reasonCode": 484,
    "reference": "507151111111",
    "secure": "no",
    "secureDetails": "",
    "terminal": "67e34d63-102f-4bd1-898e-370781d0074d"
}


markdown

Copy

ПолеОписание
accountIdИдентификатор аккаунта пользователя, уникальный для каждого пользователя.
amountСумма транзакции в валюте, указанной в поле
currency
.
approvalCodeКод одобрения транзакции; может быть пустым, если транзакция не была одобрена.
cardIdИдентификатор карты, если доступен; может быть пустым.
cardMaskМаска номера карты; может быть пустой, если информация недоступна.
cardTypeТип карты, используемой для транзакции; может быть пустым.
codeКод результата транзакции (например,
error
для ошибки).
currencyВалюта транзакции (например,
KZT
для казахстанских тенге).
dateTimeДата и время выполнения транзакции в ISO 8601 формате.
descriptionОписание транзакции (например,
Оплата в интернет магазине
).
emailАдрес электронной почты пользователя, если доступен; может быть пустым.
idУникальный идентификатор транзакции.
invoiceIdНомер заказа, генерируемый коммерсантом, должен быть уникальным для каждого нового заказа.
invoiceIdAltДополнительный номер заказа, генерируемый коммерсантом.
ipIP-адрес пользователя, совершившего транзакцию.
ipCityГород пользователя, извлеченный из IP-адреса (например,
Shymkent
).
ipCountryСтрана пользователя, извлеченная из IP-адреса (например,
Kazakhstan
).
ipDistrictРайон пользователя, извлеченный из IP-адреса; может быть пустым.
ipLatitudeШирота местоположения пользователя, извлеченная из IP-адреса (например,
42.5555
).
ipLongitudeДолгота местоположения пользователя, извлеченная из IP-адреса (например,
69.55
).
ipRegionРегион пользователя, извлеченный из IP-адреса; может быть пустым.
issuerЭмитент карты, использованной в транзакции (например,
HALYK BANK
).
languageЯзык, выбранный пользователем для транзакции (например,
RUS
для русского).
nameИмя пользователя, совершающего транзакцию; может быть пустым.
phoneНомер телефона пользователя (например,
77771231212
).
reasonПричина отказа в транзакции (например,
Not sufficient funds
).
reasonCodeКод причины результата транзакции (например,
484
для недостатка средств).
referenceСсылка на транзакцию, используемая для дальнейшего отслеживания.
secureУказывает, является ли транзакция безопасной (например,
no
для небезопасной).
secureDetailsДополнительные детали безопасности транзакции, если доступны; может быть пустым.
terminalИдентификатор терминала, через который была выполнена транзакция.