Looking to hire Laravel developers? Try LaraJobs

wallet-laravel maintained by laulamanapps

Description
Platform-agnostic wallet pass generation for your Laravel application
Author
Last update
2026/07/08 10:00 (dev-main)
License
Links
Downloads
0

Comments
comments powered by Disqus

Wallet Laravel

This package provides Laravel integration for the LauLamanApps Wallet SDK: platform-agnostic wallet pass generation for your Laravel application. Describe a pass once and generate it for Apple Wallet (.pkpass files), Google Wallet ("Save to Google Wallet" links) or any custom platform.

Requirements

  • PHP 8.1+
  • Laravel 11.x, 12.x or 13.x

Installation

composer require laulamanapps/wallet-laravel

The service provider (LauLamanApps\WalletLaravel\WalletServiceProvider) is registered automatically via Laravel package auto-discovery. It registers LauLamanApps\Wallet\Wallet as a singleton (also available under the wallet container alias).

To generate passes for a specific platform, install the matching bridge packages:

# Apple Wallet: binds the Compiler the Apple bridge needs
composer require laulamanapps/apple-passbook laulamanapps/apple-passbook-laravel

# Google Wallet: binds the SaveUrlFactory the Google bridge needs
composer require laulamanapps/google-wallet laulamanapps/google-wallet-laravel

Run Tests

composer install
./bin/phpunit

Configuration

Publish the config file:

php artisan vendor:publish --tag=wallet-config

This creates config/wallet.php:

Key Default Description
apple.enabled env('WALLET_APPLE_ENABLED', false) Register the Apple bridge (.pkpass files)
google.enabled env('WALLET_GOOGLE_ENABLED', false) Register the Google bridge ("Save to Google Wallet" links)
google.issuer_id env('GOOGLE_WALLET_ISSUER_ID') Your Google Wallet issuer id (required when Google is enabled)
google.class_suffix null Optional class suffix; null derives it from the pass type

Example .env:

WALLET_APPLE_ENABLED=true
WALLET_GOOGLE_ENABLED=true
GOOGLE_WALLET_ISSUER_ID=3388000000012345678

Usage

Build a platform-agnostic Pass and let the Wallet generate the platform-specific result:

<?php

use LauLamanApps\Wallet\MetaData\Barcode;
use LauLamanApps\Wallet\MetaData\BarcodeFormat;
use LauLamanApps\Wallet\Pass;
use LauLamanApps\Wallet\PassType;
use LauLamanApps\Wallet\Wallet;

class TicketController
{
    public function download(Wallet $wallet)
    {
        $pass = new Pass('4de81ef8', PassType::EventTicket, 'LauLaman Apps', 'Concert ticket');
        $pass->addBarcode(new Barcode(BarcodeFormat::Qr, '4de81ef8'));

        // Generate for a single platform
        $generated = $wallet->generate('apple', $pass);

        if ($generated->isFile()) {
            return response($generated->getContent(), 200, [
                'Content-Type' => $generated->getMimeType(),
                'Content-Disposition' => 'attachment; filename="' . $generated->getFilename() . '"',
            ]);
        }

        return redirect()->away($generated->getUrl());
    }
}

Or generate the pass for every enabled platform at once:

foreach ($wallet->generateForAllPlatforms($pass) as $platform => $generated) {
    // $generated->isFile() ? $generated->getContent() : $generated->getUrl()
}

Custom platforms

Any service tagged wallet.pass_generator that implements LauLamanApps\Wallet\PassGenerator is registered on the Wallet automatically. In one of your application's service providers:

<?php

use LauLamanApps\WalletLaravel\WalletServiceProvider;

public function register(): void
{
    $this->app->tag(AcmePassGenerator::class, WalletServiceProvider::PASS_GENERATOR_TAG);
    // or: $this->app->tag(AcmePassGenerator::class, 'wallet.pass_generator');
}
$wallet->generate('acme', $pass);

Credits

This package was created by Laurens Laman.

License

This package is licensed under the MIT License.