Event Payment Plugin for WooCommerce

Source

First-party — auto-fetched from its GitHub release (private repo)

Purpose

Bridges WooCommerce checkout and the EMS Event & Membership API

Special infra

None (API integration; no writable filesystem paths)

This is the WordPress side of the EMS payment integration: it creates a WooCommerce order for a new registration, and calls the EMS API back when the order status changes (e.g. on successful payment). It requires WooCommerce to be active. For the end-to-end design see WordPress Payment Integration.

Install — auto-fetched release

Unlike the licensed artefacts, this plugin is ours, so it does not need hand-staging. The build fetches the pinned GitHub release asset (event-payment-plugin-<ver>.zip, whose root folder is event-payment-plugin/) with gh and bakes it in:

# scripts/build-image.sh — before the docker build
gh release download "${EVENT_PAYMENT_PLUGIN_VERSION}" \
  -R <org>/event-payment-plugin-woocommerce --pattern '*.zip' --dir packages
unzip -q packages/event-payment-plugin-*.zip -d web/app/plugins   # -> web/app/plugins/event-payment-plugin

Pin EVENT_PAYMENT_PLUGIN_VERSION to a release tag for reproducibility. To upgrade, bump the version and rebuild the image (the immutable-update path — see Immutable WordPress architecture). It is activated in bootstrap after WooCommerce, since it depends on it.

Configuration — Event API settings

Settings live under WooCommerce → Event API Settings and are stored as plain epa_* WordPress options. The environment-specific ones can be seeded declaratively in bootstrap from the Secret/ConfigMap (guarded — set them there, or fill them in the admin):

Option Env (bootstrap) Meaning

epa_admin_api_url

EPA_ADMIN_API_URL

EMS admin-service API base the plugin calls for order updates.

epa_admin_api_key

EPA_ADMIN_API_KEY (secret)

API key authenticating those calls.

epa_entry_portal_url

EPA_ENTRY_PORTAL_URL

Registration portal URL users are sent to when entering an event.

epa_default_prod_id

EPA_DEFAULT_PROD_ID

WooCommerce product used when a cart arrives without a product id.

epa_redirect_url

EPA_REDIRECT_URL

Post-action redirect target.

epa_callback_api_url / epa_callback_api_key

— (auto)

The plugin’s own inbound callback endpoint + key (generated by the plugin, not set by hand). The registration portal POSTs orders to \/wp-json/payment-api/v1/order/event/create/.

epa_enable_logging, epa_strict_data_checks

— (admin)

Diagnostics / validation toggles.

Secrets (epa_admin_api_key) come from the Kubernetes Secret; non-secret URLs/ids from the ConfigMap. Because they are stored as WordPress options in the database, they persist across pod restarts once set.

No special storage

The plugin talks to an HTTP API and writes diagnostics to the WordPress debug log / order notes — it has no writable wp-content paths, so it needs no PVC or emptyDir.