Apple wallet: Добавление и использование карт в приложении Wallet на iPhone

Содержание

Apple Wallet. Что это такое и как интегрировать в него свою карту / Хабр

Принято считать, что Wallet – не самый популярный сервис в СНГ. Но уже во втором проекте подряд заказчик ставит задачу «Сделать интеграцию с Wallet». Поэтому я решил написать эту статью, чтобы рассказать о сервисе в целом и показать, как интегрировать в него свой продукт.

Что такое Wallet? Он позволяет держать в телефоне различного вида карты (билеты, скидочные карты и т.п.), облегчая жизнь пользователям продукта. Более того, есть возможность актуализировать информацию о карте посредством push-уведомлений, но это тема для отдельной статьи. Но если у вас есть карта/билет/абонемент, которые можно интегрировать в телефон, то для этого есть решение! Как это сделать – читайте ниже.

Как правило, за создание карты отвечает ваш сервер. Приложение получает карту в виде .pkpass файла и уже через приложение пользователь может добавить карту в Wallet.

Структура карты

Что же представляет собой карта с точки зрения разработчика? Карта – это архив с расширением . pkpass. Он содержит в себе все данные, необходиимые для отображения и работы карты. Содержимое архива – в таблице ниже.











ФайлНазначение
background.pngФоновая картинка для карты.
footer.pngКартинка рядом со штрихкодом
icon.pngИконка для уведомлений и писем
logo.pngЛоготип карточки. Отображается слева сверху
manifest.jsonРеестр всех включанымх файлов
signaturePKCS7 подпись
pass.jsonВнешний вид и информация на карте
strip.pngКартинка, находящаяся сзади основного описания карточки
thumbnail.pngДополнительная картинка (уточнить)

Существуют следующие типы карт:

  • Посадочный билет: на самолет или поезд. Обычно купон работает на одну поездку;
  • Купон: для купонов и специальных предложений;
  • Билет на событие: может работать как для одного события, так и для целого сезона;
  • Скидочная карта: карты лояльности, скидочные или подарочные карты;
  • Карта общего вида: если ничего из вышеперечисленного не подходит под ваш случай: например, карта для поездок на метро или пропуск в спортзал.

Рассмотрим схематично внешний вид разных карт. Картинки лучше называть так, как это указано в таблице выше.

Посадочный билет

Купон

Билет на событие

Общая карта

Скидочная карта

Обязательные поля. Содержат Pass Type ID, Team ID, название организации и т.п.

Ключи для связанных приложений. Нужны для отображения приложений, которые нужно «ассоциировать» с картой.

Ключи «срока годности» карточки.

Ключи актуальности. Например, координаты местности, где карта может быть использована, или начало события, для которого она предназначена.

Ключ стиля. В начале статьи были перечислены 5 видов карт для Wallet. Каждому из них соответствует свой стиль. Такой ключ должен быть строго один.

Ключи визуального оформления карты. Помимо очевидного, содержат в себе информацию о штрихкоде, отображаемом на карте.

Ключи web-сервисов. Вы можете использовать web-сервисы для взаимодействия с картой, например, автоматически ее обновлять.

NFC-ключи. Содержат дополнительную информацию для Apple Pay транзакции.

Теперь обо всем подробнее.

Обязательные поля








Ключ в JSONТип данныхОписание
descriptionString.

Локализуемое
Краткое описание карты. Локализуемое.
formatVersionIntВерсия формата файла. Значение должно быть 1.
organizationNameString.

Локализуемое
Название организации, которая выдает карты.
passTypeIdentifierStringPass Type ID и кабинете разработчика.
serialNumberStringСерийный номер отдельной карты
teamIdentifierStringTeam ID команды разработчика

Ключи для связанных приложений




Ключ в JSONТип данныхОписание
associatedStoreIdentifiers[Int]Опционально. ID приложений, ассоциированных с картой. Берется всегда первое, совместимое с текущим устройством.
appLaunchURLStringURL, который передается в приложение при открытии

Ключи стиля









Ключ в JSONТип данныхОписание
primaryFields[JSON]Основная информация о карте.
secondaryFields[JSON]Второстепенная информация.
auxiliaryFields[JSON]Поля для дополнительной информации. Опциональное
headerFields[JSON]Заголовок карты. Отображается даже в том случае, когда карты видны списком.
auxiliaryFields[JSON]Основная информация о карте.
transitTypeStringТип транспорта для карт-билетов. Может принимать следующие значения:

PKTransitTypeAir,

PKTransitTypeBoat,

PKTransitTypeBu`,

PKTransitTypeGeneric,

`PKTransitTypeTrain`.
backFields[JSON]Массив полей, отвечающий за обратную сторону карты

JSON в данном случае имеет следующий вид:

    "key"   : "value1",
    "label" : "value2",
    "value" : "value3"

Значение по ключу value может быть как числовым, так и строковым. Однако currencyCode вместе со строковым значением использовать не получится. Что касается auxiliaryFields и secondaryFields, их может быть несколько, и стоит следить за длиной строк, которые в них используются.

Ключи визуального оформления








Ключ в JSONТип данныхОписание
barcodes[JSON]Информация для баркода (см. ниже).
backgroundColorcolor as stringЦвет фона.(#fa32e4)
foregroundColorcolor as stringЦвет лейблов со значениями
groupingIdentifierStringОпционально для билетов на события и билетов на транспорт. Карты с одинаковым стилем ― passTypeIdentifier и groupingIdentifier ― будут группироваться
labelColorcolor as stringТекст лейблов с названиями полей
logoTextLocalizable stringТекст, отображаемый рядом с логотипом

Баркод

Самая важная часть карты. В него зашивают идентификационный номер карты (например, номер физической карты или номер билета). Важно чтобы сканер или любой другой инструмент умели считывать коды в нужной кодировке.






Ключ в JSONТип данныхОписание
altTextStringОпциональный текст, отображаемый рядом с баркодом в том случае, если баркод не считывается.
formatStringФормат баркода. Может принимать значения: PKBarcodeFormatQR,

PKBarcodeFormatPDF417,

PKBarcodeFormatAztec,

PKBarcodeFormatCode128
messageStringКод или номер карты, зашифрованный в баркод.
messageEncodingStringКодировка сообщения. Обычно iso-8859-1

Локация

Эти ключи отвечают за локацию, в пределах которой карта может быть использована.






Ключ в JSONТип данныхОписание
altitureStringОпциональный текст, отображаемый рядом с баркодом в том случае, если баркод не считывается.
latitudeДолготаШирота
longtitudeDoubleШирота
relevantTextStringОпциональный текст, который отображается на экране блокировки в тот момент, когда пользователь входит в радиус действия карты.

Оборотная сторона

На оборотной информационной части можно разместить дополнительную информацию: условия использования, политику автообновления, контактные данные и ссылку на приложение, к которому относится карта. На рисунке представлено соответствие полей в pass.json и внешнего вида обратной стороны карты. Если в value-поле есть ссылки, номера телефона и т.п., они подсветятся автоматически.

Итак, картинки готовы, pass.json сформирован, осталось собрать все это вместе. Для этого заполним manifest.json (см. таблицу 1), куда необходимо включить все картинки и pass.json. Получается примерно так:

. . . . . . 
   "pass.json" = 303c753abc39aa732ec74643d6db28348fe8a823;
   "strip.png" = 736d01f84cb73d06e8a9932e43076d68f19461ff;
   "[email protected]" = 468fa7bc93e6b55342b56fda09bdce7c829d7d46;
. . . . . .

С этого момента менять ничего не нужно, поскольку SHA будет некорректным, в случае изменений необходимо сгенерировать SHA заново.

Далее нужно создать Pass Type ID в кабинете разработчика и сделать для него сертификат. Процедура должна быть более-менее знакомая, если ранее вы создавали, например, Provisioning профили.

Далее заходим в ключницу (Keychain) и экспортируем оттуда Apple Worldwide Developer Relation Certificate (WWDR) как .pem.

Оттуда же экспортируем созданный Pass Type ID как .p12. На этом этапе ключница попросит вас ввести пароль для сертификата. При этом пароль вводить необязательно.

Обратите внимание, что все дальнейшие действия надо производить в одной папке, где уже должны лежать manifest.json, pass.json и картинки.

Теперь необходимо сгенерировать подпись, которой будем подписывать архив. Для начала экспортируем Pass Type ID и ключ к нему как .pem.

openssl pkcs12 -in certificate.p12 -clcerts -nokeys -out passcertificate.pem -passin pass: your_password

и

openssl pkcs12 -in certificates.p12 -nocerts -out passkey.pem -passin pass: -passout pass:new_password

Теперь мы готовы к генерации подписи. Сделаем это командой:

openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:пароль_из_предыдущей_команды

Итак, у нас все готово, осталось только собрать архив, делаем это командой:

zip -r nameOfPass.pkpass manifest.json pass.json signature logo.png [email protected] logo@3x. png icon.png [email protected] [email protected]

Обращаю внимание, что тут должны быть перечислены все файлы, в которые вы хотите включить архив данных для карты(.pkpass).

В итоге мы получим .pkpass файл, который можно открывать на компьютере. Мы увидим превью карты, внешний вид которой может отличаться от вида на телефоне.

Все это можно сделать чуть проще. Apple предоставляет утилиту signpass (Apple Wallet sample meterials), которая берет на себя все подсчеты SHA (файл manifest.json можно не делать самостоятельно) и работу по созданию подписей. Чтобы ей воспользоваться, нужно собрать проект и поместить файл signpass в папку со всеми необходимыми ресурсами.

В целом структура должна выглядеть примерно так:

Далее выполняем команду:

./signpass -p wallet

Wallet — это название папки, в которой лежат все ресурсы. На выходе получаем файл wallet.pkpass. Его содержимое можно посмотреть, разархивировав wallet. pkpass.

unzip wallet.pkpass

Не исключено, что создание pkpass будет вынесено на бэкенд, в таком случае надо будет передать разработчикам WWDR, сертификат для Pass Type ID в виде .p12 и пароль от него.

Для того чтобы приложение имело возможность добавлять карты в Wallet, необходимо включить эту возможность в App ID и также включить эту возможность в Capabilities в проекте.

Это необходимо для полноценной корректной работы с Wallet. В противном случае не получится считывать карты с Wallet и, например, не будет возможности понять, добавлена наша карта или нет. Также важно отметить, что team id в pass.json должен совпадать c team id, либо придется добавлять их вручную в entitlements и это может исправить ситуацию, но это я не проверял.

Добавление карты

Добавлять карты очень просто:

guard let passPath = Bundle.main.path(forResource: "wallet", ofType: "pkpass") else { return }
        let error: ErrorPointer = ErrorPointer(nilLiteral: ())
        guard let passData = NSData(contentsOfFile: passPath) else { return }
        let pass = PKPass(data: passData as Data, error: error)
        let passLibrary = PKPassLibrary()
        passLibrary. addPasses([pass]) { (status) in
            print(passLibrary.containsPass(pass))
        }

Однако, опять же, чаще .pkpass файл надо будет скачивать с вашего сервера.

Стоит отметить, что PassKit выдает довольно читаемые ошибки, поэтому можно легко понять, что именно было сделано не так.

Чтобы получить информацию о картах, имеющихся в Wallet и относящихся к вашему приложению, необходимо обратиться к объекту PKPassLibrary.

let passLibrary = PKPassLibrary()
let passes = passLibrary.passes()

Таким образом, можно понять, добавлена карта или нет, а также обновить интерфейс. Кроме того, через PKPassLibrary карты можно обновлять и удалять. Обновлять карты можно и через веб-сервисы, но в этой статье мы не будем рассматривать такой вариант.

Поскольку в вашем сервисе, как правило карта привязана к аккаунту, в приложении скорее всего придется как-то определять принадлежность карты к текущему пользователю. Предлагаю делать это через serialNumber. Например, задавать в качестве serialNumber id пользователя или номер карты.

Apple предоставляет примеры pkpass для разных типов, можно ориентироваться на них.
Apple Wallet samples

Чтобы увидеть то, как выглядит карта, можно, добавить pkpass в проект (см. «Добавление карты»). Процесс добавления/удаления уже рассмотрен выше, осталось только напомнить, что приложение не будет видеть уже добавленные карты, если карта для Wallet создавалась на одном аккаунте разработчика, а сама разработка велась с другого аккаунта (актуально для аутсорс-компаний). При этом добавлять карты можно без проблем.

Проверить, корректно ли закодирована информация в штрихкоде, можно с помощью любого сканера QR-кодов. И точно необходимо проверить корректность работы с настоящим сканером.

В статье был рассмотрен процесс создания и дизайна карты, а также процесс интеграции c приложением и проблем, которые могут возникнуть. Я намерено не касался вопросов интеграции с веб-сервисами и обновления карт, и надеюсь сделать это в следующей статье.

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Creating.html
https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html#//apple_ref/doc/uid/TP40012026-Ch3-SW3
https://itechroof.wordpress.com/2015/11/30/apple-wallet-part-13/
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html

Отдельное спасибо mehdzor за аккаунт разработчика для тестов.

Apple Pay

плати с помощью устройства

apple

безопасные

транзакции

бесконтактные

платежи

О Apple Pay

Как добавить карту

частые вопросы

Как пользоваться Apple Pay?

Apple Pay прост в использовании. Все, что тебе нужно, — это карта maib и iPhone или Apple Watch, с помощью которых ты просто и быстро сможешь производить платежи.

Как добавить карту в Apple Pay?

Добавить карту в Apple Pay очень просто.

  • На iPhone откройте приложение Wallet и коснитесь значка «+»;
  • Для Apple Watch откройте приложение Apple Watch на своем iPhone и выберите «Wallet & Apple Pay», затем нажмите «Добавить кредитную или дебетовую карту»;
  • На iPad перейди в «Настройки», откройте «Wallet & Apple Pay» и выбери «Добавить кредитную или дебетовую карту»;
  • На MacBook Pro с Touch ID перейди в «Системные настройки», выберите «Wallet & Apple Pay», затем выбери «Добавить карту».

Как совершать платежи с помощью Apple Pay?

Для оплаты в магазинах:

  • Совершай платежи через Apple Pay со своего iPhone или Apple Watch. Все, что тебе нужно сделать, это коснуться телефоном  платежного терминала и подтвердить платеж с помощью Face ID или Touch ID.

Для оплаты в приложениях:

  • Выбери способ оплаты через Apple Pay и подтверди с помощью Face ID или Touch ID.

Для оплаты онлайн:

  • Откройте Safari на iPhone, iPad или Mac и используй Apple Pay без создания учетной записи, ввода данных карты или заполнения длинных форм. Миллионы продавцов принимают Apple Pay онлайн. А с Touch ID на MacBook Air или MacBook Pro ты можешь платить одним касанием быстрее, проще и безопаснее, чем когда-либо прежде.

Где я могу заплатить с помощью Apple Pay?

Ты можешь оплатить с помощью Apple Pay в любом магазине или в Интернете, приложений, в которых есть значки:

Насколько безопасно использовать Apple Pay?

  • Apple Pay безопаснее, чем использование физической кредитной или дебетовой карты. Для оплаты покупок на iPhone, Apple Watch, Mac или iPad требуется Face ID, Touch ID или ваш код-пароль. Номер карты и ваша личность не раскрываются продавцам, а реальный номер вашей физической карты не сохраняется ни на вашем устройстве, ни на серверах Apple.
  • При оплате покупок в магазинах ни Apple, ни ваше устройство не передают номер вашей карты продавцу. А при платежах онлайн в Safari или в приложениях продавец получает только информацию, разрешённую вами и необходимую для выполнения заказа, например ваше имя, электронную почту, расчётный адрес и адрес доставки.
  • Когда вы выбираете для оплаты дебетовую или кредитную карту, Apple Pay не сохраняет никакой информации о транзакции, с помощью которой можно было бы установить вашу личность.

Я не могу добавить карту в Apple Pay, что мне делать?

Если у тебя возникли проблемы с добавлением карты в Apple Pay, обратитесь в Contact Ceneter по телефону 1313.

Нужно ли платить за исполизование Apple Pay?

Нет. Apple не взимает никакой платы за использование Apple Pay в магазинах, онлайн и в приложениях.

Есть ли установленный лимит на транзакции Apple Pay?

Лимит транзакций в Apple Pay напрямую зависит от лимита карты, используемой для платежей.

Какие устройства совместимы с Apple Pay?

Apple Pay совместим с iPhone 6 и другими новыми моделями, включая iPad Air 2 и другие новые модели iPad, со всеми моделями Apple Watch и компьютерами Mac, использующими Touch ID.

 

Добавляйте, используйте и делитесь посадочными талонами, билетами и другими пропусками в Apple Wallet

С помощью приложения Wallet вы можете добавлять и использовать посадочные талоны, билеты в кино, купоны, бонусные карты и многое другое. Вы также можете поделиться некоторыми пропусками и билетами.

Как добавить посадочный талон, билет или другой пропуск в Apple Wallet на вашем iPhone

  1. Откройте приложение, электронное письмо, уведомление или другое сообщение, содержащее ваш посадочный талон, билет или другой пропуск.
  2. Нажмите «Добавить в Apple Wallet».
  3. Следуйте инструкциям на экране.
  4. При необходимости нажмите Добавить в правом верхнем углу.

Если вы не видите возможность добавить свой посадочный талон, билет или другой пропуск в приложение Wallet, обратитесь к продавцу или в компанию, выпустившую его, чтобы убедиться, что они поддерживают пропуски в приложении Wallet.

Когда вы добавляете посадочный талон, билет или другой пропуск в приложение Wallet на iPhone, вы автоматически добавляете его в приложение Wallet на сопряженных Apple Watch.

Узнайте, как удалить пропуск или билет из приложения Wallet.

Использование посадочного талона, билета или другого пропуска в Apple Wallet

Когда вы добавляете посадочный талон, билет или другой пропуск в приложение Wallet, вы можете использовать его со своим iPhone или Apple Watch.

 

Как использовать посадочный талон, билет или другой пропуск на вашем iPhone

  1. Откройте свой пропуск:
    • Если вы получили уведомление, коснитесь его. При появлении запроса выполните аутентификацию с помощью Face ID, Touch ID или кода доступа.
    • В противном случае дважды нажмите боковую кнопку (iPhone с Face ID) или дважды нажмите кнопку «Домой» (iPhone с Touch ID). При появлении запроса выполните аутентификацию с помощью Face ID, Touch ID или кода доступа.
  2. При необходимости коснитесь платежной карты по умолчанию, чтобы просмотреть другие свои карты. Затем коснитесь своего посадочного талона, билета или другого талона и выполните аутентификацию.
  3. Отсканируйте или прикоснитесь своим iPhone к бесконтактному считывателю или предъявите его дежурному.

Как использовать посадочный талон, билет или другой пропуск на Apple Watch

  1. Откройте свой пропуск:
    • Если вы получили уведомление, коснитесь его.
    • В противном случае дважды щелкните боковую кнопку, затем прокрутите вниз, чтобы найти посадочный талон, билет или другой пропуск, который вы хотите использовать, и коснитесь его.
  2. Отсканируйте или прикоснитесь к дисплею Apple Watch на бесконтактном считывателе или предъявите его дежурному.

Как поделиться пропуском или билетом в Apple Wallet

Вы можете поделиться некоторыми пропусками и билетами в приложении Wallet с другими пользователями iPhone или Apple Watch.

  1. На iPhone откройте приложение Wallet.
  2. Коснитесь пропуска или билета, которым хотите поделиться.
  3. Коснитесь кнопки «Еще» , затем коснитесь «Информация о пропуске». Если вместо этого вы видите кнопку «Информация», возможно, у вас нет возможности поделиться из приложения Wallet.
  4. Коснитесь значка «Поделиться» .

Если значок «Поделиться» не отображается, продавец или компания, выпустившая пропуск или билет, не включили обмен в приложении «Кошелек». Проверьте их приложение или веб-сайт, чтобы узнать, предоставляют ли они возможность поделиться пропуском или билетом.

 

Информация о продуктах, не производимых Apple, или о независимых веб-сайтах, не контролируемых и не тестируемых Apple, предоставляется без рекомендации или одобрения. Apple не несет ответственности за выбор, работу или использование сторонних веб-сайтов или продуктов. Apple не делает никаких заявлений относительно точности или надежности сторонних веб-сайтов. Свяжитесь с продавцом для получения дополнительной информации.

Дата публикации:

Apple Wallet ID — ваш идентификатор Arizona в Apple Wallet

ТОЧКА

Департамент транспорта Аризоны

You are here

Home»Apple Wallet ID — ваш идентификатор Arizona ID в Apple Wallet

Жители Аризоны теперь могут добавить свои водительские права или удостоверение личности штата в Apple Wallet на iPhone и Apple Watch, а затем предъявите его легко и надежно на некоторых контрольно-пропускных пунктах TSA в аэропортах.

Продолжайте носить с собой физическое удостоверение личности для использования в правоохранительных органах и местах, где требуется подтверждение возраста, но ожидайте, что в будущем появится больше мест, принимающих удостоверение личности в Apple Wallet.

 

Безопасный

Ваш идентификатор в Apple Wallet защищен с помощью Face ID и Touch ID, встроенных функций безопасности iPhone. Это означает, что только вы можете предъявить свои водительские права или удостоверение личности штата в TSA.

Если ваш iPhone или Apple Watch утерян или утерян, вы можете управлять своими водительскими правами или удостоверением личности в Apple Wallet с помощью приложения «Локатор». В любом браузере войдите в свою учетную запись iCloud, чтобы приостановить или удалить свой идентификатор.

Личный

Ваш идентификатор в Apple Wallet на iPhone и Apple Watch представлен в цифровом виде между вашим устройством и считывателем идентификационной информации, поэтому вам никогда не придется показывать или передавать свой iPhone или Apple Watch в TSA.

Ваши водительские права или удостоверение личности штата в Apple Wallet хранятся на вашем iPhone и Apple Watch, обеспечивая конфиденциальность и безопасность ваших данных. Apple не знает, когда и где вы представляете свое удостоверение личности.

 

Как добавить свой идентификатор Arizona ID в Apple Wallet

Чтобы добавить свой идентификатор на iPhone и любые сопряженные Apple Watch, откройте Apple Wallet и нажмите кнопку в правом верхнем углу экрана. Выберите «Водительское удостоверение» или «Идентификатор штата», затем следуйте инструкциям на экране, чтобы начать процесс настройки.

Как добавить свой идентификатор Arizona ID на iPhone.

Как предъявить удостоверение личности в аэропорту

Чтобы предъявить удостоверение личности на iPhone или Apple Watch на определенных контрольно-пропускных пунктах TSA в аэропорту, поднесите свое устройство к считывателю идентификационных данных и просмотрите запрошенную информацию. При использовании вашего iPhone вам нужно будет подтвердить с помощью Face ID или Touch ID. На Apple Watch просто дважды нажмите боковую кнопку, чтобы подтвердить и перейти.

Как представить свое удостоверение личности в TSA с помощью iPhone.

scroll to top