Сохранение платежной карты

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

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

Данные для проведения тестовых платежей

ClientIDtest
ClientSecretyF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG
TerminalID67e34d63-102f-4bd1-898e-370781d0074d

Test payment card

PANExpire DateCVCStatus
440563970401509601/27321unlock
552204270506673601/27775unlock
37751450000482001/280198unlock
400303270454759709/20170lock
557834271075056009/20254lock

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

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: "halykfinanceUSD"
client_secret: "U01gQZVL##lJ$NhJ"
invoiceID: "Номер заказа"
amount: 0
currency: "USD"
terminal: "d9d7978c-d6ee-4ec0-8cda-165251a4bf16"


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

Ответ

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

Проведение платежа

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

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

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


var createPaymentObject = function(auth, invoiceId, amount) {
   var paymentObject = {
           invoiceId: "000000001", 
           backLink: "https://example.kz/success.html", 
           failureBackLink: "https://example.kz/failure.html", 
           postLink: "https://example.kz/", 
           language: "rus", 
           description: "Регистрация карты",
           accountId: "testuser1", 
           terminal: "67e34d63-102f-4bd1-898e-370781d0074d", 
           amount: 0, 
           currency: "USD", 
           cardSave: true, 
           paymentType: "cardVerification" 
       };
       paymentObject.auth = auth;
       return paymentObject;
   };

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

ПолеОписание
invoiceIDНомер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа, от 6 до 15 цифр. Если ваш номер заказа содержит более 6 цифр, то дополнительно уникальность должна соблюдаться по последним 6ти цифрам
backLinkСсылка для возврата в магазин при удачном платеже
failureBackLinkСсылка для возврата в магазин при неудачном платеже
postLinkУведомление о платеже
languageЯзык rus/kaz/eng
descriptionОписание заказа, допустимое количество символов 125 байтов
accountIdПоле для указания идентификатора клиента магазина, обязательное поле при сохранении карты (cardSave: true)
terminalИдентификатор магазина, можно получит в кабинете, выдается при регистрации
amountСумма для сохранения карты, всегда равна 0
currencyВалюта, всегда USD для сохранения карты
cardSaveОбязательный параметр для сохранения карты, передается как boolean
ipайпи, откуда был выполнен запрос
ipCountryназвание страны
ipCityназвание города
ipRegionназвание региона
ipDistrictназвание района
ipLatitudeширота
ipLongitudeдолгота

РostLink

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

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

{
"acountId":"9398101000014416472",
"amount":800,
"approvalCode":"178644",
"cardId":"4cd44b44-4445-14a6-e063-1b01040a44c4",
"cardMask":"440043...0128",
"cardType":"VISA",
"code":"ok",
"currency":"KZT",
"dateTime":"2025-02-12T09:42:51.960781107+05:00",
"description":"ONAY!",
"email":"",
"id":"a1bd0589-3ac9-4a2e-a31d-67a33f453a2b",
"invoiceId":"33456850",
"ip":"91.215.96.94",
"ipCity":"",
"ipCountry":"",
"ipDistrict":"",
"ipLatitude":0,
"ipLongitude":0,
"ipRegion":"",
"issuer":"JSC KASPI BANK",
"language":"RUS",
"name":"",
"phone":"77775903128",
"reason":"success",
"reasonCode":0,
"reference":"504355533594",
"secret_hash":"ZitLN1VLd21hUnFOSTJKbmg0UVdYVm8z",
"secure":"yes",
"secureDetails":"F",
"terminal":"67e34d63-102f-4bd1-898e-370781d0074d"
}


Коды ответов

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

{
"accountId":"9398101000006384023",
"amount":200,
"approvalCode":"",
"cardId":"",
"cardMask":"",
"cardType":"",
"code":"error",
"currency":"KZT",
"dateTime":"2025-02-12T09:42:53.036675+05:00",
"description":"ONAY!",
"email":"",
"id":"03c6de6e-0028-42fa-9199-561d78e59789",
"invoiceId":"33456910",
"ip":"95.82.119.153",
"ipCity":"Almaty",
"ipCountry":"Kazakhstan",
"ipDistrict":"",
"ipLatitude":43.2638,
"ipLongitude":76.9293,
"ipRegion":"",
"issuer":"JSC KASPI BANK",
"language":"RUS",
"name":"",
"phone":"77476080308",
"reason":"Authentication failed",
"reasonCode":473,
"reference":"",
"secret_hash":"T1hDaWhlay9NUysxRTA2djFFZnpTVDNU",
"secure":"no",
"secureDetails":"",
"terminal":"67e34d63-102f-4bd1-898e-370781d0074d"
}