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.В amountслід відкинути незначущі нулі:100.00 → 100,100.50 → 100.5,100.01 → 100.01. | |||
| Порядок параметрів під час конкатенації важливий! | |||
| 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"
  }
}