• Resolved Dustin L.

    (@bigbugsy)


    We use a 3rd party deposits plugin. Our customers pay an initial deposit then return to the site at a later date to pay their 2nd / final payment. They checkout as guests.

    We’ve had this system in place for years with no problems.

    Recently, WooCommerce has started requiring customers to login or verify their email address to access the payment page to pay their 2nd payment.

    This has caused a lot of support issues for us. Customers A) don’t have a login but think they might and get frustrated when they can’t login, B) don’t remember which email address they used, and C) enter their email address with different capitalization which (annoyingly) causes the verification to fail.

    Ideally, we could completely disable this feature.

    I’ve run across this code:

    add_filter( 'woocommerce_order_email_verification_required', '__return_false' );

    …which removes the email verification requirement for the initial page load of the checkout page.

    Unfortunately, if the customer’s payment fails they still get redirected to the form requiring them to login or verify their email address.

    Even worse, with our theme the decline error message is never shown to the customer due to the redirect. So the customer is in the dark about what is even happening.

    Is there any way to completely disable this email verification “feature”?

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Support Shameem R. a11n

    (@shameemreza)

    Hi @bigbugsy

    The email verification feature is designed to ensure the security and privacy of transactions on your website. However, I understand that in your specific scenario, it’s causing some inconvenience to your customers.

    The code snippet you’ve found is indeed used to disable the email verification on the initial checkout page load. The issue you’re facing when a customer’s payment fails, however, seems to be a different one.

    Could you try using the User Verification plugin to disable email verification as a workaround?

    If this doesn’t work, can you do a conflict test? You can find a detailed explanation of conducting a conflict test here.

    I hope this helps. Do let us know how it goes.

    Thanks!

    Thread Starter Dustin L.

    (@bigbugsy)

    Thank you for the reply.

    The User Verification plugin has no impact in my case. This isn’t surprising because all of our customers are guests. None have user accounts.

    I created a test environment to reproduce the problem.

    I’m using the latest version of WordPress, Twenty Twenty-Three, WooCommerce, and WooCommerce Stripe Payment Gateway with test keys.

    I created a test product and, as an admin, created a test order for this product. The status of the order is Pending payment.

    Wait over 10 minutes before testing to rule out the 10-minute grace period.

    I’ve identified three issues. This first two are change requests, the 3rd seems to be a bug.

    #1:

    In an incognito window, load the Customer payment page.

    The email address used for verification must exactly match the billing email address. For example, if the customer checked out with [email protected], they must enter exactly [email protected] to verify their email. The following entries will fail validation:

    Ideally, the verification would be case-insensitive.

    #2:

    Correctly verify the customer email address to access the Pay for order page.

    Enter a test credit card number that will force a decline (Stripe docs).

    A “card was declined” notice appears on the screen and the customer is forced to verify their email address again.

    Considering the customer has already been verified, forcing them to verify again is a poor user experience.

    #3:

    Implement the disable filter using the Code Snippets plugin or similar.

    add_filter( 'woocommerce_order_email_verification_required', '__return_false' );

    Close the old incognito window and open a new one. Load the customer payment page.

    The Pay for order page loads. No email verification is required.

    Enter a test credit card number that will force a decline (Stripe docs).

    A “card was declined” notice appears on the screen and the customer is forced to verify their email address – even though this was disabled using the filter.

    Thanks for your help.

    Thread Starter Dustin L.

    (@bigbugsy)

    By the way, after reading about the 10-minute grace period, it looks like you can modify the code to avoid having to wait 10 minutes during testing.

    1. You don’t have to wait 10 minutes when testing, as you can temporarily modify this line of code and replace 10 * MINUTE_IN_SECONDS with 0 to simulate having waited 10 minutes. Or, if you don’t like to touch core code, you could setup the following snippet in a suitable place (such as wp-content/mu-plugins/test-39191.php) then remove after testing:

    <?php add_filter( ‘woocommerce_order_email_verification_grace_period’, ‘__return_zero’ );

    https://github.com/woocommerce/woocommerce/pull/39191

    Hi there @bigbugsy ??

    Thank you so much for reaching back, with further details on this!

    I can see that an issue has been submitted about this, over on GitHub (#39750).

    I’d recommend subscribing there, in order to receive all the updates on its progress.

    I hope this is helpful! Please let us know if you have any further questions or concerns.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Problems with email verification for orders’ is closed to new replies.