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

With Wallet, you can keep your credit, debit, and prepaid cards, store cards, boarding passes, movie tickets, coupons, rewards cards, student ID cards, and more in one place.

Open the Wallet app on your iPhone 
. You can also use Search to find it.

With Wallet, you can use passes on your iPhone to check in for flights, get and redeem rewards, get in to movies, or redeem coupons. Passes can include useful information like the balance on your coffee card, your coupon’s expiration date, your seat number for a concert, and more. At some schools in the United States you might be able to use your student ID cards on iPhone and Apple Watch.

If you want to add payment cards to Wallet, learn how to set up Apple Pay.

[pp_imgslider srcs=»,»]

Add passes

You can add passes to Wallet in several ways:

  • Using Wallet-enabled apps (Scroll down in Wallet, tap Edit Passes, and tap Find Apps for Wallet.)
  • Scanning a barcode or QR code (Scroll down in Wallet, tap Edit Passes, tap Scan Code, and use your iPhone camera to scan.)
  • Tapping a Wallet notification that you got after paying with Apple Pay at a supported merchant
  • With Mail or Messages
  • Through a web browser
  • Sharing through AirDrop
  • From your Mac
  • Creating an iTunes Pass
  • For student ID cards, using the eAccounts app

If you don’t see the option to add a card, ticket, or other service to Wallet, contact the merchant to make sure that they support Wallet passes.

You may need to tap Add to Apple Wallet and then tap Add in the upper right corner of the pass. Or you may see a popup with an Add button you can tap to add your pass to Wallet.

[pp_imgslider srcs=»,»]

Remove passes

To remove a pass:

  1. Scroll down in Wallet, then tap Edit Passes. 
  2. Tap the arrow button.
  3. Tap Delete.

Or tap the pass that you want to remove, tap , scroll down, and tap Remove Pass.

To remove multiple passes at once:

  1. Scroll down in Wallet, then tap Edit Passes. 
  2. Tap  next to the pass that you want to Delete. 
  3. Tap Delete.

[pp_imgslider srcs=»,»]

Use your passes

Some passes automatically appear at the right time or place because they include information based on time or location. For example, when you arrive at the airport, your boarding pass should appear. If your pass has a contactless symbol on it, you may be able to use it at card readers and point of sale terminals that display this symbol.

You may need to slide to unlock your device to display and scan your pass.

With iOS 9 and later and your iPhone 6 or later,1
 there are two quick ways to use a pass:

  • If you have a credit, debit, prepaid, or store card in Wallet, or a rewards card that works with Apple Pay, open Wallet from the Lock Screen by double-clicking the Home button or by double-clicking the Side button on iPhone X and later. 
  • If you turned on Automatic Selection for a rewards card, store credit card, or ticket, use that pass by tapping a pass notification or tapping the pass in Wallet. Then hold your iPhone near the contactless reader. You may need to authenticate with Touch ID or Face ID.

If you want notifications for things like flight updates or coupons and sales for nearby stores, follow these steps:2

  1. In Wallet, tap your pass.
  2. Tap .
  3. Tap the Notifications button to turn notifications on or off.

To turn on notifications for all your passes, go to Settings > Notifications > Wallet, turn on Allow Notifications, and turn on the alerts that you want.

Learn how to use your student ID card in Wallet.

[pp_imgslider srcs=»,»]

Change pass settings

Tap a pass, then tap  on the pass to see settings and more information. Here’s what you can do from the info screen: 

  • Delete the pass.
  • Share the pass. Not all passes can be shared.
  • Update the pass by pulling down to refresh.
  • Open or install the app related to that pass.
  • Turn on or off Automatic Updates.
  • Turn on or off Suggest on Lock Screen.
  • Turn on or off Automatic Selection for contactless passes.

The info screen can also show other helpful information about your pass, such as merchant contact information.

To reorder your passes, tap and hold a pass, then drag it to a new place. Your change will update across all of your devices.

To make a card the default for Apple Pay, drag the card to the front of your credit, debit, and prepaid cards in Wallet.

Get help

If your pass doesn’t appear on the Lock screen when you think it should, you can open Wallet and select the pass to scan it. A pass won’t appear for these reasons:

  • Location Services is off.
  • The Suggest on Lock Screen feature is turned off for that pass.
  • The merchant doesn’t support this feature.

1. To use Apple Pay for purchases in stores in Japan, you need an iPhone 8 or iPhone 8 Plus or later. Or you can use an iPhone 7 or iPhone 7 Plus that was purchased in Japan. Learn how to tell whether your device was purchased in Japan.

2. Some merchants may not allow notifications.

Information about products not manufactured by Apple, or independent websites not controlled or tested by Apple, is provided without recommendation or endorsement. Apple assumes no responsibility with regard to the selection, performance, or use of third-party websites or products. Apple makes no representations regarding third-party website accuracy or reliability. Risks are inherent in the use of the Internet. Contact the vendor for additional information. Other company and product names may be trademarks of their respective owners.

Published Date:
 June 07, 2019

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

Первым делом самолеты

Сейчас большинство авиакомпаний, будь то «Аэрофлот» или S7, позволяют осуществить посадку на рейс при помощи электронной карточки Wallet. Она заменяет собой полноценный билет: во многих аэропортах мира это позволяет попасть на самолет, отсканировав карточку (после этого открывается специальный турникет). Как правило, авиакомпании дают возможность отправить карточку в Wallet сразу после онлайн-регистрации на рейс.

[pp_imgslider srcs=»,»]

Поездом комфортнее

Да, с наземным транспортом дела обстоят точно так же. Достаточно воспользоваться сервисом (приложением) вроде или TicketNow, где можно купить билет на поезд, сохранить его в виде карточки Wallet и в большинстве случаев попасть с ее помощью в вагон, когда проводник специальным сканером «прочтет» код с карточки. С поездами дальнего следования иногда могут случаться накладки (некоторые проводники до сих пор делают круглые глаза при слове «электронная регистрация»), но в том же «Сапсане» или «Ласточке» система отлажена на твердую пятерку. В Wallet также можно загрузить билет на аэроэкспресс после покупки в одноименном приложении.

[pp_imgslider srcs=»,»]

Поселитесь в люксе

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

[pp_imgslider srcs=»,×1334.png»]

Без очередей в кино и ресторан

Этим наверняка наши читатели пользуются чаще всего, ведь, по статистике, более 30% билетов, купленных онлайн, попадают именно в Wallet. Но на всякий случай напомним для тех, кто до сих пор приходит за 40 минут до начала сеанса постоять в очереди за билетами. Сейчас сохранение билетов в кино в виде карточки Wallet поддерживают все билетные системы, а именно Rambler, Parter, Tickets, Яндекс.Касса, Кинопоиск и Киноход. После покупки приложения сами формируют билеты в кино в виде карточки Wallet и штрихкода, причем даже если вы покупали 4-5 билетов на компанию, карточка все равно одна, что очень удобно. При входе в залы в кинотеатрах сейчас установлены специальные автоматы, которые сканируют QR-код на карточке и пускают на сеанс.

[pp_imgslider srcs=»,»]

Аналогично это работает и с ресторанами. Забронировали онлайн, сохранили карточку в Wallet, показали ее хостес при входе. И можно наслаждаться ужином! Надо ли говорить, что и этим возможности Apple Wallet не ограничиваются. Карточки, например, можно применять для хранения страховых полисов из «Тинькофф Страхование», «ВТБ страхование», «АльфаСтрахование», «Ингосстрах» (в поездках за границу пригодится), а также для такого направления, как карты лояльности.

[pp_imgslider srcs=»,×1334.png»]

Новое слово в бизнесе

Сейчас карты лояльности в Apple Wallet реализуют многие , в том числе своими силами, но зачастую такие карточки бесполезны: они содержат мало информации, не могут обновляться, так как отсутсвует интеграция с внутренними бизнес системами, не имеют push-уведомлений и обратной связи. Поэтому существуют специальные сервисы электронных карт, предоставляющие комплексные решения по автоматизации бизнеса. Одним из них является компания OSMICards — сервис, который с 2012 года работает на базе Wallet для iOS и WalletUnion для Android, помогая компаниям и пользователям максимально выгодно использовать все преимущества данной технологии. Клиенты ЦУМа, например, уже успели оценить удобство карты лояльности торгового центра в AppleWallet, которые были разработаны в сотрудничестве с OSMICards. Очень удобно, например, иметь возможность контролировать свой бонусный счет и статус карты, а также получать push-уведомления о предстоящих акциях и распродажах прямо в Wallet, без необходимости нагружать свой iPhone еще одним приложением. Кроме того, поскольку карточки работают с геолокацией пользователя, Wallet известит о распродаже обуви в том же Hugo Boss, если владелец карты лояльности окажется неподалеку от магазина.

[pp_imgslider srcs=»×1334.png,×1334.png»]

Бизнес может дарить своим покупателям электронные ссертификаты в AppleWallet, что значительно упрощает их распространение. Ну и не стоит забывать о продвинутой обратной связи — можно с помощью Wallet общаться с магазином и высказывать свое мнение об обслуживании.

[pp_imgslider srcs=»×1334.png,×1334.png»]

С точки зрения маркетологов преимуществ от использования технологии AppleWallett значительно больше. В первую очередь — отсутствие необходимости выделять внушительные бюджеты на SMS-оповещение, рассылки по электронной почте и работу сотрудников кол-центра. Сервис позволяет взаимодействовать с покупателями при помощи push-уведомлений и геотаргетинга: управлять всем этим можно в Личном кабинете, где компания создает электронные карты клиента, или же непосредственно из бизнес-системы (1С, ManzanaLoyalty, 1C-Битрикс, LuxeRetail, Universoft, R-keeper, iiko и многие другие). Есть возможность размещения до 10 активных геометок, с помощью которых осуществляется информирование клиента о ближайших точках продаж. Также сервис AppleWallet позволяет заменить заполнения неудобных бумажных анкет покупателями в магазине на электронный формат, тем самым моментально и без искажения получать данные в CRM-системе, проверять номер указанного телефона, экономить время продавцов, а также отказаться от ведения архива бумажных анкет для ФАС. Персональному подходу к покупателю также способствует отслеживание количества выданных карт и установок, активности использования карты и даже моделей смартфонов клиентов. Но самый, пожалуй, очевидный плюс продвинутых карт лояльности — отсутствие необходимости в разработке собственного мобильного приложения, а это экономия до миллиона рублей на дизайне, написании кода и дальнейшей поддержке программы.

[pp_imgslider srcs=»×1334.png,×1334.png,×1334.png,×1334.png»]

Наглядно результат использования карт лояльности от OSMICards описала торговая сеть «TimeCode»: она ранее эмитировала пластиковые карты лояльности, но затем решила использовать свою базу клиентов для выпуска электронных карт в Wallet. После этого торговая сеть стимулировала своих покупателей к установке электронного подарочного купона на фиксированную сумму. В результате сеть получила небывалый скачок повторных продаж, а если учесть, что она занимается продажей швейцарских часов, можно представить, как подобная схема будет работать в других товарных категориях. За первые 14 дней акции клиентами было установлено в смартфоны около 10 000 электронных купонов, из которых около 50% — это совершенно новые клиенты, а денежный поток вырос в 3-5 раз. Компании также оценят, что на оборотной стороне электронной карты можно размещать любые ссылки — например, на свои социальные сети, сайт, онлайн-магазин, мобильное приложение, а при желании и проводить опросы, разместив на обороте карты кнопки ответов, являющиеся ссылками.

[pp_imgslider srcs=»,»]

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

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

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

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

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

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

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

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

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

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

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


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

Общая карта

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

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

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

Ключ в JSON Тип данных Описание
description Краткое описание карты. Локализуемое.
formatVersion Int Версия формата файла. Значение должно быть 1.
organizationName Название организации, которая выдает карты.
passTypeIdentifier String Pass Type ID и кабинете разработчика.
serialNumber String Серийный номер отдельной карты
teamIdentifier String Team ID команды разработчика

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

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

Ключи стиля

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

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

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

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

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

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


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

Ключ в JSON Тип данных Описание
altText String Опциональный текст, отображаемый рядом с баркодом в том случае, если баркод не считывается.
format String
message String Код или номер карты, зашифрованный в баркод.
messageEncoding String Кодировка сообщения. Обычно iso-8859-1


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

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

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

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

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

. . . . . .     "pass.json" = 303c753abc39aa732ec74643d6db28348fe8a823;    "strip.png" = 736d01f84cb73d06e8a9932e43076d68f19461ff;    "strip@2x.png" = 468fa7bc93e6b55342b56fda09bdce7c829d7d46; . . . . . .

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

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

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

Теперь необходимо сгенерировать подпись, которой будем подписывать архив. Для начала экспортируем 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 logo@2x.png logo@3x.png icon.png icon@2x.png icon@3x.png

Обращаю внимание, что тут должны быть перечислены все файлы, в которые вы хотите включить архив данных для карты(.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 в проекте.

[pp_imgslider srcs=»,»]

Это необходимо для полноценной корректной работы с 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))          }

Получение информации о добавленных картах

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

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

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

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

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

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

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

Рейтинг автора
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
Ссылка на основную публикацию
Похожие публикации