LifterLMS PayPal

LifterLMS PayPal Version 3.0.0-beta.1

This prerelease version of LifterLMS PayPal will only function in Test Mode with PayPal Sandbox API Credentials.

  • PayPal Connect Onboarding is now powered by the lifterlms.com/wp-json/llms-ppc/v1/connect endpoint.
  • Fixed an i18n issue encountered due to use of incorrect decimal separators when passing an amount to the PayPal API.
  • On checkout, existing checkout errors are cleared when attempting to checkout again.
  • On PayPal account disconnect, existing access tokens are dropped from the database.
  • Raised the minimum required LifterLMS core version to 7.0.
  • Switched from using the WP Core scheduling APIs to the Action Scheduler API for various background tasks and processes.

LifterLMS PayPal Version 3.0.0-alpha.3

  • New minimum LifterLMS core version requirement: 7.0.0-alpha.3.
  • Changed the invoice_prefix CP gateway option to site_prefix.
  • Improved PayPal plan creation requests to automatically create the related product as needed.
  • Added product (course/membership) bulk sync admin tool.
  • Added an API for syncing recurring orders statuses to the related PayPal subscription.
  • Added a success message when onboarding is completed.
  • Fixed an issue causing PayPal subscription to be inadvertently reactivated during certain scenarios when changing payment methods.
  • Fixed an undefined variable error which could be encountered when using constants/environment variables to define PayPal API credentials.
  • Added an upgrade routine used to inform pre 3.x users about plugin changes.
  • Changed the default alternative payment methods list to be an empty array.
  • Fixed issue causing the legacy gateway to display when adding or removing a coupon during checkout.
  • Fixed an issue causing the PayPal button to get “stuck” when changing gateways after adding or removing a coupon during checkout.
  • Added a webhook notification handler for recording failed subscription payments.
  • Fixed validation feedback issues encountered on iOS browsers.

LifterLMS PayPal Version 3.0.0-alpha.2

  • New minimum LifterLMS core version requirement: 7.0.0-alpha.2.
  • Fixed various translation functions using the incorrect textdomain.
  • When PayPal error responses provide specific error “details” the detailed error is returned and the generic error type is used as a fallback when details don’t exist.
  • Removed the PayPal account email option as it isn’t functionally necessary to record.
  • Improved PayPal Connect onboarding: the connected PayPal account must have a confirmed email address, subscribed to the PPCP “product”, and be eligible to receive payment before the gateway can be used at checkout.
  • Added PayPal button customization settings.
  • Fixed an issue encountered when attempting to perform two or more partial refunds on a single PayPal transaction.
  • Added webhook handling for PayPal subscription change events and refunds for recurring payment transactions originating from the PayPal account dashboard.

LifterLMS PayPal Version 1.2.0

  • Added secure key compatibility to allow credential definition via constants.
  • Added filter llms_paypal_disable_reference_transactions to allow explicit disabling of ref. transactions.
  • Fixed issue causing recurring transactions to show an empty description field in PayPal-generated email receipts.
  • Use the recurring description for manual recurring payments instead of the one-time payment language.
  • Fixed a number of instances of the incorrect text domain being used for translation functions.

LifterLMS PayPal Version 2.0.0-beta.1

This is the initial (relatively) stable beta release of LifterLMS PayPal 2.0. There are a small number of known issues yet to be resolved. We urge against testing this release in production. Please see our beta testing guide for more information.

The PayPal “REST” Gateway

  • A completely new version of LifterLMS PayPal utilizing the most recent PayPal APIs and features.
  • Utilizes PayPal Checkout via Smart Payment Buttons.
  • Your API Credentials (Client ID and Client Secret) can be found by following these steps:
  • Look under “REST API apps” at https://developer.paypal.com/docs/classic/lifecycle/sb_credentials/.
  • If testing in Sandbox mode (recommended) you’ll also want to create sandbox buyer and seller accounts: https://developer.paypal.com/docs/classic/lifecycle/sb_about-accounts/
  • The charging and scheduling of recurring payments is managed via the PayPal Billing Agreements API and requires a webhook listener to properly function.
  • This webhook is automatically installed when valid API credentials are added via the gateway’s settings panel.
  • If you’re working on a local development environment you will not be able to receive incoming webhooks and your test subscriptions will never record transactions nor will they cancel enrollment during cancellations from within PayPal.

The “Legacy” PayPal Gateway

  • Renames the existing NVP/Reference transaction-powered PayPal (1.x) gateway “PayPal (Legacy)”
  • For first-time users this gateway is hidden and not available:
  • To enable the legacy gateway visit LifterLMS -> Status -> Tools & Utilities and click the “Enable Legacy Gateway” button.
  • To disable the legacy gateway repeat the above process clicking “Disable Legacy Gateway” instead.
  • Disabling the legacy gateway will have NO EFFECT on existing one-time payments made via the gateway. However active recurring payments made through reference transactions will be unable to automatically recharge.
  • The gateway itself is marked as deprecated. New users should avoid using the legacy gateway and instead rely on the new REST gateway introduced in this version.

Deprecated Classes

The following classes have been marked as deprecated and will be removed from LifterLMS PayPal in the next major release.

  • LLMS_PayPal_Request
  • LLMS_Payment_Gateway_PayPal

Existing Known Issues

  • It is not possible to refund a transaction via the LifterLMS Order (coming in beta.2).
  • Due to an issue in the PayPal REST API, cancelled billing agreements do not send webhook notifications resulting in students remaining enrolled in the related course / membership when an agreement is cancelled from within PayPal. We’ll be overcomming this by running automatic scheduled checks 24 & 48 hours after payment is due to check on the status of expected recurring payments (coming in beta.2).

How to help test?

  • Install LifterLMS PayPal in a non-production environment and start using it.
  • If you find any issues or have any questions let us know by opening an issue on the official LifterLMS GitHub, opening a new support request, or posting in #developers on the LifterLMS Slack community.
  • If you install this in production and we will not provide you with emergency or urgent support.
  • Again: Don’t install this in production.