Apple Pay by API

Для работы через API коммерсанту необходимо заерегестрироваться в системе apple и уметь расшифровывать данные, которые в последствии необходимо будет передавать в нашу систему

Интеграцию возможно проводить только в продуктовой среде

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

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

urlнеобходимо использовать продуктовые данные
emailнеобходимо использовать продуктовые данные
passwordнеобходимо использовать продуктовые данные
ClientIDнеобходимо использовать продуктовые данные
ClientSecretнеобходимо использовать продуктовые данные
TerminalIDнеобходимо использовать продуктовые данные

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

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

Запрос

grant_type: "client_credentials"
scope: "webapi usermanagement email_send verification statement statistics payment"
client_id: "ClientID"
client_secret: "ClientSecret"
invoiceID: "Номер заказа"
amount: 100
currency: "KZT"
terminal: "67e34d63-102f-4bd1-898e-370781d0074d"

Ответ

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

Входящие параметры

Название поляописаниеОбязательное/не обязательно
amountсумма платежаобязательное
currencyвалютаобязательное
nameимя держателя картыобязательное
сryptogramзакриптованные параметры платежной картыобязательное
invoiceIdНомер заказа в магазинеобязательное
invoiceIdAltдополнительный номер заказа в магазиненеобязательно
descriptionВ данном поле передается информация о товарах или услугах, за которые производится оплата
accountIdИдентификатор клиента в системе коммерсанта или другой доп. параметр на усмотрение коммерсантанеобязательно
emailemail клиентанеобязательное
phoneтелефон клиентанеобязательно
postLinkЛинк для отправки результата авторизации в магазин.необязательное
failurePostLinkЛинк для отправки неудачного результата авторизации либо информации об ошибке в магазин.необязательно
cardSaveпараметр сохранение карты, true - сохранить карту, false - не сохранять, boolean typeобязательное

Подготовка криптограммы

Структура криптограммы:

{
  hpan string
  expDate string
  cvc string
  terminalId string
}

пример:
{
 "hpan":"AppleToken","expDate":"expToken","cvc":"","terminalId":"67e34d63-102f-4bd1-898e-370781d0074d"
}


Структура должна быть зашифрованна при помощи публичного RSA-ключа, который доступен по адресу https://epay-api.homebank.kz/public.rsa

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

POST URL https://epay-api.homebank.kz/payment/cryptopay

Запрос

Заголовок запроса:

Content-Type: application/json
Authorization: Bearer DCEB8O_ZM5U7SO_T_U5EJQ

Тело запроса:

{
    "amount": 10.0,
    "currency": "KZT",
    "name": "Arman Ali",
    "cryptogramApplePay": "Расшифрованная криптограмма от Apple ",
    "cryptogram": "jkasDHJIHUIHDUIOHUI23HDUI2NUIBN2I23NDJIN2OIEN2IODN0I23J0M230IDJMI023MDKDMKLSFJSDF651454564SDFIOHF984N98HFIJ2HF"
    "invoiceId": "163637162556226",
    "invoiceIdAlt":"8564546",
    "description": "Оплата через applePay",
    "accountId": "",
    "email": "armanali@gmail.com",
    "phone": "+77771232380",
    "backLink": "http://example/backLink",
    "failureBackLink": "http://example/failureBackLink",
    "postLink": "http://example/postLink",
    "failurePostLink": "http://example/failurePostLink",
    "paymentType": "applePay"
}


Результат операции по оплате без 3DSecure

HTTP/1.1 200 OK

{
  "id":"7943816b-58a8-47f6-a11e-67b63c4228c7",
  "amount": 100,
  "currency":"KZT",
  "invoiceID":"938290483290",
  "invoiceIdAlt":"8564546",
  "accountID":"uuid000001",
  "phone":"77777777777",
  "email":"jj@example.com",
  "description":"test payment",
  "reference":"114537489258",
  "language":"rus"
}

Результат по неуспешной оплате

HTTP/1.1 400 OK

{
    "code": 487,
    "message": " Not permitted to merchant",
    "invoiceId": "8161284658525",
    "id": "",
    "reference": "",
    "accountId": "uuid000001"
}


Результат операции по оплате с 3DSecure

{ "id": "7943816b-58a8-47f6-a11e-67b63c4228c7", "accountId": "", "amount": 100, "amountBonus": 0, "currency": "KZT", "description": "Оплата заказа 938290483290", "email": "", "invoiceID": "938290483290", "invoiceIdAlt":"8564546", "language": "RU", "phone": "", "reference": "", "intReference": "", "secure3D": { "paReq": "eyJtZXNzYWdlVHlwZSI2lvbiI6IjIuMS4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIyMDFiZDlmYy1kM2IzLTQ4YjUtYWRiNy1jYjM1YT6IjA1In0", "md": "MjAxYmQ5ZmsadasdtY2IzNWE1NjFhM2Mw", "action": "https://epay-proxy.homebank.kz/" }, "cardID": "", "fee": 0 }

После получения результата по оплате с 3DSecure необходимо переадресовать клиента на форму ввода пароля.

Для этого используются полученные параметры: paReq, md, action.

В параметре TermUrl необходимо использовать адрес, на который система мерчанта получит результат проверки 3DSecure. пароля.

Пример построения формы для перенаправления клиента:

<body  onload="javascript:OnLoadEvent();">
<FORM ACTION="<%=action%>" METHOD="post" NAME="ThreeDform" target="_self">
       <input name="PaReq" type="hidden" value="<%=paReq%>">
       <input name="MD" type="hidden" value="<%=md%>">
       <input name="TermUrl" type="hidden" value="https://merchantsite.com/3dRes">
</FORM>
       <div align="center"> 
                <h1>Дождитесь ответа! <br><br>
                     Жауабын күтіңіз!<br><br>
                     Wait for an answer!<br><br>                                                        
                </h1>
       </div>               
</body>
<SCRIPT>function OnLoadEvent () {
         document.forms[0].submit();
}


Результат проверки 3DSecure, получаемый на TermUrl мерчанта:

PaRes: eJzNWVnT4jiy/SsdPY9Et3ewO6gvQt53bPD+5g3vNmCDjX/9FXxV1TXVPXHnzsONIYJATqcyU0rlOZLYO+Utz/lTnt5v+cfeyMcxLvJfquzLrxY45tc/Qp0HJ6UBIXZEC3EqspDgx/nXj/3r9fhWfKv8dpgvVMRu/efRq2VFBVDlkd/Gaug/sN/R3/E98u0RermlZdxPH/s4vbKK+UGSKLWl9sjXx32X3xT+w1QcXbcEhsYIFKewPfIp3iN/9rfur9YII1+q7MM9CLyv42mIMwEpTXPmM13cLamyob/skZfGPoun/ANHcQylcPoXDP0DJf+gtnvkLd9fXuZAN9yhbYyBbtE98qNsD2fplvfp84Ng6D3y/WmfL5ehz6EGHOb39h75M7xL3H+gP3wwCmOgbSjdO8HHfqq6n8Ki/sChrbd8P07xdB8/H+vOG631x//574XXT/OPfDv8D83MUpA== MD: MjAxYmQ5ZmsadasdtY2IzNWE1NjFhM2Mw 

Подтверждение платежа (отправка результата проверки 3DSecure пароля)

URL POST /payment/confirm

Body
{
    "ID": "7943816b-58a8-47f6-a11e-67b63c4228c7",
    "PaRes": "/ZUo742DgULQ4CotpdByEwF6eQvOAFEggSRUtE+rfsh+A9pV1Uq7VX/B/aPaKfTyYOucmfHx8YzhaLOYa7cYJ34UVvWcYeoahjzy/HBa1YeD+kFZP2IwmMWINQf5OkYGbUwSd4qa71X1nt3HVeXqPK1PHHpCg1l+dHs84rlyszPVGWRpBrsLmNQ3KJA9lUoxn7lhysDlq+NmhxUKZvGwCGRHYYFxs8acRrd32rctWrQKZl4KfIQhdBfIGt32qSowLm6AZBHg0TpM4zuWt8pA9gTW8ZzN0nRZIQSX7p0RBGMjuAei4kC+rPTWCiVSZ+N7DEm/1LpqrobjktO6HNdaw/GNV+f2ZNCuAlEV4LkpMmrmLOmtpJlWpUArNAcki4O7UAZk3pTP+sCwVFfY3xLfAyC7HMsh7P3vGeBmGYWojgD5xOBhwpn4LV7FP7F9exBbTfzRxLN4kfjx7Zd4kfuDJv6Lrfgr15NKiUfpTp0D8vXak4YaA09lZ+3Lnj09871waEX3tU5wPUKPu5PuxJlTNZ",
	"MD": "MjAxYmQ5ZmsadasdtY2IzNWE1NjFhM2Mw",
}

Response

Redirect Http code 200

Success https://epay.homebank.kz/payform/success.html Params amount currency invoiceID accountID description reference language cardid

Error https://epay.homebank.kz/payform/ invoiceID code message