Я использую эту библиотеку passgenerator для создания .pkpass
, который предполагается установить на кошелек Apple на iPhone. Файл .pkpass
сгенерирован успешно, но его нельзя было добавить в «кошелек» на iPhone, даже если он не обнаружил ошибки, когда я пытаюсь открыть этот файл из приложения электронной почты. Когда я открываю его с помощью «Пропускающего просмотра» на mac, он показывает некоторую ошибку в области штрих-кода. Вот скриншот;PHP сгенерированный проход не устанавливается в кошельке на iPhone
Я не знаю, где я делаю что-то неправильно. Я использую laravel 5.1, и я требую этот пакет правильно, а также в документации, требуемой для установки переменных среды для установки путей сертификатов.
CERTIFICATE_PATH= './assets/certificates/PassCertificate.p12'
CERTIFICATE_PASS= "mypassword"
WWDR_CERTIFICATE='./assets/certificates/WWDRCA.pem'
Вот мой код контроллера, где я устанавливаю его конфигурации в формате json.
public function index(PassGenerator $pass)
{
$pass_identifier = 'testPkPass'; // This, if set, it would allow for retrieval later on of the created Pass
$pkpass = $pass->getPass($pass_identifier);
if (!$pkpass) {
$pkpass = $this->createWalletPass($pass_identifier);
}
$path = storage_path().'/app/passgenerator/'.$pass_identifier.'.pkpass';
return Response::download($path, $pass_identifier.'.pkpass', [
'Content-Transfer-Encoding' => 'binary',
'Content-Description' => 'File Transfer',
'Content-Disposition' => 'attachment; filename="myTestingPass.pkpass"',
'Content-length' => strlen($pkpass),
'Content-Type' => PassGenerator::getPassMimeType(),
'Pragma' => 'no-cache',
]);
}
private function createWalletPass($pass_identifier)
{
$pass = new PassGenerator($pass_identifier);
$pass_definition = [
"description" => "description",
"formatVersion" => 1,
"organizationName" => "Black Book",
"passTypeIdentifier"=> "pass.biz.myIdentifier.coupon",
"serialNumber" => "123456",
"teamIdentifier" => "xyz",
"foregroundColor" => "rgb(255, 255, 255)",
"backgroundColor" => "rgb(44, 49, 51)",
"barcode" => [
"message" => "encodedmessageonQR",
"format" => "PKBarcodeFormatQR",
"altText" => "altextfortheQR",
"messageEncoding"=> "utf-8",
],
"coupon" => [
"headerFields" => [
[
"key" => "header",
"label" => "Value",
"value" => "30%"
]
],
"secondaryFields" => [
[
"key" => "welcome",
"label" => "",
"value" => "Welcome valued customer!"
],
[
"key" => "date",
"label" => "EXPIRES",
"value" => "2016/06/29"
]
],
"backFields" => [
[
"key" => "terms",
"label" => "Terms & Conditions",
"value" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
], [
"key" => "contact",
"label" => "Contact Us",
"value" => "[Contact-us] Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco."
],
],
],
];
$pass->setPassDefinition($pass_definition);
// Add assets to the PKPass package
$pass->addAsset(base_path('public/assets/wallet/background.png'));
$pass->addAsset(base_path('public/assets/wallet/thumbnail.png'));
$pass->addAsset(base_path('public/assets/wallet/icon.png'));
$pass->addAsset(base_path('public/assets/wallet/logo.png'));
$pkpass = $pass->create();
return $pkpass;
}
Любая помощь была бы действительно оценена. Пожалуйста, дайте мне знать, если я что-то не так с конфигурацией или где-то еще.
Что говорят ваши журналы Xcode? Если у вас нет Mac или Xcode, можете ли вы отправить ссылку на пакет .pkapss. У вас нет даты истечения срока действия, установленной в вашем JSON, поэтому я подозреваю, что штрих-код неактивен, потому что ваш сертификат идентификатора Pass Type истек или был отменен. – PassKit
Также у вас есть пустая строка на вашей вторичной этикетке. Удалите этот ключ или добавьте пробел. Пустая строка вызовет ошибку. – PassKit
@PassKit Я изменил свое вторичное поле, но это не влияет. Можете ли вы предоставить мне свой адрес электронной почты, чтобы я мог отправить вам электронное письмо с пакетом. –