Как интегрировать Apple Wallet в мобильное приложение?
Пошаговая инструкция по работе с Apple Wallet
В нашем портфолио уже достаточно много кейсов по созданию приложений с программой лояльности – они успешно заменяют пластиковые карты и позволяют обеспечивать клиентов гораздо большим функционалом, чем просто скидка. Поэтому с интеграцией Apple Wallet мы столкнулись уже не раз.
Найти полноценную инструкцию о том, как ее делать нам не удалось – информация разбросана по разным источникам. Так родилась мысль описать процесс интеграции Apple Wallet от и до. С нашей статьей он займет не больше 30 минут. Без нее – может потребоваться от 2 до 4 часов.
Найти полноценную инструкцию о том, как ее делать нам не удалось – информация разбросана по разным источникам. Так родилась мысль описать процесс интеграции Apple Wallet от и до. С нашей статьей он займет не больше 30 минут. Без нее – может потребоваться от 2 до 4 часов.
Требования:
- Mac OS
- Доступ к аккаунту Apple Development
- Обновление данных в Apple Wallet - https://github.com/edamov/pushok
- Генерация карт Apple Wallet - https://github.com/thenextweb/passgenerator
Создание PassType ID
- Идем сюда - https://developer.apple.com/account/resources/identifiers/list
- Выбираем в списке PassTypeIDs → нажимаем далее
- Вводим описание вашего сертификата (обычно это название приложения) и идентификатор pass.com.example.app - (прим. pass.by.johndory.app)
Создание сертификата
- Идем сюда - https://developer.apple.com/account/resources/certificates/add
- В software выбираем iOS App Development и в Services выбираем Pass Type ID Certificate → нажимаем далее
- Вводим название сертификата и в выпадающем списке PassType Id выбираем наш только созданный Pass Type Id
- Далее от нас требуется загрузить загрузить ключ, который нам необходимо сгенерировать на Mac OS, теперь переходим к заголовку Создание ключей (Mac OS)
Создание ключей Mac OS
Запускаем это приложение (Keychain)
Связка ключей → Ассистент сертификации → Запросить сертификат
Обязательно ставим галочку рядом с “Указать информацию о паре ключей вручную”
Нажимаем Download и качаем файл pass.cer
В связке ключей импортируем скачанный файл
Ищем в поиске Keychain по ключевому слову приложения, в моем случае это johndory и находим выбирам наш сертификат с его закрытым ключом. Правой клавишей нажимаем и экспортируем его в формат P12(он по умолчанию), придумываем пароль и обязательно запоминаем/записываем, он пригодится для генерации сертификата пушей.
Генерация сертификата для пуш-обновлений Apple Wallet
Переносим файл CERTIFICATE.p12 в любое место и прописываем следующую команду, которая сгенерирует сертификат для пушей (Необходимо будет ввести пароль, который прописывали при генерации файла CERTIFICATE.p12)
openssl pkcs12 -in CERTIFICATE.p12 -out pushcert.pem -nodes
Теперь у нас есть 2 файла CERTIFICATE.p12 и pushcert.pem, их переносим в любое удобное место в проекте.
Как вариант можно организовать папку wallet и прокинуть эти файлы туда.
Далее переходим по ссылке http://developer.apple.com/certificationauthority/AppleWWDRCA.cer и качаем общий AppleWWDRCA сертификат, прокидываем к себе в ключи импортировав его, как мы это делали ранее. Далее находим по ключевому слову Apple и экспортируем в формате .pem, переносим его к остальным сертификатам.
Как вариант можно организовать папку wallet и прокинуть эти файлы туда.
Далее переходим по ссылке http://developer.apple.com/certificationauthority/AppleWWDRCA.cer и качаем общий AppleWWDRCA сертификат, прокидываем к себе в ключи импортировав его, как мы это делали ранее. Далее находим по ключевому слову Apple и экспортируем в формате .pem, переносим его к остальным сертификатам.
Экспорт общего сертификата Apple
Результат
В итоге у нас должно получится 3 файла, которые необходимы для корректной работы Apple Wallet.
Список файлов, который должен получиться
Вышеописанную процедуру необходимо выполнять как для дева, так и для прода.
Эта инструкция пригодится всем, кто хочет интегрировать карты в приложение. Она универсальна, от бэка не зависит. Но в данном конкретном случае мы приложили библиотеку для PHP, которую используем у себя.