Пошаговая инструкция по интеграции 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 (по состоянию на 16 августа 2018 года) Wikipedia 
Карта доступности Apple Pay (по состоянию на 16 августа 2018 года) Wikipedia 

Итак, начнём

Для интеграции Apple Pay в мобильное приложение Вы должны иметь зарегистрированный и оплаченный аккаунт разработчика (https://developer.apple.com)

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

Далее переходим к классу ViewController. В нем и будет осуществляться работа.

Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение

Для подключения Apple Pay необходимо воспользоваться библиотекой PassKit.

PassKit позволяет:

  • Добавить Apple Pay в приложение;
  • Управлять карточками в приложении Wallet.

Для настройки Apple Pay необходимо выполнить 3 обязательных шага:

  • Создать merchant ID;
  • Включить Apple Pay в Xcode;
  • Создать тестового пользователя.
Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение

Заходим на https://developer.apple.com, авторизуемся в своем аккаунте и переходим на Certificates, Identifiers & Profiles.

В группе Identifiers выбираем вкладку App IDs. Заполняем необходимые поля соответственно мобильному приложению и следуем дальнейшим инструкциям.

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

Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение

Следуя инструкциям, создаем Merchant ID для приложения.

Identifier рекомендуется называть в формате «merchant» + Bundle ID. Например: merchant.com.myapp

Мы практически завершили приготовления к нашему проекту.

Далее требуется перейти на https://appstoreconnect.apple.com в раздел Users and Access, выбрать Testers в секции Sandbox и, следуя инструкциям, создать профиль тест-пользователя.

Настройка Xcode

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

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

Сначала откройте Main.storyboard и добавьте кнопку.

Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение

Для начала работы необходимо перейти во ViewController.swift и импортировать библиотеку PassKit.

// MARK - Properties private var paymentRequest: PKPaymentRequest = { let request = PKPaymentRequest() request.merchantIdentifier = "merchant._.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) } }

Мы готовы к проверке 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 Pay?

Пошаговая инструкция по интеграции Apple Pay в ваше мобильное приложение

Пользователи могут совершать покупки онлайн, пользуясь Safari браузером, а также через мобильные приложения. Больше нет необходимости носить кредитные карты с собой, достаточно коснуться пальцем экрана iPhone ( если у Вас Touch ID) или просто усмехнуться в экран (в случае с Face ID) и Ваша покупка будет подтверждена.

Безопасно ли это? — спросите Вы. — Да! Однозначно, это безопасно. Во время осуществления оплаты девайс не передает данные платежной карты. Телефон генерирует специальный одноразовый токен и использует его для осуществления транзакции. Благодаря технологии Apple Pay можно практически полностью отказаться от использования пластиковых карт.

Надеюсь, информация была полезна. Не судите строго, всем добра!

66
8 комментариев

Спасибо за статью, оказывается все достаточно просто. 

2

Простите за тупой вопрос: это все? Оплата прошла или это только подтверждение и теперь нужен еще какой-то сервис типа Stripe? Куда идут деньги? Нужно где-то счет указать или они как и в случае со встроенными покупками приходят разработчику?
Спасибо

2

Здравствуйте! Вы нашли решение? Я пока нет

О да, статья порадовала =)

1

Спасибо большое! 😉

Лучше закомментить строку
request.supportedCountries = ["UA"]
если не хотите головных болей при публикации. Большая вероятность, что вместо страницы Apple Pay тестировщик получит диалоговое окно, а вы - отказ в публикации с сообщением: We noticed that the Apple Pay button in your app does not directly initiate the Apple Pay payment sheet.

1