Пакет Laravel PassGenerator дозволяє легко створювати гаманцеві пропуски, сумісні з Apple Wallet. Документація до цього пакету обмежена, але суть полягає в створенні екземпляра генератора пропусків за допомогою визначення:
use Byte5\PassGenerator;
//...
$pass = new PassGenerator('somekindofid');
// Зауважте: визначення можна також задавати з JSON-строки
$pass->setPassDefinition([
"description" => "Опис",
"formatVersion" => 1,
"organizationName" => "Назва організації",
"passTypeIdentifier"=> "pass.com.example.appname",
"serialNumber" => "123456",
"teamIdentifier" => "teamid",
"foregroundColor" => "rgb(99, 99, 99)",
"backgroundColor" => "rgb(212, 212, 212)",
"barcode" => [
"message" => "encodedmessageonQR",
"format" => "PKBarcodeFormatQR",
"altText" => "alttextfortheQR",
"messageEncoding" => "utf-8",
],
// ...
]);
$pass->addAsset(base_path('resources/assets/wallet/background.png'));
$pass->addAsset(base_path('resources/assets/wallet/thumbnail.png'));
// ...
$pkpass = $pass->create();
Після створення екземпляра пропуску ви можете згенерувати відповідь для нього, використовуючи аналогічний код у вашому контролері. Пропуск зберігається для подальшого завантаження, використовуючи налаштований диск зберігання:
return new Response($pkpass, 200, [
'Content-Transfer-Encoding' => 'binary',
'Content-Description' => 'File Transfer',
'Content-Disposition' => 'attachment; filename="pass.pkpass"',
'Content-length' => strlen($pkpass),
'Content-Type' => PassGenerator::getPassMimeType(),
'Pragma' => 'no-cache',
]);
Детальнішу інформацію про цей пакет, повні інструкції зі встановлення та код можна знайти на GitHub.
Зауважте, що пакет Byte5 є форком thenextweb/passgenerator, який більше не підтримується, відповідно до цієї проблеми.