nowo-tech / wallet-qr-bundle
Symfony bundle to generate Google Wallet and Apple Wallet save links with QR codes for Android and iOS.
Package info
github.com/nowo-tech/WalletQRBundle
Type:symfony-bundle
pkg:composer/nowo-tech/wallet-qr-bundle
Fund package maintenance!
v2.1.2
2026-07-13 10:54 UTC
Requires
- php: >=8.2 <8.6
- endroid/qr-code: ^6.0
- firebase/php-jwt: ^7.0
- symfony/config: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- symfony/framework-bundle: ^7.0 || ^8.0
- symfony/http-kernel: ^7.0 || ^8.0
- symfony/twig-bundle: ^7.0 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^11.0
- rector/rector: ^2.0
- symfony/yaml: ^7.0 || ^8.0
README
β Found this useful? Give it a star on GitHub! It helps us maintain and improve the project.
Symfony bundle to generate Google Wallet (Android) and Apple Wallet (iOS) save links with QR codes.
π Requires PHP 8.2+ and Symfony 7.x or 8.x
Features
- β Google Wallet Add to Google Wallet save links (signed JWT)
- β
Apple Wallet
.pkpassdownload URL builder for iOS QR codes - β PNG QR codes as data URIs (Twig helpers included)
- β Pair generation for Android + iOS in one call
- β
Symfony configuration under
nowo_wallet_qr - β
URL validation for custom QR links (
QrUrlPolicy; optional host allowlist) - β Demo apps for Symfony 7 and 8 (FrankenPHP)
Quick start
composer require nowo-tech/wallet-qr-bundle endroid/qr-code firebase/php-jwt
# config/packages/nowo_wallet_qr.yaml nowo_wallet_qr: google_wallet: enabled: true issuer_id: '%env(GOOGLE_WALLET_ISSUER_ID)%' service_account_json: '%kernel.project_dir%/config/google-wallet-service-account.json' origins: ['www.example.com'] apple_wallet: enabled: true pass_download_url_pattern: 'https://www.example.com/wallet/{pass_id}.pkpass' qr_code: size: 300
use Nowo\WalletQrBundle\Model\GoogleWalletPassReference; use Nowo\WalletQrBundle\Service\WalletQrService; $reference = GoogleWalletPassReference::withIssuer( $issuerId, objectSuffix: 'MEMBER_001', classSuffix: 'MEMBER_CLASS', ); $pair = $walletQrService->createWalletQrPair($reference, applePassId: 'MEMBER_001'); // $pair['android']->qrCodeDataUri, $pair['ios']->qrCodeDataUri
Documentation
- Installation
- Configuration
- Usage
- Contributing
- Changelog
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
Additional documentation
Development
make up
make test
make test-coverage
make release-check
Demos: make -C demo/symfony8 up
Tests and coverage
| Language | Coverage |
|---|---|
| PHP | ~100% lines |
Run make test-coverage for the detailed report.
License
MIT β see LICENSE.