2014-12-06 4 views
1

Я проверил три раза сертификаты, и, похоже, моя проблема может заключаться в формате, который выводится библиотекой php-passbook.Мой файл pkpass работает некорректно. Верьте, что это связано с полями

сообщение об ошибке с помощью консоли, когда привязанные:

Dec 6 09:27:33 JOHNs-iPhone MobileSafari[972] <Warning>: Invalid data error reading pass PASS-TYPE-IDENTIFIER/6731247236. The passTypeIdentifier or teamIdentifier provided may not match your certificate, or the certificate trust chain could not be verified. 
Dec 6 09:27:33 JOHNs-iPhone MobileSafari[972] <Warning>: PassBook Pass download failed: The pass cannot be read because it isn’t valid. 

Реализация:

// Create an event ticket 
    $pass = new EventTicket($event['Order']['transaction_id'], $event['Event']['EventDetail']['visible_name']); 
    $pass->setBackgroundColor('rgb(60, 65, 76)'); 
    $pass->setLogoText('LOGO'); 

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

    // Add primary field 
    $primary = new Field('event', $event['Event']['EventDetail']['visible_name']); 
    $primary->setLabel('Event'); 
    $structure->addPrimaryField($primary); 

    // Add secondary field 
    $secondary = new Field('location', 'LOCATION'); 
    $secondary->setLabel('Location'); 
    $structure->addSecondaryField($secondary); 

    // Add auxiliary field 
    $auxiliary = new Field('datetime', '2015-01-27 @10:25'); 
    $auxiliary->setLabel('Date & Time'); 
    $structure->addAuxiliaryField($auxiliary); 



    // Add icon image 
    $icon = new Image(APP . 'webroot' . DS . '/img/logo_growtix_admin_lg.png', 'icon'); 
    $pass->addImage($icon); 

    // Set pass structure 
    $pass->setStructure($structure); 

    // Add barcode 
    $barcode = new Barcode(Barcode::TYPE_QR, $key); 
    $pass->setBarcode($barcode); 

    // Create pass factory instance 
    $factory = new PassFactory('PASS-TYPE-IDENTIFIER', 'TEAM-IDENTIFIER', 'ORGANIZATION-NAME', APP . 'Vendor' . DS . 'Passbook/certs/PASS.p12', '', APP . 'Vendor' . DS . 'Passbook/certs/AppleWWDRCA.pem'); 
    $factory->setOutputPath(APP . 'webroot/passbook_passes' . DS); 
    $factory->package($pass); 

    $this->redirect('/passbook_passes/'.$event['Order']['transaction_id'].'.pkpass'); 

И в результате JSON:

{ 
"eventTicket": { 
    "primaryFields": [ 
     { 
      "key": "event", 
      "value": "Event Name", 
      "label": "Event" 
     } 
    ], 
    "secondaryFields": [ 
     { 
      "key": "location", 
      "value": "The Salt Palace", 
      "label": "Location" 
     } 
    ], 
    "auxiliaryFields": [ 
     { 
      "key": "datetime", 
      "value": "2015-12-08T13:00-08:00", 
      "label": "Date & Time" 
     } 
    ] 
}, 
"serialNumber": "6731247236_5069_1913", 
"description": "Test", 
"formatVersion": 1, 
"barcode": { 
    "format": "PKBarcodeFormatQR", 
    "message": "test", 
    "messageEncoding": "iso-8859-1" 
}, 
"backgroundColor": "rgb(60, 65, 76)", 
"logoText": "GrowTix", 
"passTypeIdentifier": "PASS-TYPE-IDENTIFIER", 
"teamIdentifier": "TEAM-IDENTIFIER", 
"organizationName": "ORGANIZATION-NAME" 
} 
+0

Вы используете PASS-TYPE-идентификатор и ТИМ-IDENTIFIER в вашем проходе? Если это так, это вызовет сообщение об ошибке. У вас проблема с подписью. Идентификатор команды и идентификатор passTypeIdentifier должны соответствовать сертификату, который вы использовали для подписания прохода. – PassKit

+0

Я собираюсь с примера кода здесь: http://eymengunay.github.io/php-passbook/ - он включает в себя оба? Я ценю любую помощь, он ударил меня, что это была проблема после публикации, так как журналы явно заявили об этом. Мой плохой. –

+0

См. Мой ответ. Вам нужно изменить значения этих двух полей в соответствии с вашим сертификатом. – PassKit

ответ

1

Проблема связана с ключами passTypeIdentifier и teamIdentifier ,

Эта строка в журнале показывает, что вы используете «PASS-TYPE-IDENTIFIER» в качестве ключа passTypeIdentifier.

Dec 6 09:27:33 JOHNs-iPhone MobileSafari[972] <Warning>: Invalid data error reading pass PASS-TYPE-IDENTIFIER/6731247236. The passTypeIdentifier or teamIdentifier provided may not match your certificate, or the certificate trust chain could not be verified. 

Вы должны использовать сертификат Pass Type ID, например. pass.com.passkit.admin в качестве идентификатора passType. Это необходимо для соответствия идентификатору/идентификатору типа пропуска, указанному в сертификате.

Ваш teamIdentifier должен соответствовать Организационному подразделению в сертификате. Например. U4LNY2SS5N.

Если вы используете Mac, вы можете увидеть эти данные, используя быстрый предварительный просмотр (пробел) в Finder.

enter image description here

+0

Спасибо - помогли тонну! –