Jet cards

Requesting Certificates

P12 Certificate

Once you have downloaded the Apple iPhone certificate from Apple, export it to the P12 certificate format.

To do this on Mac OS:

  1. Open the Keychain Access application (in the Applications/Utilities folder).
  2. If you have not already added the certificate to Keychain, select File > Import. Then navigate to the certificate file (the .cer file) you obtained from Apple.
  3. Select the Keys category in Keychain Access.
  4. Select the private key associated with your iPhone Development Certificate. The private key is identified by the iPhone Developer: public certificate that is paired with it.
  5. Select File > Export Items.
  6. Save your key in the Personal Information Exchange (.p12) file format.
  7. You will be prompted to create a password that is used when you attempt to import this key on another computer.

on Windows:

  1. Convert the developer certificate file you receive from Apple into a PEM certificate file. Run the following command-line statement from the OpenSSL bin directory:
  1. If you are using the private key from the keychain on a Mac computer, convert it into a PEM key:
  1. You can now generate a valid P12 file, based on the key and the PEM version of the iPhone developer certificate:

If you are using a key from the Mac OS keychain, use the PEM version you generated in the previous step. Otherwise, use the OpenSSL key you generated earlier (on Windows).

WWDR Certificate

Apple’s World Wide Developer Relations (WWDR) certificate is available from Apple at You will have to add this to your Keychain Access and export it in .pem format to use it with the library. The WWDR certificate links your development certificate to Apple, completing the trust chain for your application.

Running Tests

Before submitting a patch for inclusion, you need to run the test suite to check that you have not broken anything.

To run the test suite, install PHPUnit 3.7 (or later) first.


To run the entire test suite, including tests that depend on external dependencies, php-passbook needs to be able to autoload them. By default, they are autoloaded from vendor/ under the main root directory (see vendor/autoload.php).

To install them all, use Composer:

Step 1: Get Composer

Make sure you download composer.phar in the same folder where the composer.json file is located.

Step 2: Install vendors


First, install the vendors (see above).

Then, run the test suite from the package root directory with the following command:

The output should display OK. If not, you need to figure out what’s going on and if the tests are broken because of your modifications.


Before you run the PassGenerator, you need to ensure you have all the necessary certificates installed. There are two required.

You can place this certificate in any of the stores, but it must be placed into the «personal» folder. When constructing the request for the pass, you specify the location and thumbprint for the certificate. If running this code in IIS for example, installing the certificate in the Local Machine area might make access easier. Alternatively, you could place the certificate into the AppPool’s user’s certification repository. When you install the certificate, be sure to note the certificate’s Thumbprint.

Technical Stuff

To generate a pass, start by declaring a PassGenerator.

Next, create a PassGeneratorRequest. This is a raw request that gives you the full power to add all the fields necessary for the pass you wish to create. Each pass is broken down into several sections. Each section is rendered in a different way, based on the style of the pass you are trying to produce. For more information on this, please consult Apple’s Passbook Programming Guide. The example below here will show how to create a very basic boarding pass.

Since each pass has a set of mandatory data, fill that in first.

Colours can be specified in HTML format or in RGB format.

To select the certificate there are two options. Firstly, you can use the Windows Certificate store to hold the certificates. You choose the location of your Passbook certificate by specifying the thumbprint of the certificates.

An alternative way to pass the certificates into the PassGenerator is to load them as byte[] and add them to the request.

The Apple WWDRC Certificate can only be loaded as a byte[].

Next, define the images you with to use. You must always include both standard and retina sized images. Images are supplied as byte[].

You can now provide more pass specific information. The Style must be set and then all information is then added to fields to the required sections. For a baording pass, the fields are add to three sections; primary, secondary and auxiliary.

You can add a BarCode.

Starting with iOS 9, multiple barcodes are now supported. This helper method supports this new feature. If you wanted to support iOS 8 and earlier, you can use the method SetBarcode().

To link the pass to an existing app, you can add the app’s Apple ID to the AssociatedStoreIdentifiers array.

Finally, generate the pass by passing the request into the instance of the Generator. This will create the signed manifest and package all the the image files into zip.

If you are using ASP.NET MVC for example, you can return this byte[] as a Passbook package

IIS Security

If you’re running the signing code within an IIS application, you might run into some issues accessing the private key of your certificates. To resolve this open MMC => Add Certificates (Local computer) snap-in => Certificates (Local Computer) => Personal => Certificates => Right click the certificate of interest => All tasks => Manage private key => Add IIS AppPool\AppPoolName and grant it Full control. Replace «AppPoolName» with the name of the application pool that your app is running under. (sometimes IIS_IUSRS)

Usage Example

This example will create a pass of type Ticket and will save the pkpass file in the output path specified. To use this example, you will need to do the following and set the constants accordingly:

* Get an icon (29×29 png file) for the pass

  • Specify a name for your organization

  • Specify the output path where the pass will be saved


use Passbook\Pass\Field;
use Passbook\Pass\Image;
use Passbook\PassFactory;
use Passbook\Pass\Barcode;
use Passbook\Pass\Structure;
use Passbook\Type\EventTicket;

// Set these constants with your values

define('P12_FILE', '/path/to/p12/certificate.p12');

define('P12_PASSWORD', 'password_for_p12_file');

define('WWDR_FILE', '/path/to/wwdr.pem');



define('ORGANIZATION_NAME', 'Your Organization Name');

define('OUTPUT_PATH', '/path/to/output/path');

define('ICON_FILE', '/path/to/icon.png');

// Create an event ticket
$pass = new EventTicket("1234567890", "The Beat Goes On");
$pass->setBackgroundColor('rgb(60, 65, 76)');
$pass->setLogoText('Apple Inc.');

// Create pass structure
$structure = new Structure();

// Add primary field
$primary = new Field('event', 'The Beat Goes On');

// Add secondary field
$secondary = new Field('location', 'Moscone West');

// Add auxiliary field
$auxiliary = new Field('datetime', '2013-04-15 @10:25');
$auxiliary->setLabel('Date & Time');

// Add icon image
$icon = new Image(ICON_FILE, 'icon');

// Set pass structure

// Add barcode
$barcode = new Barcode(Barcode::TYPE_QR, 'barcodeMessage');

// Create pass factory instance


Ресторан японской кухни Сумосан, что находится в гостинице Редиссон САС Славянская, не просто ввёл поддержку Passbook для карт лояльности, но и смог привязать их к автоматизированной системе расчётов, о которой с восторгом отзывались мои собеседники в других организациях. Жаль, что деталей так и не раскрыли, что не помешало мне увидеть весь процесс с начала и до конца – в том числе и с обратной стороны.

Условия получения карты везде различные, но мне как журналисту-халявщику всё выдали на месте. Для этого также заполняется анкета, в которой требуется подтвердить своё согласие на отправку карты. Затем в базе системы OSMICards создаётся профиль клиента, утверждается выпуск карты для Passbook – и та оперативно приходит посетителю в SMS-сообщении. Остаётся только кликнуть на ссылку и сохранить закладку в памяти «пассбука».

Приятно удивило то, насколько серьёзно в Сумосане вложились в интеграцию системы. Скидочные и акционные карты Passbook имеют горизонтальный штрих-код, который считывается беспроводным сканером с экрана вашего смартфона. Пока вы расплачиваетесь за счёт, официант фиксирует виртуальную карту…

…а оператор сканирует штрих-код вашего стола:

Заказ, сделанный за вашим столиком, автоматически привязывается к вашей бонусной карте, и при закрытии чека туда поступают заработанные баллы. В момент выхода из зоны ресторана мне пришло заветное оповещение.

Пластиковую карту я тоже получил. Но какой в ней смысл, если теперь я могу с таким же удобством использовать виртуальную? Пример практически идеальной интеграции с Passbook, которую теперь хочется видеть во всех любимых кафе и ресторанах. Надеюсь, это вопрос времени.

Updating passes

To be able to update your pass, you must provide it with a callback. When generating your request, you must provide it with an AuthenticationToken and a WebServiceUrl. Both of these values are required. The WebServiceUrl must be HTTPS by default, but you can disable this requirement in the iOS developer options on any device you’re testing on.

The authentication token is a string that will be included in the header of all requets made to your API. It’s your responsibility to validate this token.

I’m working on a sample implementation of the protocol in ASP.Net Core and you can find it on the branch new-sample-webservice.


В первую очередь я заглянул в необычное, стилизованное заведение ХоумБар – это первый ресторан в России, внедривший поддержку Passbook. Большинство кафе, баров и ресторанов выглядят примерно одинаково: стильно, роскошно и бездушно. Здесь же попытались воссоздать домашнюю атмосферу с мощным оттенком ретро. Такое место вряд ли станет хитом у молодёжи, но народу в тот снежный, холодный и предновогодний вечер было предостаточно.

Чтобы получить бонусную карту ХоумБар, посетителю нужно заполнить анкету. Это условие необязательно, но в целом универсально для большинства компаний: точно так же получают обычные физические карты лояльности. Разница этой анкеты с теми, что вы заполняли сотни раз – в наличии любопытного пункта, предлагающего получить электронную версию карты на смартфон. Под ней и подразумевается карточка для Passbook.

Посетитель отдаёт заполненную анкету менеджеру зала, которая вносит её в базу OSMICards через их собственный веб-интерфейс. Этот этап очень мощно персонализирован для каждой конкретной компании: кто-то предпочитает подключать систему к уже существующим базам и программным комплексам. Предлагаются два способа работы с данными: компания может развернуть ПО на своем сервере или работать на серверах OSMICards. Каждый клиент выбирает тот вариант, который его устраивает с точки зрения безопасности.

В данном случае я подождал буквально минуту – и получил вот такое сообщение, не отходя от кассы:

Карта действительно пришла, а вместе с чеком мне отдали и её пластиковую версию. Теперь для начисления бонусов мне достаточно предъявить любую из двух карточек официанту. В этот день интернет-подключение подвело всех нас, и поэтому мой номер карты был записан официанткой прямо на чеке. Спустя некоторое время бонусы пришли на счёт вместе с соответствующим сообщением на экране айфона:

Карта Passbook от ХоумБар выглядит вот так:

Кстати, если вам нужно сводить куда-то своих родителей, провести встречу с человеком «старой закалки» или просто попить пива, наблюдая за футбольным матчем – это место подойдёт отлично.


Passbook переименовывают в Wallet

С приходом iOS9 Apple внесли несколько изменений в Apple Pay и связанное с ним приложение.

  • В 2015 году приложение Passbook получило новое название – Wallet. Так же, как и раньше приложение хранило купоны, посадочные билеты, билеты на мероприятия, а также кредитные и дебетовые карты, которыми можно расплачиваться с помощью Apple Pay.
  • В iOS 9 появилась возможность добавлять карты лояльности и подарочные сертификаты в приложение. 
  • Пользователи iPhone 6 и iPhone 6 Plus получили быстрый доступ к Apple Wallet с экрана блокировки. Для этого нужно было дважды нажать кнопку Home с Touch ID.
  • Использование Apple Pay через приложение Wallet стало возможно с помощью Apple Watch.
  • Появился новый вид карт — Value-added service passes. Такие карты смогли безопасно передавать информацию по NFC. Они также поддерживали способ оплаты в одно касание, когда при наведении над терминалом для оплаты одновременно передаются данные о кредитной карте и о карте лояльности. Это стало также возможно с Apple Watch.

Запуск Android Pay в США

В сентябре 2015 года Google запустил собственный платёжные сервис, который получил название Android Pay. Впервые сервис был представлен в 2015 году на ежегодной конференции разработчиков Google I/O 2015. Android Pay основан на базе, выпущенной в 2011 году платёжной системы Google Wallet. По сути, Android Pay – это то же, что и Google Wallet с разницей в простоте использования. Если для того, чтобы воспользоваться Google Wallet нужно было открыть приложение и ввести пин-код для доступа к картам, то с Android Pay этого делать не нужно. Сервис встроен прямо в операционную систему. При наведении над терминалом пользователь мог воспользоваться хранящимися в системе кредитными картами, картами лояльности или другими.Так же, как и приложение Google Wallet, Android Pay позволял пользователям выполнять все те же действия: оплачивать покупки, хранить бонусные карты и карты лояльности, билеты, посадочные талоны и т.д.


Регистрация в программе лояльности в Wallet

В 2016 году в Wallet произошло не так много изменений.

  • На конференции было упомянуто о появившемся в 2015 году новом виде карт — Value-added service passes. В 2016 году эти карты смогли распространяться по NFC, а пользователи получили возможность зарегистрироваться в программе лояльности прямо через приложение Wallet, тем самым персонализировав свою карту.
  • Одним из нововведений в Wallet стало расположение иконки связанного с картой приложения на лицевой части карты (ранее они были с обратной стороны). 

Запуск Apple Pay в России

В России система стала доступна 4 октября 2016 года. Россия стала 10 страной, в которую пришёл Apple Pay. Для того, чтобы воспользоваться системой нужно было добавить платёжную карту в приложение Wallet. Первым банком, поддерживающим Apple Pay в России, стал «Сбербанк».

Приложение WalletPasses

WalletPasses– приложение, поддерживающее формат карт .pkpassи работающее на Android(по сути, PassbookWalletдля Android). Разработано для хранения разного вида карт, таких как купоны, билеты на концерт или в кино, посадочные талоны и т.д. Приложение работает в режиме реального времени – при изменении информации на/о карте, пользователь получает уведомление, например с предупреждением о истечении срока действия купона. Также на дисплее приложения отображаются время и местоположения.

WalletPasses полностью совместимо с картами Passbook/Wallet:

  • Автоматическое обновление карт и получение уведомлений
  • Отображение карт по релевантности (время, местоположение, iBeacon)
  • Встроенный сканер

Приложение Pass2U Wallet

Pass2UWalletпредставляет собой простое в использовании приложение, позволяющее хранить в телефоне карты лояльности, купоны, билеты, посадочные талоны и другие подобные карты со штрихкодами. Приложение предлагает удобный способ пользоваться картами в формате Passbook/AppleWalletна Androidустройствах и содержит множество полезных функций, позволяющих организовывать хранение карт – сортировка, поиск, категоризация, и др.

Пользователь может сканировать штрих-код, содержащий веб-ссылку, или загрузить файлы .pkpass для добавления карт в Pass2U.

Pass2U Wallet полностью совместимо с картами Passbook/Apple Wallet:

  • Возможность добавлять и управлять картами лояльности, купонами, билетами, посадочными талонами, и др.
  • Поддержка QR Code, Aztec, PDF417 и Code128 1D баркоды
  • Отображение карт на экране блокировки в зависимости от местоположения и времени
  • Поддержка iBeacon
  • Возможность самостоятельной настройки уведомлений
  • Локализация карт на 35-ти языках
  • Возможность сканирования или ручного ввода информации с физических карт для их сохранения в электронном виде в приложение Pass2U 
  • Открытый доступ к API обновления карт для провайдеров карт
  • Резервное бэкапирование и восстановление на Google Drive


Новые функции Passbook в iOS 7

  • В Passbook на iOS 7 изменился дизайн иконки приложения. Теперь, вместо изображения кожаного кошелька на иконке отображались карты друг за другом, подобно тому, как они отображаются в приложении.
  • Карты в приложении также несколько изменились внешне — стали менее «глянцевыми», а тени едва уловимыми. Также карты стали отображаться на весь экран смартфона. 
  • Появилась возможность добавлять иконки приложения с обратной стороны карты. Нажав на иконку приложения, пользователь попадал на страницу в App Store для загрузки приложения, с которым связана карта. Или, если у пользователя приложение было установлено ранее, то он оказывался в приложении.
  • Также с обратной стороны карты стало можно добавить дополнительную информацию, такую как контакты или информацию о местоположении мероприятия. Эта информация отображалась в виде ссылок. Нажатие на адрес открывало приложение «Карты», а нажав на номер телефона пользователь мог сразу совершить звонок. 
  • Добавлена кнопка «Поделиться картой». Так, например, если пользователь хотел поделиться своей картой лояльности, он мог поделиться картой через почту, AirDrop или iMessage.
  • Предоставление большего контроля над релевантностью карт, когда они появляются на экране блокировки. Apple позволили пользователям самостоятельно контролировать расстояние, на котором карты стали бы отображаться на экране блокировки при приближении к определённому месту.
  • Появились более простые способы добавления карт в Passbook (как через API, так и с помощью новых пользовательских функций).

Интеграция Google Wallet с Gmail

15 мая 2013 года Google объявили об интеграции Google Wallet и бесплатной почтовой службы Gmail, что позволило пользователям пересылать деньги во вложениях через Gmail. В то время, как Google Wallet был доступен только на территории США, использование функции Gmail стало доступно и в Великобритании.

Пластиковая карта Google Wallet

Помимо мобильного платёжного приложения Google предлагал пользователям физический вариант Google Wallet – пластиковые карты. Пластиковые карты Google Wallet служили дополнением к основному приложению, которые также позволяли пользователям совершать покупки в магазинах, используя средства из своей учётной записи Google Wallet, привязанной дебетовой карты или банковского счёта. Используя такую карту, пользователи также могли снимать наличные в банкоматах и использовать в качестве дебетовой карты практически для любых целей.Пластиковые карты Google Wallet перестали выпускаться и были заменены платёжным сервисом Android Pay.

Приложение PassAndroid Passbook

PassAndroid Passbookтакже является приложением для владельцев смартфонов, работающих на Android. PassAndroid Passbook- приложение для использования файлов  Passbook (в формате .pkpass). Это могут быть посадочные талоны, купоны, билеты в кино, дисконтные карты, и т.д. Помимо самих карт, в приложении хранится вся необходимая о них информация – описание, местоположение (можно проложить маршрут), даты и время (можно добавить в календарь). Приложение разработано для Android, имеет простой и понятный интерфейс, минималистичный дизайн и может работать в режиме оффлайн.

Ссылка на основную публикацию