Apple Pay для мобильных приложений

9 сентября 2014 года в ходе очередной презентации, компания Apple представила собственную систему мобильных платежей — Apple Pay.
С помощью платежной системы Apple Pay пользователи iPhone 6 и iPhone 6+, а также владельцы новейших версий Apple Watch могут совершать покупки онлайн, пользоваться дополнительными преимуществами apple pay для мобильных приложений и совершать платежи при помощи технологии NFC (Near Field Communication). Для авторизации платежей используются технологии Touch ID или Face ID.
Ниже мы рассмотрим как интегрировать и подключить Эпл Пей в мобильное приложение, которое требует подключения данной платежной системе в ходе разработки.
Карта доступности Apple Pay (по состоянию на 17 мая 2018 года). Синий: запущено Голубой: запуск запланирован
Итак начнём
Мы будем использовать актуальную на момент написания статьи (5 ноября 2018года) версию Swift 4.2 и Xcode 10.1.
Для интеграции Apple Pay в мобильное приложение Вы должны иметь зарегистрированный и оплаченный аккаунт разработчика (https://developer.apple.com)

Создаем проект на основе Single View Application.

Следующим шагом необходимо придумать название проекта. В качестве примера будем использовать ApplePayExample.

Далее переходим к классу ViewController. В нем и будет осуществляться работа.
Настройка Apple Pay в мобильном приложении
Для подключения Apple Pay необходимо воспользоваться библиотекой PassKit.
PassKit позволяет:
- Добавить Apple Pay в приложение;
- Управлять карточками в приложении Wallet.
Для настройки Apple Pay необходимо выполнить 3 обязательных шага:
- Создать merchant ID;
- Включить Apple Pay в Xcode;
- Создать тестового пользователя.

Заходим на https://developer.apple.com, авторизуемся в своем аккаунте и переходим на Certificates, Identifiers & Profiles.
В группе Identifiers выбираем вкладку App IDs. Заполняем необходимые поля соответственно мобильному приложению и следуем дальнейшим инструкциям.


После этого в группе Identifiers необходимо выбрать пункт Merchant IDs.

Следуя инструкциям, создаем Merchant ID для приложения.
Identifier рекомендуется называть в формате «merchant» + Bundle ID. Например: merchant.com.myapp
Мы практически завершили приготовления к нашему проекту.
Далее требуется перейти на https://appstoreconnect.apple.com в раздел Users and Access, выбрать Testers в секции Sandbox и, следуя инструкциям, создать профиль тест-пользователя.

Профиль пользователя необходим для тестирования платежей.
Шаг №1

Шаг №2

Шаг №3
Настройка Xcode
Шаг №1
Сначала нам необходимо активировать Apple Pay в Capabilities Xcode и добавить, ранее созданный Merchant ID.
Шаг №2

Все, Apple Pay активирован. Переходим к наиболее интересной части проекта — написанию кода.

Сначала откройте Main.storyboard и добавьте кнопку.
Перейдите в ViewController.swift.
Для начала работы необходимо импортировать библиотеку PassKit: import PassKit
// MARK - Properties private var paymentRequest: PKPaymentRequest = { let request = PKPaymentRequest() request.merchantIdentifier = "merchant.stfalcon.com.applepayexample" request.supportedNetworks = [.visa, .masterCard] request.supportedCountries = ["UA"] request.merchantCapabilities = .capability3DS request.countryCode = "UA" request.currencyCode = "UAH" request.paymentSummaryItems = [PKPaymentSummaryItem(label: "iPhone Xs 64 Gb", amount: 34999.99)] return request }()
Далее необходимо создать экземпляр класса PKPaymentRequest.
// MARK: - @IBActions @IBAction func purchase(_ sender: Any?) { if let controller = PKPaymentAuthorizationViewController(paymentRequest: paymentRequest) { controller.delegate = self present(controller, animated: true, completion: nil) } }
и создать IBAction для кнопки.
Открывая PKPaymentAuthorizationViewController, необходимо подписаться на его delegate, таким образом, будет виден статус транзакции.
Кроме того, необходимо имплементировать методы делегата. Имитировать успешную транзакцию мы будем следующим образом:
extension ViewController: PKPaymentAuthorizationViewControllerDelegate { func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) { completion(PKPaymentAuthorizationResult(status: .success, errors: nil)) } func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) { controller.dismiss(animated: true, completion: nil) } }
completion(PKPaymentAuthorizationResult(status: .success, errors: nil))
Мы готовы к проверке Apple Pay.
Перед проверкой Apple Pay необходимо пройти авторизацию с помощью ранее созданного Sandbox пользователя и добавить в iPhone карту для тестирования.
Пример карт для тестирования:
MasterCard
- FPAN: 5204 2477 5000 1471
- Expiration Date: 11/2022
- CVC: 111
Visa
- FPAN: 4761 1200 1000 0492
- Expiration Date: 11/2022
- CVV 533
Запустите проект и нажмите кнопку «Pay».

Транзакция прошла успешно. Поздравляем, теперь Вы знаете, как интегрировать Apple Pay в мобильное приложение.
Что говорит статистика?
Компания Apple не разглашает статистику по Apple Pay, однако по данным экспертов, количество пользователей данного платежного сервиса составляет порядка 31% общего количества владельцев iPhone (более 252 млн. человек).
Кроме того, глава компании Тим Кук недавно заявил, что почти миллиард транзакций было осуществлено с применением Apple Pay в третьем квартале 2018 года.
Также растет количество банков, поддерживающих Эпл Пей. В июне 2018 года Apple сообщила о том, что свыше 4900 банков по всему миру поддерживают оплату посредством данного платежного сервиса.
Зачем Вам Apple Pay?
Из раздела выше в принципе становится ясно, зачем Apple Pay нужен, но давайте разберемся, подробнее. Итак, как он работает.
Пользователи могут совершать покупки онлайн, пользуясь Safari браузером, а также через мобильные приложения. Больше нет необходимости носить кредитные карты с собой, достаточно коснуться пальцем экрана iPhone ( если у Вас Touch ID) или просто усмехнуться в экран (в случае с Face ID) и Ваша покупка будет подтверждена.
Безопасно ли это? — спросите Вы. — Да! Однозначно, это безопасно. Во время осуществления оплаты девайс не передает данные платежной карты. Телефон генерирует специальный одноразовый токен и использует его для осуществления транзакции.
Не имеет значения, кто Вы:
- Пользователь
- Бизнесмен
- Разработчик
Вы просто обязаны интегрировать технологию в свой бизнес, проект или повседневную жизнь. Благодаря технологии Apple Pay можно практически полностью отказаться от использования пластиковых карт.