ApplePayApp
Операція купівлі через Apple Pay
Щоб зробити покупку за допомогою Apple Pay із додатку, необхідно спочатку надіслати запит Валідація мерчанта та створення заказу, а потім надіслати запит Підтвердження платежу Apple Pay.
Валідація мерчанта та створення заказу (api/apple/validate)
Production url: https://****.procard-ltd.com/api/apple/validate
POST-параметри:
Параметр | Тип | Опис | Значення |
---|---|---|---|
operation | string | Тип операції | Purchase |
merchant_id | string | ID мерчанта | |
amount | float | Сума операції. Приклад: 500.00 | |
signature | string | З метою підтвердження валідності даних має бути згенерований і переданий у запиті HMAC_SHA512 контрольний підпис з використанням SecretKey мерчанта. | |
Рядок, що підлягає HMAC_SHA512, генерується шляхом конкатенації параметрів merchant_id, order_id, amount, currency_iso, description розділених ";" (крапка з комою) в кодуванні UTF-8. | |||
Порядок параметрів під час конкатенації важливий! | |||
order_id | string | Унікальний номер операції на стороні мерчанта. Якщо операція дублюється - мерчант отримує помилку. | |
currency_iso | string | Валюта платежу | UAH |
description | string | Призначення платежу. Виводиться на платіжній сторінці, при введенні платіжних реквізитів. Відображається в виписці за рахунком і реєстрах | |
add_params | array | Масив з додатковими параметрами. Додаткові параметри запиту потім повертаються мерчанту в callback виклику | |
Опис add_params знаходиться у Довіднику | |||
Обов'язкові поля з опису мають бути включені до запиту! | |||
callback_url | string | URL, на який прийде інформація про результат виконання платежу |
У відповідь надходять такі параметри:
Параметр | Тип | Опис |
---|---|---|
order_key | string | Ідентифікатор замовлення в платіжній системі |
code | integer | Код відповіді (0 - успіх) |
message | string | Розшифровка коду відповіді |
Підтвердження платежу Apple Pay (api/apple/payment)
Production url: https://****.procard-ltd.com/api/apple/payment
Система сама визначає, яким шляхом іде автентифікація з 3DS
або без залежно від даних отриманих від Apple.
POST-параметри:
Параметр | Тип | Опис |
---|---|---|
order_key | string | Ідентифікатор замовлення в платіжній системі |
apple_pay_payment_data | string | Дані платіжного токену ApplePay, закодовані в base64 |
apple_pay_payment_data_decrypted | string | Параметр передається замість apple_pay_payment_data , якщо використовується оплата з розшифрованим токеном. Дані платіжного токену ApplePay, закодовані в base64. |
У відповідь приходить:
Параметр | Тип | Опис | Значення |
---|---|---|---|
transactionStatus | string | Статус операції | Approved - Успішно Declined - Відмова |
reason | string | Текстова причина відмови | |
reasonCode | string | Код помилки при відмові | |
rrn | string | Унікальний ідентифікатор банківської транзакції |
Після виклику цього методу приходить callback в backend мерчанта
Приклад запиту на оплату з розшифрованим токеном:
{
"order_key": "9910ae2538be76b828f63a08f14ddf4a267d5148713cb2bb2742848fd622cfd266d86cab7f44b",
"apple_pay_payment_data_decrypted": "ewoiYXBwbGljYXRpb25QcmltYXJ5QWNjb3VudE51bWJlciI6ICI0MDEyMDAwMDAwMDAzMTE5IiwKImFwcGxpY2F0aW9uRXhwaXJhdGlvbkRhdGUiOiAiMjgxMTMwIiwKImN1cnJlbmN5Q29kZSI6ICI5ODAiLAoidHJhbnNhY3Rpb25BbW91bnQiOiAxMDAwMCwKImRldmljZU1hbnVmYWN0dXJlcklkZW50aWZpZXIiOiAiMDQwMDEwMDMwMjczIiwKInBheW1lbnREYXRhVHlwZSI6ICIzRFNlY3VyZSIsCiJwYXltZW50RGF0YSI6ewoib25saW5lUGF5bWVudENyeXB0b2dyYW0iOiIxMjMiLAoiZWNpSW5kaWNhdG9yIjoiNSIKfQp9Cg=="
}
Структура розшифрованого токена:
Параметр | Тип | Опис |
---|---|---|
applicationPrimaryAccountNumber | string | Токенізований номер картки |
applicationExpirationDate | string | Дата закінчення терміну дії картки (формат YYMMDD) |
currencyCode | string | Валюта платежу |
transactionAmount | float | Сума транзакції. Приклад 500.00 |
deviceManufacturerIdentifier | string | Унікальний ідентифікатор виробника пристрою |
paymentDataType | string | Тип платіжних даних |
paymentData | ||
onlinePaymentCryptogram | string | Криптограма для безпечних онлайн-транзакцій |
eciIndicator | string | Індикатор електронної торгівлі, показує рівень безпеки транзакції |
Приклад розшифрованого токена:
{
"applicationPrimaryAccountNumber": "4012000000003119",
"applicationExpirationDate": "281130",
"currencyCode": "980",
"transactionAmount": 10000,
"deviceManufacturerIdentifier": "040010030273",
"paymentDataType": "3DSecure",
"paymentData": {
"onlinePaymentCryptogram": "123",
"eciIndicator": "5"
}
}