Skip to content

Apple Pay

Настоящий документ представляет собой руководство по использованию платёжного метода Apple Pay. Руководство определяет порядок действий для:

  • размещения кнопки Apple Pay на странице оплаты веб-сайта;
  • осуществления информационного взаимодействия c целью совершения платежа.

Принцип работы способа оплаты Apple Pay указан на сайте developer.apple.com.

Инструкция предназначена для компаний, осуществляющих приём платежей с помощью собственной платёжной формы и взаимодействия с платформой “Процессинговый сервис” по API.

Если приём платежей осуществляется с помощью платёжного виджета “Процессинговый сервис”, описанные ниже действия выполнять не требуется — способ оплаты Apple Pay уже доступен для покупателей.

Размещение кнопки и обработчика событий Apple Pay

Необходимо выполнить действия, описанные в данной документации: проверить доступность оплаты с помощью данного метода, настроить свой сервер для взаимодействия с Apple, встроить кнопку оплаты с помощью JavaScript, создать платёжную сессию.

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

См. данную инструкцию.

Идентификатор мерчанта и сертификат

Для того чтобы получить merchantIdentifier, можно обратиться в службу поддержки “Процессинговый сервис”. При обращении следует сообщить домен веб-сайта, на котором будет размещена кнопка, с целью его успешной верификации в Apple Pay. Альтернативным вариантом получения merchantIdentifier является самостоятельная регистрация merchant ID в Apple Pay. Созданный в ходе регистрации Payment Processing Certificate необходимо передать в службу поддержки “Процессинговый сервис”.

Информация

Обратите внимание, что ApplePaySession запустится только на домене с валидным SSL-сертификатом.

Отображение кнопки Apple Pay

Необходимо разместить CSS согласно гайдлайнам Apple, отобразить кнопку оплаты и указать для неё обработчик, который запустит платёжную сессию.

Создание платёжной сессии

См. данную инструкцию.

Информация

Сумма платежа должна совпадать с суммой созданного раннее инвойса.

Валидация мерчанта

См. данную инструкцию.

Информация

В качестве validationURL необходимо использовать endpoint “Процессинговый сервис”: https://wrapper.ducat.pro/applepay/api/v1/session.

Полный набор действий при работе с сессией оплаты отражен в данной статье.

Пример итогового JS-кода

var domainName = 'developer.ducat.pro';
var merchantIdentifier = 'merchant.money.ps.checkout';
var paymentAmount = 10;
var merchantValidationEndpoint = 'https://wrapper.ducat.pro/applepay/api/v1/session';
var displayName = 'ProcessingSystem Apple Pay Test';

if (window.ApplePaySession) {
    var promise = ApplePaySession.canMakePaymentsWithActiveCard(merchantIdentifier);
    promise.then(function(canMakePayments) {
        if (canMakePayments)
            processApplePayRoutine();
        else
            document.getElementById("apple-pay-button").style.display = 'none';
    });
} else {
    document.getElementById("apple-pay-button").style.display = 'none';
}

function processApplePayRoutine() {
    document.getElementById("apple-pay-button").onclick = function(event) {
        var paymentRequest = {
            currencyCode: 'RUB',
            countryCode: 'RU',
            total: {
                label: displayName,
                amount: paymentAmount
            },
            merchantCapabilities: ['supports3DS'],
            supportedNetworks: ['masterCard', 'visa']
        };

        var session = new ApplePaySession(3, paymentRequest);

        session.onvalidatemerchant = function(event) {
            var promise = validateMerchant(event.validationURL);
            promise.then(function(merchantSession) {
                session.completeMerchantValidation(merchantSession);
            });
        }

        function validateMerchant(validationURL) {
            return new Promise(function(resolve, reject) {
                var applePayPayload = {
                    'merchantId': merchantIdentifier,
                    'validationURL': validationURL,
                    'body': {
                        'merchantIdentifier': merchantIdentifier,
                        'domainName': domainName,
                        'displayName': displayName
                    }
                };

                var xhr = new XMLHttpRequest();
                xhr.onload = function() {
                    var data = JSON.parse(this.responseText);
                    resolve(data);
                };
                xhr.onerror = reject;
                xhr.open('POST', merchantValidationEndpoint, true);
                xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
                xhr.send(JSON.stringify(applePayPayload));
            });
        }

        session.onpaymentauthorized = function(event) {
            console.log(JSON.stringify(event.payment.token));
            session.completePayment(ApplePaySession.STATUS_SUCCESS);
        }

        session.begin();
    }
};

Оплата с помощью Apple Pay

Для совершения оплаты с помощью метода Apple Pay необходимо придерживаться стандартного процесса проведения платежа. При этом:

Параметр Значение
provider ApplePay
paymentToolType TokenizedCardData
gatewayMerchantID Идентификатор мерчанта (продавца), выданный группой сопровождения “Процессинговый сервис” или Apple Pay
paymentToken Полученные структура и значения ApplePayPaymentToken

Информация

При проведении платежа помимо настоящей банковской карты может быть использована тестовая карта MasterCard со следующими данными: PAN 5204 2477 5000 1471, Expiration Date 11/2022, CVC 111. Инструкция по созданию тестового аккаунта Apple и привязке тестовой карты находится по данному адресу https://developer.apple.com/apple-pay/sandbox-testing.