Today, we’re announcing the beta of our initial wave of support for the Strong Customer Authentication (or SCA for short). This initial beta consists of support for the Stripe payment gateway.
Update: Stripe Gateway 2.7 and Recurring Payments 2.9 are officially released, offering SCA Support for Stripe payments.
I’m pleased to let you know that the following extensions have betas available that enable accepting payments that require SCA:
Stripe Gateway 2.7 Beta 1
Recurring Payments 2.9 Beta 1
So without further delay, here are the big changes coming in each of these releases
How to test beta releases
In order to help ensure the final release of these extensions go as smoothly as possible, we need your help testing this beta version.
Testing the beta is very simple. Simply log into your testing site that has Easy Digital Downloads with Stripe and/or Recurring Payments installed and activated and navigate to Downloads → Tools → Beta Versions and check the box for the extensions you want to allow beta testing for.
The beta update will now be available as a standard WordPress plugin update from your Plugins page, though it could take up to a few hours for the notification to appear. For further details you can view this documentation about enabling betas for extensions.
Note: we do not recommend you test the beta on a live site, please do all testing on a staging site. While we do our very best to not cause issues during updates, sometimes issues do slip through unnoticed, so having a staging / testing site is very important.
Stripe 2.7 Beta 1
SCA and PaymentIntents support
We’ve refactored our Stripe integration from the ground up to support this new platform that not only supports the Payment Intents API, but also complies with the SCA regulations. When required by their bank, the customer will be prompted with the SCA/3DS challenge prior to completing their purchase:
An example of a test payment made with the SCA challenge.
Inline card errors with Stripe
You’ve been asking for it, and finally, with the help of the Stripe Elements platform, customers who pay via credit card with Stripe will see inline card error messages that do not require a page refresh.
Stripe Elements will now show card based errors inline, without a page refresh.
Important: If you’ve customized your checkout page to make changes to the Stripe card fields, please read the following paragraphs.
You may have noticed that the credit card fields have been changed quite a bit. Instead of three form fields for the card number, expiration date, and CVV, we have what looks like one form field. This is part of Stripe Elements, and is necessary for Stripe to work now.
If you have customized your checkout page, and unhooked our card fields with something like the following, you will need to remove this customization for the checkout and card management system to continue working.
remove_action( 'edd_stripe_new_card_form', 'edd_stripe_new_card_form' );
Stripe Checkout modal deprecation
As we covered in our initial post about SCA, Stripe has removed the ability to use the Stripe Checkout modal in this version of their API. While they do have a replacement Checkout system, it is no longer a modal and requires the customer to be redirected off your store in order to complete their purchase. Because this is such a large change in behavior, we chose not to simply move to the new Checkout, and instead redirect to the Easy Digital Downloads checkout page instead. In the future we are looking into a solution to reintroduce a ‘checkout-like’ feature that will give you the ability to use a modal once again.
PHP version requirements
Due to all the amazing new functionality that we’ve been provided via the Stripe v3 library, PaymentIntents, and the Elements checkout fields, it was necessary that we bump our PHP version requirement to PHP 5.6 or greater.
Other notable changes
Users now have the ability to remove all cards from their account as well as add a new card, when they have no cards associated with their account.
Store owners can now choose to only load the Stripe Javascript library when it is needed.
A much improved experience with the billing address form.
Updated to version 2019-08-14 of the Stripe API
Recurring Payments 2.9 Beta 1
As with Stripe, we needed to make some significant changes to our Recurring Payments extension to support SCA and the new Stripe API versions.
Mixed cart support for Stripe
Due to some changes in the way that Stripe payments are created for subscription purchases, it is now possible for customers who choose to checkout using Stripe to purchase a subscription and non-subscription product at the same time. For the mean-time, this feature is limited to when using Stripe at checkout.
Other notable changes
Most of the changes for this release are ‘behind-the-scenes’ changes. There are some other highlights that will likely be of interest for you though.
Ability to change the text for the link to cancel a subscription.
Admins can now configure and receive an email when a customer cancels a subscription.
Fixed a bug that caused PayPal Pro/Express to sometimes handle each other’s IPN calls.
Added a checkbox to allow cancelling a subscription when refunding a payment.
Admins can now change the price ID a subscription is associated with, when the product has variable prices.
So what about other gateways?
PayPal Pro
We’ve recently started building out support for PayPal Pro, but at this time we do not have a working integration with Cardinal Commerce, the vendor we’ve chosen to work with. We eagerly await their continued support in helping us become SCA compliant with PayPal Pro.
Braintree
We have added Braintree to our list of gateways to support in the near future. At this time we are researching what it will take to get Braintree SCA support into Easy Digital Downloads, and will communicate when if and when it is ready.