MerchantAPI: відмінності між версіями
Немає опису редагування |
Немає опису редагування |
||
Рядок 375: | Рядок 375: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
== Робота з токенізованими картами == | |||
=== Токенізація карти === | |||
Метод призначений для токенізації (збереження) картки для ідентифікатора користувача під конкретним торговцем. | |||
=== Токенізація з передачею даних картки у запиті (заборонено без PCI:DSS сертифікації мерчанта) === | |||
Перед викликом цього методу. Потрібно викликати один із методів: | |||
'''- CreateApp (п. 2.1)''' | |||
'''- CreatePage (п. 2.2)''' | |||
<p style="margin: 10px 0; border: 1px solid #d0f0c0; background-color: rgba(192, 255, 192, 0.5); padding: 10px; border-radius: 24px; font-family: monospace;"> | |||
<span style="background: linear-gradient(to right, #004d00, #00ff00); color: white; padding: 2px 6px; border-radius: 24px; border: 1px solid transparent; font-weight: bold;">POST</span><span>/api/merchant/tokenCard </span><syntaxhighlight lang="json" line="1"> | |||
Request | |||
{ | |||
"headers": { | |||
"Content-Type": "application/json", | |||
"PartnerKey": "partnerName", | |||
"locale": "ua", | |||
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1", | |||
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d", | |||
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=" | |||
}, | |||
"body": { | |||
"phone": "380501002030ws", | |||
"pan": "4874120123567889", | |||
"expire": "1222", | |||
"cvv": "012", | |||
"vсode": "123654" | |||
} | |||
} | |||
</syntaxhighlight><h2 style="color: #0033A0;">Можливі варіанти інструментів оплати</h2> | |||
===== Оплата <span style=" display: inline-block; padding: 4px 16px; border: 2px solid #0033A0; /* Темно-синій колір рамки */ background-color: #0033A0; /* Темно-синій фон */ color: white; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ ">VISA</span> <span style=" display: inline-block; padding: 8px 20px; /* Збільшене відступи для однакового розміру */ border: 2px solid transparent; /* Прозора рамка для градієнту */ background: linear-gradient(to right, #FF5F00, #FFBF00); /* Градієнт від червоного до оранжевого */ color: white; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Однаковий розмір шрифта */ ">MasterCarD</span> ===== | |||
<syntaxhighlight lang="json" line="1"> | |||
"paymentInstrumentsTypes": [ | |||
{ | |||
"storedCards": [], | |||
"instrumentType": "Card", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 14000.00, | |||
"userPaymentInstruments": [ | |||
{ | |||
"instrumentId": 4211698, | |||
"instrumentType": "Card", | |||
"instrumentValue": null, | |||
"alias": null, | |||
"commission": 2.00, | |||
"loyaltyCommission": null, | |||
"actionsKeys": null, | |||
"priorityIndex": 200, | |||
"additionalParams": {} | |||
} | |||
] | |||
] | |||
}, | |||
{ | |||
"instrumentType": "RCard", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 14000.00, | |||
"userPaymentInstruments": [] | |||
}, | |||
</syntaxhighlight> | |||
===== Мобільні гроші <span style=" display: inline-block; padding: 8px 20px; /* Збільшене відступи для однакового розміру */ border: 2px solid #00A3E0; /* Темно-синій колір рамки */ background:FFFFE0; /* Темно-синій фон */ color: #00A3E0; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ font-size: 24px; border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Однаковий розмір шрифта */ ">Київстар</span><span style=" display: inline-block; padding: 8px 20px; /* Збільшене відступи для однакового розміру */ border: 2px solid #F7E300; /* Темно-синій колір рамки */ background:FFFFE0; /* Темно-синій фон */ color: #0033A0; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ font-size: 24px; border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Однаковий розмір шрифта */ ">Lifecell</span><span style=" display: inline-block; padding: 8px 20px; /* Збільшене відступи для однакового розміру */ border: 2px solid #E60012; /* Темно-синій колір рамки */ background:FFFFE0; /* Темно-синій фон */ color: #E60012; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ font-size: 24px; border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Однаковий розмір шрифта */ ">Vodafone</span> ===== | |||
<syntaxhighlight lang="json" line="1"> | |||
{ | |||
"instrumentType": "KSMoney", | |||
"commission": 0.0, | |||
"amountMin": 0.01, | |||
"amountMax": 14000.00, | |||
"userPaymentInstruments": [ | |||
{ | |||
"instrumentId": 4958975, | |||
"instrumentType": "KSMoney", | |||
"instrumentValue": null, | |||
"alias": null, | |||
"commission": 0.0, | |||
"loyaltyCommission": null, | |||
"actionsKeys": null, | |||
"priorityIndex": 1, | |||
"additionalParams": {} | |||
} | |||
] | |||
}, | |||
{ | |||
"instrumentType": "LifeMoney", | |||
"commission": 0.03, | |||
"amountMin": 0.01, | |||
"amountMax": 6000.00, | |||
"userPaymentInstruments": [ | |||
{ | |||
"instrumentId": 5098216, | |||
"instrumentType": "LifeMoney", | |||
"instrumentValue": null, | |||
"alias": null, | |||
"commission": 0.03, | |||
"loyaltyCommission": null, | |||
"actionsKeys": null, | |||
"priorityIndex": 0, | |||
"additionalParams": {} | |||
} | |||
] | |||
</syntaxhighlight> | |||
===== Картки лояльності <span style=" display: inline-block; padding: 8px 20px; border: 2px solid #FF0000; /* Червона рамка */ background-color: #FF0000; /* Червоний фон */ color: white; /* Білий текст*/ font-family: Arial, sans-serif; /* Шрифт Arial */ font-weight: bold; /* Жирний шрифт */ border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Розмір шрифта */ ">Fishka</span> ===== | |||
<syntaxhighlight lang="json" line="1"> | |||
] | |||
}, | |||
{ | |||
"instrumentType": "FishkaB2B", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 1000.00, | |||
"userPaymentInstruments": [] | |||
}, | |||
{ | |||
"instrumentType": "FishkaB2C", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 1000.00, | |||
"userPaymentInstruments": [] | |||
}, | |||
</syntaxhighlight> | |||
===== Оплата <span style=" display: inline-block; padding: 8px 20px; /* Збільшене відступи для однакового розміру */ border: 2px solid #000000; /* Темно-синій колір рамки */ background:FFFFFF ; /* Темно-синій фон */ color: #000000; /* Білий текст */ font-family: Arial, sans-serif; /* Шрифт */ font-weight: bold; /* Жирний шрифт */ border-radius: 24px; /* Закруглені краї */ text-transform: uppercase; /* Великі літери */ font-size: 16px; /* Однаковий розмір шрифта */ ">ApplePay</span> <span style=" display: inline-block; padding: 8px 20px; border-style: solid; border-width: 4px; border-color: #4285F4 #EA4335 #FABB05 #34A853; /* Чітке розмежування кольорів */ background-color: #FFFFFF; /* Білий фон всередині */ color: #000000; /* Колір тексту */ font-family: Arial, sans-serif; font-weight: bold; text-transform: uppercase; font-size: 16px; border-radius: 24px; /* Закруглені краї */ ">GPAY</span> ===== | |||
<syntaxhighlight lang="json" line="1"> | |||
{ | |||
"instrumentType": "ApplePay", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 9999.00, | |||
"userPaymentInstruments": [ | |||
{ | |||
"instrumentId": 10958126, | |||
"instrumentType": "ApplePay", | |||
"instrumentValue": null, | |||
"alias": null, | |||
"commission": 2.00, | |||
"loyaltyCommission": null, | |||
"actionsKeys": null, | |||
"priorityIndex": 0, | |||
"additionalParams": {} | |||
} | |||
] | |||
}, | |||
{ | |||
"instrumentType": "GooglePay", | |||
"commission": 2.00, | |||
"amountMin": 0.01, | |||
"amountMax": 9999.00, | |||
"userPaymentInstruments": [ | |||
{ | |||
"instrumentId": 10958137, | |||
"instrumentType": "GooglePay", | |||
"instrumentValue": null, | |||
"alias": null, | |||
"commission": 2.00, | |||
"loyaltyCommission": null, | |||
"actionsKeys": null, | |||
"priorityIndex": 0, | |||
"additionalParams": | |||
{ | |||
"PublicKey": "BKdzipvJvJzcbTMm3dO0LEh1AXFr8qfSiPjwrI7vv9F6hqhDJB1M=" | |||
} | |||
} | |||
] | |||
} | |||
] | |||
</syntaxhighlight> | </syntaxhighlight> |
Версія за 14:41, 6 вересня 2024
Загальні відомості
Протокол призначено для торговців, які є одержувачами платежів. Продавець підписує договір про прийняття платежів або анкету-акцепт до публічної оферти.
Щоб отримати платежі, ви можете використовувати web, мобільні версії сайтів, а також мобільні програми. У разі використання цього протоколу не здійснюється перевірка даних для ідентифікації замовлення або облікового запису. EasyPay завжди приймає дані, надіслані та створені продавцем.
Запит заголовків
Надсилання запиту та відповіді у форматі JSON.
Обов'язкові параметри для визначення запиту від торговця (мерчанта):
--header 'Content-Type: application/json'
--header 'AppId: cd7fde18-15db-4d94-a91b-7cf8edd81209'
--header 'PageId: 3e7bf353-417a-410c-a22e-df8bdcccb760'
--header 'PartnerKey: easypay-test'
--header 'locale: ua'
--header 'Sign: bS+vPOwu1Sif1Iz47Cdh+z1RAi0s6X21C3uU0YNBNWE='
URLS
Production - https://merchantapi.easypay.ua
(в т.ч. для надсилання тестових запитів)
Реєстрація партнера
Реєстрація нового торговця - отримання PartnerKey:
Параметр | Характеристика | Коментарій |
---|---|---|
PartnerKey |
унікальний ідентифікатор партнера (продавця) у системі EasyPay. | передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
ServiceKey |
ідентифікатор сервісу торговця у системі EasyPay. | магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
SecretKey |
секретний ключ для формування підпису | відомий лише торговцю та EasyPay
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
AppId |
ідентифікатор торгової точки партнера | параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів) |
PageId |
ідентифікатор сесії | параметр валідний протягом 20 хв. Для кожного запиту CreateOrder потрібно використовувати унікальний PageID |
PartnerKey = easypay-test
ServiceKey = MERCHANT-TEST
SecretKey = test
ℹ️ На даний момент відсутня можливість тестування з використанням фейкових оплат / тестових карток. Платежі тільки реальні, їх можна відмінити в день оплати методом cancelOrder (п. 2.6).
ℹ️ На даний момент відсутня можливість тестування з використанням фейкових оплат / тестових карток. Платежі тільки реальні, їх можна відмінити в день оплати методом cancelOrder (п. 2.6).
💡 На даний момент відсутня можливість тестування з використанням фейкових оплат / тестових карток. Платежі тільки реальні, їх можна відмінити в день оплати методом cancelOrder (п. 2.6).
GET /api/system/createApp
POST /api/system/createApp
❗️ На даний момент відсутня можливість тестування з використанням фейкових оплат / тестових карток. Платежі тільки реальні, їх можна відмінити в день оплати методом cancelOrder (п. 2.6).
Основні запити/відповіді
Реєстрація точки та створення сесії
POST /api/system/createApp
Цей метод слід викликати, коли користувач вперше звертається до платіжної сторінки. Якщо браузер або пристрій змінюються, метод знову з'являється
RequestHeaders
'PartnerKey: partnerName'
'locale: ua'
Body
headers
body
{
"logoPath": "https://cdn.easypay.ua/logo/",
"hintImagesPath": "https://cdn.easypay.ua/hint_images/",
"apiVersion": "1.0",
"appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
"pageId": "f3f2b678-a3c4-45ba-a865-a136fe4a62bd",
"error": null
}
Параметр | Характеристика | Коментарій |
---|---|---|
AppId |
ідентифікатор торгової точки партнера | за замовчуванням, якщо не було активності за запитами,
час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується. |
PageId |
ідентифікатор сесії | параметр валідний протягом 20 хв. Для кожного запиту CreateOrder потрібно використовувати унікальний PageID |
❗️ У разі отримання помилки APPID_NOT_FOUND у відповідь на будь-який метод, необхідно повторити запит createApp до отримання точки ІД.
Створення сесії
Створює новий екземпляр сеансу для користувача , PageId.
POST /api/system/createPage
RequestHeaders
'PartnerKey: partnerName'
'locale: ua'
'AppId: a5806a5f-dbb8-496a-a23f-aab6d2fcbce1'
body
headers
body
{
"logoPath": "https://cdn.easypay.ua/logo/",
"hintImagesPath": null,
"apiVersion": "1.0",
"appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
"pageId": "29bd7237-6b8d-4048-b028-6efc23d05988",
"requestedSessionId": "fa3595d3-52de-4744-9fc6-ec2d3507d5a5",
"error": null
}
Параметр | Характеристика | Коментарій |
---|---|---|
AppId |
ідентифікатор торгової точки партнера | за замовчуванням, якщо не було активності за запитами,
час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується. |
PageId |
ідентифікатор сесії | За замовчуванням, якщо не було активності за запитами, час життя PageId - 20 хвилин. З кожним запитом життя PageId автоматично продовжується. |
Створення замовлення
Перед викликом цього методу потрібно викликати один із методів:
POST /api/system/createPage
POST /api/system/CreateApp
❗️ Важливо! Для кожного нового запиту CreateOrder потрібно використовувати унікальний PageID.
POST /api/merchant/createOrder
headers
'Content-Type: application/json'
'PartnerKey: partnerName'
'locale: ua'
'AppId: a5806a5f-dbb8-496a-a23f-aab6d2fcbce1'
'PageId: 2ce7dba6-4600-456e-b9c8-f13cacf1c85d'
'Sign: e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4='
{
"userInfo": {
"phone": "string"
},
"order": {
"serviceKey": "string",
"orderId": "string",
"description": "string",
"amount":1.01, (decimal)
"paymentOperation":"PaymentTokenization",
"additionalItems": {},
"expire": "2019-04-15T07:49:20",
"isOneTimePay": true,
"fields": [
{
"fieldName": "string",
"fieldValue": "string",
"fieldKey": "string",
}
]
},
"urls": {
"success": "string",
"failed": "string",
"back": "string",
},
"bankingDetailsId": "string",
"bankingDetails": {
"payee": {
"id": "string",
"name": "string",
"bank": {
"name": "string",
"mfo": "string",
"account": "string"
}
},
"payer": {
"name": "string",
"id": "string"
},
"narrative": {
"name": "string"
}
},
"reccurent": {
"cronRule": "string",
"dateExpire": "2019-01-21T08:24:38.741Z",
"dateRun": "2019-01-20T08:24:38.741Z",
"properties":
{
"failedCount":0,
"failedRule":"string",
"amount":1.0,
"UrlNotify":"http://notify.url"
}
},
"splitting": {
"items": [
{
"serviceKey": "string",
"orderId": "string”
"bankingDetailsId": "string",
"bankingDetails": {
"payee": {
"id": "string",
"name": "string",
"bank": {
"name": "string",
"mfo": "string",
"account": "string"
}
},
"payer": {
"name": "string"
},
"narrative": {
"name": "string"
}
},
"unit": "Amount|Percent",
"value": 0,
"withCommission": false|true
}
]
},
"userPaymentInstrument": {
"instrumentType": "Card",
"cardGuid": "guid",
"pan": "string",
"expire": "MM/YY",
"cvv": "string",
},
"partnerInfo": {
"id": "string",
"name": "string",
"account": "string"
}
}
Робота з токенізованими картами
Токенізація карти
Метод призначений для токенізації (збереження) картки для ідентифікатора користувача під конкретним торговцем.
Токенізація з передачею даних картки у запиті (заборонено без PCI:DSS сертифікації мерчанта)
Перед викликом цього методу. Потрібно викликати один із методів:
- CreateApp (п. 2.1)
- CreatePage (п. 2.2)
POST/api/merchant/tokenCard
Request
{
"headers": {
"Content-Type": "application/json",
"PartnerKey": "partnerName",
"locale": "ua",
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d",
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4="
},
"body": {
"phone": "380501002030ws",
"pan": "4874120123567889",
"expire": "1222",
"cvv": "012",
"vсode": "123654"
}
}
Можливі варіанти інструментів оплати
Оплата VISA MasterCarD
"paymentInstrumentsTypes": [
{
"storedCards": [],
"instrumentType": "Card",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 14000.00,
"userPaymentInstruments": [
{
"instrumentId": 4211698,
"instrumentType": "Card",
"instrumentValue": null,
"alias": null,
"commission": 2.00,
"loyaltyCommission": null,
"actionsKeys": null,
"priorityIndex": 200,
"additionalParams": {}
}
]
]
},
{
"instrumentType": "RCard",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 14000.00,
"userPaymentInstruments": []
},
Мобільні гроші КиївстарLifecellVodafone
{
"instrumentType": "KSMoney",
"commission": 0.0,
"amountMin": 0.01,
"amountMax": 14000.00,
"userPaymentInstruments": [
{
"instrumentId": 4958975,
"instrumentType": "KSMoney",
"instrumentValue": null,
"alias": null,
"commission": 0.0,
"loyaltyCommission": null,
"actionsKeys": null,
"priorityIndex": 1,
"additionalParams": {}
}
]
},
{
"instrumentType": "LifeMoney",
"commission": 0.03,
"amountMin": 0.01,
"amountMax": 6000.00,
"userPaymentInstruments": [
{
"instrumentId": 5098216,
"instrumentType": "LifeMoney",
"instrumentValue": null,
"alias": null,
"commission": 0.03,
"loyaltyCommission": null,
"actionsKeys": null,
"priorityIndex": 0,
"additionalParams": {}
}
]
Картки лояльності Fishka
]
},
{
"instrumentType": "FishkaB2B",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 1000.00,
"userPaymentInstruments": []
},
{
"instrumentType": "FishkaB2C",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 1000.00,
"userPaymentInstruments": []
},
Оплата ApplePay GPAY
{
"instrumentType": "ApplePay",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 9999.00,
"userPaymentInstruments": [
{
"instrumentId": 10958126,
"instrumentType": "ApplePay",
"instrumentValue": null,
"alias": null,
"commission": 2.00,
"loyaltyCommission": null,
"actionsKeys": null,
"priorityIndex": 0,
"additionalParams": {}
}
]
},
{
"instrumentType": "GooglePay",
"commission": 2.00,
"amountMin": 0.01,
"amountMax": 9999.00,
"userPaymentInstruments": [
{
"instrumentId": 10958137,
"instrumentType": "GooglePay",
"instrumentValue": null,
"alias": null,
"commission": 2.00,
"loyaltyCommission": null,
"actionsKeys": null,
"priorityIndex": 0,
"additionalParams":
{
"PublicKey": "BKdzipvJvJzcbTMm3dO0LEh1AXFr8qfSiPjwrI7vv9F6hqhDJB1M="
}
}
]
}
]