P2P

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

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

Перед началом подключения к системе ePay, коммерсанту необходимо создать кнопку которая будет при нажатии выполнять функцию перехода, назовем uf.p2p

В свою очередь, данная кнопка будет выполнять генерацию invoiceId.

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

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:          "transfer"
client_id:      "test"
client_secret:  "yF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG"
terminal:       "40a348cb-68a3-45d5-9002-a4836d79c3b5"
secret_hash:    "JDKCNDDGGDTPSKJD"


ПолеОписание
grant_typeTип авторизации, для проведения платежа используется тип client_credentials
scopePесурс
client_idИдентификатор коммерсанта, можно получить в кабинете, выдается при регистрации
client_secretКлюч доступа коммерсанта, можно получить в кабинете, выдается при регистрации
terminalИдентификатор точки продаж, можно получит в кабинете, выдается при регистрации
secret_hashдополнительное секретное значение(строка), сгенерированное системой интернет-магазина, которое будет возвращено на Postlink

Ответ

{
  "access_token":"DCEB8O_ZM5U7SO_T_U5EJQ",
  "expires_in": 7200,
  "refresh_token":"",
  "scope":"transfer",
  "token_type":"Bearer"
}

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

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

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

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

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

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/",
					failurePostLink: "https://example.kz/order/1123/fail",
					language: "RU",
					description: "Оплата в интернет магазине",
					accountId: "testuser1",
					terminal: "40a348cb-68a3-45d5-9002-a4836d79c3b5",
					amount: 100,
					currency: "KZT",
                    phone: "77777777777",
                    email: "example@example.com"
                    cardSave: true //Параметр должен передаваться как Boolean
                };
            paymentObject.auth = auth;
            return paymentObject;
        };

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


ПолеОписание
invoiceIdНомер заказа, генерируется коммерсантом, должен быть уникальный для каждого нового заказа, только цифры от 6 до 15 символов
backLinkСсылка для возврата в магазин при удачном платеже
failureBackLinkСсылка для возврата в магазин при не удачном платеже
postLinkУведомление о платеже
failurePostLinkУведомление о неудачном платеже, если не заполнено, то информация будет отправлена на адрес указанный в postLink
languageЯзык
descriptionОписание заказа
accountIdНе обязательное поле для указание идентификатора клиента магазина
terminalИдентификатор магазина
amountСумма заказа
currencyВалюта
phoneHомер телефона клиента (не обязательно)
emailEmail клиента (не обязательно)
cardSaveCохренение карты
authТокен / передается полностью как объект, все данные полученные от epay по запросу токена

Postlink

На указанный URL указанный в поле postLink будет отправлено сообщение.

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

{ 
    "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": 100,
    "currency": "KZT",
    "terminal": "67e34d63-102f-4bd1-898e-370781d0074d",
    "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
}