Skip to end of metadata
Go to start of metadata

Требования

  • В личном кабинете следует включить способ "Apple Pay" у магазина, на сайте которого планируется разместить кнопку Apple Pay
  • Ваш сайт должен работать только по схеме HTTPS и поддерживать протокол TLS версии не ниже 1.2

Регистрация Merchant ID в Apple

Используйте зарегистрированный Merchant ID или создайте новый на сайте https://developer.apple.com в разделе "Certificates, IDs & Profiles" (добавить новый в меню "Identifiers")

В редакторе Merchant ID добавьте и подтвердите владение доменом для вашего сайта. В личном кабинете ИнтеллектМани укажите данный сайт в настройках магазина.

Направьте запрос на сертификаты на почту ots@intellectmoney.ru с указанием зарегистрированного Apple Merchant ID и номера магазина из личного кабинета ИнтеллектМани, на сайте которого планируется размещение кнопки Apple Pay.
Служба поддержки отправит вам запросы на сертификаты. Сфомируйте для вашего Merchant ID на сайте https://developer.apple.com сертификаты "Apple Pay Merchant Identity Certificate" и "Apple Pay Payment Processing Certificate" и отправьте в службу поддержки.

Реализация

Вы самостоятельно реализуете клиентскую и серверную части на своем сайте. На серверной части следует вызывать методы Apple Pay API "StartSession" и "Pay"

Клиентская часть

Пример кода. Ajax запросы должны отправляться к скриптам, расположенным на вашем сервере.

$(function () {
    $('.apple-pay-button-with-text').click(function () {
        startApplePaySession();
    });
    if (window.ApplePaySession && ApplePaySession.canMakePayments()) {
        $(".apple-pay-button-with-text").show();
    } else {
        $(".apple-pay-button-with-text").hide();
    }
});

function startApplePaySession() {
    try {
        var request = {
            countryCode: 'RU',
            currencyCode: applePayCurrency,
            supportedNetworks: ['visa', 'masterCard', 'amex', 'discover'],
            merchantCapabilities: ['supports3DS'],
            total: {label: applePayLabel, amount: applePayAmount},
        }

        var session = new ApplePaySession(3, request);

        session.onvalidatemerchant = function (event) {

            $.ajax({
                cache: false,
                dataType: "json",
                type: "post",
                url: applePayApiProcessUrl + "/applepay/startSession",
                data: "invoiceId=" + applePayInvoiceId + "validationURL=" + encodeURIComponent(event.validationURL),
                error: function (returnData) {
                },
                success: function (returnData) {
                    session.completeMerchantValidation(JSON.parse(returnData.Result.MerchantSession));
                }
            });
        };

        session.onpaymentauthorized = function (event) {
            var sessionStatus;

            $.ajax({
                cache: false,
                dataType: "json",
                type: "post",
                url: applePayApiProcessUrl + "/applepay/pay",
                data: "invoiceId=" + applePayInvoiceId + "&paymentTokenDataJson=" + encodeURIComponent(JSON.stringify(event.payment.token.paymentData)),
                complete: function () {
                    var authorizationResult = {
                        status: sessionStatus,
                        errors: []
                    };
                    session.completePayment(authorizationResult);
                    if (typeof parent.onIntellectMoneyApplePayCallBack === 'function') {
                        parent.onIntellectMoneyApplePayCallBack(sessionStatus);
                    }
                },
                error: function (e) {
                    sessionStatus = ApplePaySession.STATUS_FAILURE;
                },
                success: function (e) {
                    sessionStatus = ApplePaySession.STATUS_SUCCESS;
                }
            });
        };

        session.begin();
    } catch (error) {
        alert(error)
    }
}

Серверная часть

Запуск сессии Apple Pay

Скрипт startSession на вашем сервере должен отправлять POST-запрос на следующий адрес URL:

https://api.intellectmoney.ru/merchant/latest/applepay/startSession

В запросе необходимо передать следующие параметры: 

Название

Имя параметра

Обязательный

Описание

Номер СКО

invoiceId

Да

Счёт К Оплате - уникальный номер в системе IntellectMoney, с помощью которого идентифицируется любой платеж. Для получения воспользуйтесь операцией “ Запрос выставления счета 

Адрес валидации сессии

validationUrl

Да

Адрес валидации сессии Apple Pay, полученный из Apple Pay JS API

Пример запроса
Post /merchant/latest/applepay/startSession
HTTP/1.1 Host: api.intellectmoney.ru
Content-Type: application/x-www-form-urlencoded; charset=utf-8

invoiceId = 3496318551
validationUrl = https://cn-apple-pay-gateway-sh-pod3.apple.com/paymentservices/startSession
Пример ответа
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<OperationState> 
		<Code>0</Code> 
		<Desc>Успешно обработана</Desc> 
	</OperationState> 
	<OperationId>b294b231-9a77-427a-9866-f111e4c88515</OperationId> 
	<EshopId>0</EshopId> 
	<Result> 
		<State> 
			<Code>0</Code> 
			<Desc>Успешно обработан.</Desc> 
		</State>
		<MerchantSession> 
			<Данные сессии Apple Pay>
		</MerchantSession>
	</Result>
</Response> 

Проведение оплаты Apple Pay

Скрипт pay на вашем сервере должен отправлять POST-запрос на следующий адрес URL:

https://api.intellectmoney.ru/merchant/latest/applepay/pay

В запросе необходимо передать следующие параметры: 

Название

Имя параметра

Обязательный

Описание

Номер СКО

invoiceId

Да

Счёт К Оплате - уникальный номер в системе IntellectMoney, с помощью которого идентифицируется любой платеж. Для получения воспользуйтесь операцией “ Запрос выставления счета 

Адрес успешной авторизации

returnUrl

Да

Адрес, на который перенаправляет плательщика после успешной авторизации
IP адрес сайта магазинаipAddressДаIP адрес сайта, с которого выставляется платеж
Криптограмма платежных данныхpaymentTokenDataJsonДаКриптограмма платежных данных, полученная из Apple Pay JS API
Пример запроса
Post /merchant/latest/applepay/pay
HTTP/1.1 Host: api.intellectmoney.ru
Content-Type: application/x-www-form-urlencoded; charset=utf-8

invoiceId = 3496318551
returnUrl = https://site.com/returnUrl
ipAddress = 10.10.10.10
paymentTokenDataJson = {"applicationPrimaryAccountNumber":"424242XXXXXX4242", ... }
Пример ответа
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<OperationState> 
		<Code>0</Code> 
		<Desc>Успешно обработана</Desc> 
	</OperationState> 
	<OperationId>b294b231-9a77-427a-9866-f111e4c88515</OperationId> 
	<EshopId>0</EshopId> 
	<Result> 
		<State> 
			<Code>0</Code> 
			<Desc>Успешно обработан.</Desc> 
		</State>
		<OperationId>Идентификатор платежа</OperationId>
	</Result>
</Response> 

  • No labels