Перейти к основному содержимому
Версия: 1.0.0

ApplePayApp

Операция покупки через Apple Pay

Для выполнения платежа с Apple Pay из приложения, необходимо сначала отправить запрос Валидация мерчанта и создание заказа, а затем отправить запрос Подтверждение платежа Apple Pay.

Валидация мерчанта и создание заказа (api/apple/validate)

Production url: https://****.procard-ltd.com/api/apple/validate

POST параметры:

ПараметрТипОписаниеЗначение
operationStringТип операцииPurchase
merchant_idStringID мерчанта, выдается процесcингом
amountFloatСумма операции. Пример 500.00
signatureStringВ целях подтверждения валидности данных должна быть сгенерирована и передана в запросе HMAC_SHA512 контрольная подпись с использованием SecretKey торговца.
Строка, подлежащая HMAC_SHA512, генерируется путем конкатенации параметров merchant_id, order_id, amount, currency_iso, description разделенных “;” (точка с запятой) в кодировке UTF-8.
Порядок параметров при конкатенации важен!
order_idStringУникальный номер операции на стороне торговца. Если операция дублируется - торговец получает ошибку.
currency_isoStringВалюта платежаUAH
descriptionStringНазначение платежа. Выводится на платежной странице, при вводе платежных реквизитов. Отображается в выписке по счету и реестрах
add_paramsArrayМассив с дополнительными параметрами. Дополнительные параметры потом возвращаются мерчанту в callback вызове
callback_urlStringURL на который придет информация о результате выполнения платежа

В ответ приходят следующие параметры:

ПараметрТипОписание
order_keyStringИдентификатор заказа в платежной системе
codeIntegerКод ответа (0 - успех)
messageStringРасшифровка кода ответа

Подтверждение платежа Apple Pay (api/apple/payment)

Production url: https://****.procard-ltd.com/api/apple/payment

Система сама определяет по какому пути идет аутентификация с 3DS или без, в зависимости от данных полученных от Apple.

POST параметры:

НазваниеТипОписание
order_keyStringИдентификатор заказа в платежной системе
apple_pay_payment_dataStringДанные токена Apple Pay, закодированные в base64
apple_pay_payment_data_decryptedStringПараметр передается вместо apple_pay_payment_data, если используется оплата с расшифрованным токеном. Данные токена Apple Pay, закодированные в base64

В ответ приходит:

ПараметрТипОписаниеЗначения
transactionStatusStringСтатус операцииApproved - Успешно
Declined - Отказ
reasonStringТекстовая причина отказа
reasonCodeStringКод ошибки при отказе
rrnStringУникальный идентификатор банковской транзакции

После вызова этого метода приходит callback в backend торговца.

Пример запроса на оплату с расшифрованным токеном:

{
"order_key": "9910ae2538be76b828f63a08f14ddf4a267d5148713cb2bb2742848fd622cfd266d86cab7f44b",
"apple_pay_payment_data_decrypted": "ewoiYXBwbGljYXRpb25QcmltYXJ5QWNjb3VudE51bWJlciI6ICI0MDEyMDAwMDAwMDAzMTE5IiwKImFwcGxpY2F0aW9uRXhwaXJhdGlvbkRhdGUiOiAiMjgxMTMwIiwKImN1cnJlbmN5Q29kZSI6ICI5ODAiLAoidHJhbnNhY3Rpb25BbW91bnQiOiAxMDAwMCwKImRldmljZU1hbnVmYWN0dXJlcklkZW50aWZpZXIiOiAiMDQwMDEwMDMwMjczIiwKInBheW1lbnREYXRhVHlwZSI6ICIzRFNlY3VyZSIsCiJwYXltZW50RGF0YSI6ewoib25saW5lUGF5bWVudENyeXB0b2dyYW0iOiIxMjMiLAoiZWNpSW5kaWNhdG9yIjoiNSIKfQp9Cg=="
}

Структура расшифрованного токена:

ПараметрТипОписание
applicationPrimaryAccountNumberStringТокенизированный номер карты
applicationExpirationDateStringДата окончания срока действия карты (формат YYMMDD)
currencyCodeStringВалюта платежа
transactionAmountFloatСумма транзакции. Пример 500.00
deviceManufacturerIdentifierStringУникальный идентификатор производителя устройства
paymentDataTypeStringТип платежных данных
paymentData
onlinePaymentCryptogramStringКриптограмма для безопасных онлайн-транзакций
eciIndicatorStringИндикатор электронной торговли, показывает уровень безопасности транзакции

Пример расшифрованного токена:

{
"applicationPrimaryAccountNumber": "4012000000003119",
"applicationExpirationDate": "281130",
"currencyCode": "980",
"transactionAmount": 10000,
"deviceManufacturerIdentifier": "040010030273",
"paymentDataType": "3DSecure",
"paymentData": {
"onlinePaymentCryptogram": "123",
"eciIndicator": "5"
}
}