Each variation of PayPal has its own quirks, pros, and cons. Our goal is to support any gateway we integrate with to the furthest extent possible. To that end, here are some things we are actively focusing on right now to improve our integration with PayPal.
So what’s going on?
There are a few threads in our support forums and people we have been in email communication about these issues. As we make progress on these, we will share updates on the blog here and in the upgrade notes of any new PMPro version pushed out.
1. Improved synchronization of subscription cancellations.
When users cancel their membership on your WordPress/PMPro site, we attempt to use the PayPal API to cancel their subscription on the PayPal side. I write attempt there because there are cases where PayPal won’t allow us to cancel a subscription through the API.
Most notably, if a user cancels immediately after checking out, their payment is still in “pending” status and PayPal won’t allow us to cancel the subscription. Currently, we send the WP admin an email explaining that the cancelation failed and that they should manually cancel the subscription.
We will investigate ways to detect why subscriptions aren’t canceling and if we can automatically cancel them via a series of API calls (e.g. change the status of the order and THEN cancel the subscription) or schedule the cancelation for later. We will also work to improve the readability and usability of notifications that are sent to emails in edge cases.
2. Improved handling of failed payments.
There are a few ways we can better handle payments that fail on the PayPal side. First, when recurring payments fail, we are not always detecting this via the IPN calls from PayPal to inform users of the failed payment and how they can update their billing information to make the payment right.
Second, there are default settings in PayPal for how many times to retry a failed payment before canceling a recurring subscription. Each API is different, but we should expose these settings to be updated to fit your business and generally make adjusting these values as easy as it is with other gateways we support like Stripe.
Third, when users first checkout with PayPal Express, they are given immediate access to your membership area.
It can take anywhere from a few minutes to 48 hours for their initial payment to process completely.
If the initial payment fails, PayPal will eventually cancel the subscription, which will synchronize to PMPro to cancel their membership on your site. Currently PMPro is developed with the user’s checkout experience in mind and gives them immediate (or a couple minutes in the case of PayPal Standard) access to their membership.
We didn’t want users to have to wait hours or days for payment confirmation before access the site, so we made the decision to give them immediate access. However, site owners should be able to make that decision for their site. We’d like to create a way for site owners to choose whether access is given immediately or after payment confirmation is delivered via the PayPal IPN.
3. Initiating refunds from the WordPress/PMPro dashboard.
We’d like to allow admins to initiate full and partial refunds from the WordPress/PMPro dashboard, when using PayPal or any of the other gateways that support refunds through their APIs. Pretty simple.
If you would like to discuss anything around this development, please feel free to engage with us here in the comments, through the member forums, on GitHub, or in our dev chats.