- Created by IntellectMoney, last modified on Apr 06, 2021
Требования
- В личном кабинете следует включить способ "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