P2P REDIRECT TO FORM

During registration, you will be given the data that you will need to use when making the payment:

TerminalIDStore ID
ClientIDClient ID
ClientSecretSecret key

Before starting to connect to the ePay system, the merchant needs to create a button that will perform the transition function when pressed, let's call uf.p2p

In turn, this button will generate InvoiceID.

Getting a token to make a payment (for each operation, you must receive and use the original token)

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


### Request
**Body**: form-data

```js
grant_type:    "client_credentials"
scope:         "transfer"
client_id:     "test"
client_secret: "yF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG"
terminal:      "67e34d63-102f-4bd1-898e-370781d0074d"
secret_hash:   "JDKCNDDGGDTPSKJD"


FieldDescription
grant_typeAuthorization type, the client_credentials
scopeResource
client_idMerchant ID, can be obtained in the cabinet, issued during registration
client_secretThe merchant's access key, which can be obtained in the cabinet, is issued upon registration
terminalThe ID of the point of sale, which can be obtained in the cabinet, is issued during registration
secret_hashadditional secret value(string) generated by the online store system which will be returned to Postlink

Response

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

FieldDescription
access_tokenToken for the operation
expires_inToken expiration time
refresh_tokenNot used for this type of authorization
scopeResource, a resource is used for making a payment
token_typeAuthorization type

Redirection to the payment page

On the page you need to connect the JS library and call the halyk.oct method in it

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

The following parameters must be passed to the halyk.p2p() method:

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: "Payment in the online store",
					accountId: "testuser1",
					terminal: "40a348cb-68a3-45d5-9002-a4836d79c3b5",
					amount: 100,
					currency: "KZT",
                    phone: "77777777777",
                    email: "example@example.com"
                    cardSave: true //The parameter must be passed as Boolean
};
paymentObject.auth = auth;
return paymentObject;
};

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


FieldDescription
invoiceIdThe order number generated by the merchant must be unique for each new order, only numbers from 6 to 15 characters
backLinkLink to return to the store with a successful payment
failureBackLinkLink to return to the store in case of a failed payment
postLinkPayment Notification
failurePostLinkNotification of a failed payment, if not filled in, the information will be sent to the address specified in the postLink
languageLanguage
descriptionOrder Description
accountIdOptional field for specifying the store's customer ID
terminalStore ID
amountOrder amount
currencyCurrency
phonecustomer's phone number (optional)
emailcustomer's email (optional)
cardSavesaving the map
authToken / is transmitted completely as an object, all data received from epay at the request of the token

Postlink

A message will be sent to the specified URL specified in the postLink field.

Response if successful:

``json { "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" }


[Error Codes](https://developer.homebank.kz/epay/kody-oshibok )

### Response in case of failure:
```json
{
"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": "Payment in an online store",
"language": "RU",
"cardMask": "4444...4444",
"CardType": "",
"issuer": "Halyk bank",
"reference": "",
"secure": "no",
"secureDetails":"F", 
"tokenRecipient": "",
"code": "error",
"reason": "error description",
"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
}