WP Manifestindependent plugin directory
manifest / events / tickera-wallet-passes

Tickera Wallet Passes

WordPress plugin: Apple Wallet and Google Wallet pass generation for Tickera event tickets

by GitHub Copilot guided by Jens Hoevelmann · github.com/tripmaster7/tickera-wallet-passes · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/tripmaster7/tickera-wallet-passes/archive/refs/heads/master.zip

WordPress plugin that integrates with Tickera to generate Apple Wallet (.pkpass) and Google Wallet passes for event tickets.

Features

  • Apple Wallet (.pkpass) — generates downloadable .pkpass files signed with your Apple Developer certificate
  • Google Wallet — generates "Save to Google Wallet" links using the Google Wallet API
  • Barcode/QR Code — includes the correct ticket barcode from Tickera
  • Event Logo — uses the configured event logo (or a default fallback logo)
  • Attendee Name — displays the full name of the ticket holder
  • Membership Number — includes a configurable custom field for membership numbers
  • Custom Field — maps any additional Tickera checkout form field to the pass
  • Automatic Integration — buttons appear on order confirmation, order details pages, and in confirmation emails
  • Shortcodes[tcwp_wallet_passes] and [tcwp_order_passes] for manual placement

Requirements

Requirement Details
WordPress 5.8+
PHP 7.4+
PHP Extensions OpenSSL, ZipArchive, GD (recommended)
Tickera 3.x+ (must be installed and active)

For Apple Wallet

  • Apple Developer account ($99/year)
  • Pass Type ID Certificate (.p12 or .pem)
  • Apple WWDR intermediate certificate

For Google Wallet

  • Google Cloud project with Google Wallet API enabled
  • Service account JSON key file
  • Issuer ID from Google Pay & Wallet Console

Installation

  1. Upload the tickera-wallet-passes folder to /wp-content/plugins/
  2. Activate the plugin via Plugins in WordPress admin
  3. Navigate to Tickera → Wallet Passes to configure

Configuration

Apple Wallet Setup

  1. Visit Apple Developer Portal → Certificates, Identifiers & Profiles
  2. Create a Pass Type ID (e.g., pass.com.yourorg.events)
  3. Create a certificate for that Pass Type ID and export as .p12
  4. Download the Apple WWDR Certificate (G4)AppleWWDRCAG4.cer, convert to PEM:
    openssl x509 -inform DER -in AppleWWDRCAG4.cer -out AppleWWDRCAG4.pem
  5. Place both files in the certificates/ folder of the plugin
  6. Fill in settings: Pass Type ID, Team ID, certificate filename, password, WWDR filename

Google Wallet Setup

  1. Go to Google Pay & Wallet Console
  2. Create an Issuer account and note your Issuer ID
  3. In Google Cloud Console, enable the Google Wallet API
  4. Create a Service Account and download the JSON key
  5. Grant the service account access in the Google Wallet Console
  6. Place the JSON key file in the certificates/ folder
  7. Fill in settings: Issuer ID, JSON filename

Custom Field Mapping

The plugin can display additional data fields on wallet passes:

  • Membership Number Field — enter the meta key/form field slug from Tickera
  • Custom Field — any other Tickera checkout form field slug + label

Fields are resolved in this order:

  1. Ticket instance post meta (attendee-level)
  2. Order tc_cart_infoowner_data (checkout form data)
  3. Order tc_cart_infobuyer_data (buyer form data)
  4. WordPress user meta (for registered users)

Adding Custom Fields to Tickera Checkout

In your theme's functions.php or a custom plugin:

// Add a membership number field to the attendee (owner) checkout form
add_filter('tc_owner_info_fields', function($fields, $ticket_type_id) {
    $fields[] = array(
        'field_name'    => 'membership_number',
        'field_title'   => 'Membership Number',
        'field_type'    => 'text',
        'post_field_type' => 'post_meta',
        'required'      => false,
        'placeholder'   => 'Enter your membership number',
    );
    return $fields;
}, 10, 2);

Then set membership_number as the Membership Number Field slug in the plugin settings.

Shortcodes

Single Ticket Pass Buttons

[tcwp_wallet_passes ticket_instance_id="123"]

All Passes for an Order

[tcwp_order_passes order_id="456"]

If order_id is omitted, it reads from the ?order_id= or ?order= URL parameter.

Hooks & Filters

Filters

Filter Description Parameters
tcwp_ticket_data Modify ticket data before pass generation $data, $ticket_instance_id
tcwp_apple_pass_json Modify the Apple pass.json structure $pass, $ticket_data
tcwp_google_class_payload Modify Google Wallet class payload $class, $ticket_data
tcwp_google_object_payload Modify Google Wallet object payload $object, $ticket_data
tcwp_google_pass_url Modify the final Google Wallet save URL $url, $ticket_data

Actions

Action Description Parameters
tcwp_order_created Fired when Tickera creates an order $order_id, $status, $cart_contents, $cart_info, $payment_info

Example: Add Custom Data to a Pass

add_filter('tcwp_ticket_data', function($data, $ticket_instance_id) {
    // Add a VIP badge indicator
    $data['custom_field_label'] = 'Status';
    $data['custom_field_value'] = 'VIP';
    return $data;
}, 10, 2);

Example: Customize Apple Wallet Pass Colors Per Event

add_filter('tcwp_apple_pass_json', function($pass, $ticket_data) {
    if ($ticket_data['event_id'] == 123) {
        $pass['backgroundColor'] = '#FF0000';
        $pass['foregroundColor'] = '#FFFFFF';
    }
    return $pass;
}, 10, 2);

File Structure

tickera-wallet-passes/
├── tickera-wallet-passes.php    # Main plugin file
├── admin/
│   └── class-tcwp-admin.php     # Admin settings page
├── includes/
│   ├── class-tcwp-helper.php    # Data extraction & utilities
│   ├── class-tcwp-apple-pass.php  # Apple Wallet .pkpass generator
│   ├── class-tcwp-google-pass.php # Google Wallet pass generator
│   └── class-tcwp-frontend.php  # Frontend buttons & hooks
├── assets/
│   ├── css/
│   │   ├── admin.css
│   │   └── front.css
│   ├── js/
│   │   └── admin.js
│   └── images/
├── certificates/                # Place certificates here (protected)
│   ├── .htaccess
│   └── index.php
├── tmp/                         # Temp files (auto-cleaned)
│   ├── .htaccess
│   └── index.php
├── languages/
└── README.md

Security Notes

  • Certificate files in certificates/ are protected by .htaccess rules
  • Temporary files are auto-cleaned after 1 hour
  • All download URLs use WordPress nonces for CSRF protection
  • Only paid orders (order_paid status) can generate passes
  • Certificate passwords are stored in the WordPress options table (consider using wp-config.php constants for production)

Troubleshooting

Issue Solution
"PHP OpenSSL extension is required" Enable ext-openssl in your PHP configuration
"Could not parse .p12 certificate" Verify the certificate password is correct
"Apple WWDR certificate not found" Download from Apple and convert to PEM format
"Google service account JSON file not found" Ensure the file is in /certificates/ and the filename matches
Pass doesn't appear in Apple Wallet Verify Pass Type ID and Team ID match your Apple Developer account
Images missing on pass Ensure PHP GD extension is loaded; check event has a logo configured

License

GPLv2 or later