I’ve been working with PayPal’s APIs for over six years and I still don’t completely understand what the fuck is going on over there. It seems every other year they have a new API and not once (to my knowledge) have they deprecated something useless. Just look at the “Classic APIs Product Page“. They even re-branded a while ago to make it simpler, Standard and Pro; only it caused more confusion because when we developers look at the docs the terminology is still out of date. I guess keeping a bazillion different docs for a single API up-to-date across hundreds of different sub domains of paypal.com isn’t easy to do…sigh.
Before you get too far and start wondering [this isn’t a comprehensive post about how I can really figure out which API to use], it isn’t a comprehensive post that will help everyone. Instead the point of this article is to help developers specifically looking to use PayPal for basic payments and subscriptions with one basic rule…
Why? There are a lot, seriously a lot but the main reason is the deficiency of PayPal IPN.
PayPal IPN can’t be trusted and if you’re relying on it to validate a purchase you’re going to have some unhappy customers. 2
If you’re handling subscriptions it’s even worse because there’s no way to validate the payment profile from a subscription payment made via Payment Standard. You need to rely on IPN 100% of the time to update the status of a subscription, which can easily cause a subscription to inadvertently expire 3, IPN issues can also cause a subscription to continue after it’s been cancelled 4.
Instead use PayPal Express Checkout.
With EC you can validate a purchase, check payment status, capture a pre-approved payment, and manage a recurring payment profile including checking the status. All you need to do is make a single API call with the transaction id, there’s nothing special, nor is it much more complicated to develop.
There’s are lot of misconceptions with Express checkout. One being that it requires that the PayPal merchant pay for PayPal Pro, this is wrong. The merchant will only need Pro for onsite CC processing.
Another is that Express Checkout requires the customer to confirm their payment on your site before processing. This is the feared “extra step”, the extra step that would cause people to reconsider their purchase, the extra step that someone might not notice because they thought they were done. Sorry but I don’t like these excuses one bit.
Extra Step: If the customer is going to reconsider their purchase and leave the checkout process without ever coming back because of the final confirmation page is absurd. Yes, it’s likely to happen; do you want these customers anyway? Highly unlikely because they’re the ones that will ask for a refund a day later after causing hours of support. I want customers that truly want to purchase the product, you should to.
UX: You should be able to easily signify that the customer needs to finalize the payment by submitting the confirmation, if you can’t there are other areas of your site that need your attention. I “know of some” that have contemplated doing an auto submit after X seconds or just skipping the confirmation and eschewing the PP policy, “they” never did go that route because the numbers didn’t show a drop the purchase funnel.
Falsities: I’ve heard that EC limits payment methods, something to the effect that the customer couldn’t use a credit card, which is nonsense. The only difference that I’ve noticed is that the checkout pages at PayPal use their new design…which is great.
Anyone using PayPal Standard over Express Checkout? I’d like to know why.
- Not to be confused with the customer product of PayPal Standard. ↩
- This is why I built EC into Sprout Invoices as the default payment processor. SI doesn’t even support PayPal Standard Payments. I can’t imagine the customer support that IPN incurs on other developers distributing a product that relies on IPN, e.g. EDD or Woocommerce. ↩
- Expired account issues has been a real issue with Sprout Apps, since it uses EDD and for months ran the PayPal Standard because the EC extension didn’t support subscriptions. I’ll post about how I updated it another time. ↩
- Over at Smart eCart we had around 100 active “subscribers” with cancelled accounts because of IPN ↩