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

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

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

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

| ClientID | test | | ClientSecret | yF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG | | TerminalID | 67e34d63-102f-4bd1-898e-370781d0074d |

Test payment card

PANExpire DateCVCStatus
440563970401509601/25815unlock
552204270506673601/25525unlock
37751450000482001/254169lock
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: "test"
client_secret: "yF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG"
invoiceID: "000000001"
amount: 0
currency: "USD"
terminal: "67e34d63-102f-4bd1-898e-370781d0074d"
postLink: ""
failurePostLink: ""

ПолеОписание
grant_typeТип авторизации, для проведения платежа используется тип client_credentials
scopeРесурс
client_idИдентификатор коммерсанта, можно получить в кабинете, выдается при регистрации
client_secretКлюч доступа коммерсанта, можно получить в кабинете, выдается при регистрации
invoiceIDНомер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа, от 6 до 15 цифр. Если ваш номер заказа содержит более 6 символов, то дополнительно уникальность должна соблюдаться по последним 6ти символам
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.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
paymentTypeТип операции - проверка карты

РostLink

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

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

{ 
    "accountId": "sad12eqsda", 
    "amount": 100, 
    "approvalCode": "157911", 
    "cardId": "11f1111b-f151-6f11-e161-1111010a2111", 
    "cardMask": "440043...2222", 
    "cardType": "VISA", 
    "code": "ok", 
    "currency": "KZT", 
    "dateTime": "2024-07-29T10:50:56.765674319+05:00", 
    "description": "Arman Alimguzhinov", 
    "email": "", 
    "id": "1d1a11f1-1111-111c-1113b-e8340ce51111", 
    "invoiceId": "191111111", 
    "ip": "213.148.6.204", 
    "ipCity": "", 
    "ipCountry": "", 
    "ipDistrict": "", 
    "ipLatitude": 0, 
    "ipLongitude": 0, 
    "ipRegion": "", 
    "issuer": "JSC KASPI BANK", 
    "language": "RUS", 
    "name": "STANDARD CARDHOLDER", 
    "phone": "", 
    "reason": "success", 
    "reasonCode": 0, 
    "reference": "411111111117", 
    "secure": "no", 
    "secureDetails":"F", 
    "terminal": "67e34d63-102f-4bd1-898e-370781d0074d" 
}


Коды ответов

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

{
 "id": "ffffffff-0000-000f-f000-00f0000f000f",
 "dateTime": "2020-01-01T00:00:00.00000+06:00",
 "invoiceId": "10000000001",
 "amount": 0,
 "currency": "USD",
 "terminal": "999999999",
 "accountId": "1",
 "description": "Регистрация карты",
 "language": "RU",
 "cardMask": "4444...4444",
 "cardType": "",
 "issuer": "Halyk bank",
 "reference": "",
 "secure": "no",
 "secureDetails":"F", 
 "tokenRecipient": "",
 "code": "error",
 "reason": "описание ошибки",
 "reasonCode": -498,
 "name": "CARD HOLDER",
 "email": "ch@example.kz",
 "phone": "77777777777",
 "ip": "5.188.155.135",
 "ipCountry": "Kazakhstan",
 "ipCity": "Almaty",
 "ipRegion": "",
 "ipDistrict": "",
 "ipLongitude": 76.9293,
 "ipLatitude": 43.2638
}