Я проверил три раза сертификаты, и, похоже, моя проблема может заключаться в формате, который выводится библиотекой 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"
}
Вы используете PASS-TYPE-идентификатор и ТИМ-IDENTIFIER в вашем проходе? Если это так, это вызовет сообщение об ошибке. У вас проблема с подписью. Идентификатор команды и идентификатор passTypeIdentifier должны соответствовать сертификату, который вы использовали для подписания прохода. – PassKit
Я собираюсь с примера кода здесь: http://eymengunay.github.io/php-passbook/ - он включает в себя оба? Я ценю любую помощь, он ударил меня, что это была проблема после публикации, так как журналы явно заявили об этом. Мой плохой. –
См. Мой ответ. Вам нужно изменить значения этих двух полей в соответствии с вашим сертификатом. – PassKit