Licensing and the Lite upgrade

Updated

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):

ConstantDefaultPurpose
WPINTERFACE_PADDLE_PRO_STORE_URLhttps://wpinterface.com/Software Licensing store. Filter: wpinterface_paddle_license_store_url.
WPINTERFACE_PADDLE_PRO_ITEM_ID71206The 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_NAMEWPInterface Checkout with Paddle for Easy Digital Downloads ProProduct name sent to the store, and the base of EDD’s option names.
WPINTERFACE_PADDLE_PRO_ACCOUNT_URL, …_SUPPORT_URL, …_DOCS_URLwpinterface.com pagesLinks 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_version option exists) and no checkout style was saved, stores wpinterface_paddle_checkout_mode = overlay.
  • Sets wpinterface_paddle_pro_welcome.
  • Deletes Lite’s wpinterface_paddle_needs_pro_subscriptions flag.
  • 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 for Settings::webhook_url() and PATCHes in any missing EVENTS; 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.

Was this page helpful?