Licensing and updates
Licensing uses EDD’s own extension license handler, EDD_License, pointed at the WPInterface store, which runs EDD Software Licensing. This gives:
- the key field in Downloads → Settings → Licenses, with AJAX activate, deactivate and delete;
- a weekly
check_license; - updates through EDD’s bundled
EDD_SL_Plugin_Updater; - the “View version details” popup.
Constants (main plugin file; each can be pre-defined in wp-config.php):
| Constant | Default | Purpose |
|---|---|---|
WPINTERFACE_PADDLE_PRO_STORE_URL | https://wpinterface.com/ | Software Licensing store. Filter: wpinterface_paddle_license_store_url. |
WPINTERFACE_PADDLE_PRO_ITEM_ID | 71206 | The Pro download’s ID on wpinterface.com. Licenses and updates are matched by this ID, so the download title can change freely. |
WPINTERFACE_PADDLE_PRO_ITEM_NAME | WPInterface Checkout with Paddle for Easy Digital Downloads Pro | Product name sent to the store, and the base of EDD’s option names. |
WPINTERFACE_PADDLE_PRO_ACCOUNT_URL, …_SUPPORT_URL, …_DOCS_URL | wpinterface.com pages | Links on the Downloads → Paddle page |
License::status() returns valid, missing (no key entered), inactive (key saved but never activated), or a Software Licensing error such as expired, deactivated, site_inactive, no_activations_left, disabled or invalid. License::status_message() turns these into plain language. No feature checks the license; it only controls updates and support (GPL-friendly).
Testing against a local store
EDD’s updater refuses to query its own home_url(), so a store on the same site must use a different URL. In an mu-plugin, define WPINTERFACE_PADDLE_PRO_STORE_URL as http://your-site.local/index.php and WPINTERFACE_PADDLE_PRO_ITEM_ID as the local download’s ID.
Moving from Lite to Pro
Lite (wpinterface-paddle-for-edd) and Pro share the gateway ID paddle, every wpinterface_paddle_* setting, every _wpinterface_paddle_* meta key and the wpinterface-paddle/v1/webhook route. Lite refuses to boot when WPINTERFACE_PADDLE_PRO_VERSION is defined.
On activation (Lite_Upgrade::on_activation):
- Deactivates Lite.
- If the store used Lite (Lite active, or the
wpinterface_paddle_lite_versionoption exists) and no checkout style was saved, storeswpinterface_paddle_checkout_mode = overlay. - Sets
wpinterface_paddle_pro_welcome. - Deletes Lite’s
wpinterface_paddle_needs_pro_subscriptionsflag. - Resets
wpinterface_paddle_webhook_events.
On admin_init:
- Deactivates Lite if it gets activated alongside Pro.
- Calls
Billing_Driver::ensure_webhook_events()once per environment that has an API key and webhook secret. This finds the notification destination forSettings::webhook_url()and PATCHes in any missingEVENTS; the secret is unchanged. Throttled to one attempt an hour after a failure. “Set up webhook” also records the environment as synced.
Renewals during Lite
Lite answers Pro-era subscription webhooks with HTTP 500, so Paddle retries them and Pro records them after the upgrade.