<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: exeptionalpeople</title>
    <description>The latest articles on DEV Community by exeptionalpeople (@exeptionalpeople_).</description>
    <link>https://dev.to/exeptionalpeople_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4118403%2Fe04f9f20-a8ef-4877-b197-dd47069b4e2c.png</url>
      <title>DEV Community: exeptionalpeople</title>
      <link>https://dev.to/exeptionalpeople_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/exeptionalpeople_"/>
    <language>en</language>
    <item>
      <title>Apple Pay or Google Pay silently failing on WooCommerce? Check these hidden problems</title>
      <dc:creator>exeptionalpeople</dc:creator>
      <pubDate>Thu, 10 Sep 2026 02:53:56 +0000</pubDate>
      <link>https://dev.to/exeptionalpeople_/apple-pay-or-google-pay-silently-failing-on-woocommerce-check-these-hidden-problems-28kl</link>
      <guid>https://dev.to/exeptionalpeople_/apple-pay-or-google-pay-silently-failing-on-woocommerce-check-these-hidden-problems-28kl</guid>
      <description>&lt;p&gt;Apple Pay and Google Pay have a nasty failure mode: when something breaks, the problem may not be obvious from your normal WooCommerce logs.&lt;/p&gt;

&lt;p&gt;A shopper can tap a wallet button, attempt payment, and still fail to complete an order without leaving you with an obvious explanation of what went wrong.&lt;/p&gt;

&lt;p&gt;From the store owner's side, the symptom may simply look like slightly worse conversion.&lt;/p&gt;

&lt;p&gt;I went through public WooCommerce support threads for two major gateway plugins — woocommerce-paypal-payments and woocommerce-gateway-stripe — looking specifically at unresolved problems.&lt;/p&gt;

&lt;p&gt;One phrase stood out:&lt;/p&gt;

&lt;p&gt;apple pay&lt;/p&gt;

&lt;p&gt;It appeared repeatedly in unresolved threads for both gateway ecosystems.&lt;/p&gt;

&lt;p&gt;That made the problem worth investigating further.&lt;/p&gt;

&lt;p&gt;Here's a short set of checks you can run in the next ten minutes.&lt;/p&gt;

&lt;p&gt;Start with the domain association file&lt;/p&gt;

&lt;p&gt;Apple Pay on the web relies on a domain association file available at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://yourstore.com/.well-known/apple-developer-merchantid-domain-association" rel="noopener noreferrer"&gt;https://yourstore.com/.well-known/apple-developer-merchantid-domain-association&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A browser isn't always the best way to test this URL because browsers automatically handle things like redirects.&lt;/p&gt;

&lt;p&gt;Instead, inspect the raw HTTP response.&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;curl -sI &lt;a href="https://yourstore.com/.well-known/apple-developer-merchantid-domain-association" rel="noopener noreferrer"&gt;https://yourstore.com/.well-known/apple-developer-merchantid-domain-association&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Things worth investigating include:&lt;/p&gt;

&lt;p&gt;301 or 302 — the request is being redirected&lt;br&gt;
404 — the association file isn't available at that path&lt;br&gt;
403 — something may be blocking access to /.well-known/&lt;br&gt;
200 returning HTML — you may be receiving a webpage instead of the expected association file&lt;/p&gt;

&lt;p&gt;Now check the www version too:&lt;/p&gt;

&lt;p&gt;curl -sI &lt;a href="https://www.yourstore.com/.well-known/apple-developer-merchantid-domain-association" rel="noopener noreferrer"&gt;https://www.yourstore.com/.well-known/apple-developer-merchantid-domain-association&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A browser can automatically follow redirects and hide what is actually happening at the original URL.&lt;/p&gt;

&lt;p&gt;If the two hosts behave differently, you may have found a configuration problem that doesn't affect every customer in the same way.&lt;/p&gt;

&lt;p&gt;I built a free checker for this&lt;/p&gt;

&lt;p&gt;Instead of running the checks manually, I built a small diagnostic script called Wallet Payment Preflight.&lt;/p&gt;

&lt;p&gt;It checks six things:&lt;/p&gt;

&lt;p&gt;DNS resolution&lt;br&gt;
Apple Pay association file availability&lt;br&gt;
apex vs www host behavior&lt;br&gt;
HTTPS certificate validity&lt;br&gt;
HTTP → HTTPS redirect behavior&lt;br&gt;
basic HTTPS reachability&lt;/p&gt;

&lt;p&gt;It's one Python file.&lt;/p&gt;

&lt;p&gt;No third-party dependencies.&lt;/p&gt;

&lt;p&gt;No signup.&lt;/p&gt;

&lt;p&gt;MIT licensed.&lt;/p&gt;

&lt;p&gt;Run it with:&lt;/p&gt;

&lt;p&gt;python walletcheck.py yourstore.com&lt;/p&gt;

&lt;p&gt;Free checker:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/exeptionalpeople/wallet-payment-preflight" rel="noopener noreferrer"&gt;https://github.com/exeptionalpeople/wallet-payment-preflight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The script returns a non-zero exit code when it detects a blocking problem, so it can also be used in CI.&lt;/p&gt;

&lt;p&gt;It only makes ordinary public network requests to the domain you give it.&lt;/p&gt;

&lt;p&gt;It does not access your WooCommerce admin, payment gateway, orders, passwords, API keys, or customer payment information.&lt;/p&gt;

&lt;p&gt;Domain configuration isn't the whole story&lt;/p&gt;

&lt;p&gt;The automated checker can only test things visible from outside the store.&lt;/p&gt;

&lt;p&gt;Some wallet-payment failures require a human check.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check whether the problem started after a payment-plugin update&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Compare the date of your last known successful Apple Pay or Google Pay order with the dates of recent gateway-plugin updates.&lt;/p&gt;

&lt;p&gt;If the timing lines up closely, the update becomes an obvious place to investigate.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check for duplicate payment SDK loading&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open your checkout page and inspect its source or developer tools.&lt;/p&gt;

&lt;p&gt;Search for your gateway's JavaScript SDK.&lt;/p&gt;

&lt;p&gt;If the same SDK is being loaded more than once, investigate which plugin, theme, or checkout customization is adding the duplicate.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check the browser console&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open checkout and press F12.&lt;/p&gt;

&lt;p&gt;Look at the Console tab.&lt;/p&gt;

&lt;p&gt;A JavaScript error elsewhere on the checkout page can interfere with payment-button initialization or checkout behavior.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test the actual customer experience&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Don't only test from your normal desktop browser while logged into WordPress.&lt;/p&gt;

&lt;p&gt;Open checkout on a phone in a private/incognito window and verify that the wallet option actually appears and behaves as expected.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reconcile gateway payments against WooCommerce orders&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the check I would not skip.&lt;/p&gt;

&lt;p&gt;Export recent payments from your payment gateway.&lt;/p&gt;

&lt;p&gt;Then export the corresponding WooCommerce orders.&lt;/p&gt;

&lt;p&gt;Match them using fields such as:&lt;/p&gt;

&lt;p&gt;transaction/reference information&lt;br&gt;
amount&lt;br&gt;
date and time&lt;br&gt;
order information where available&lt;/p&gt;

&lt;p&gt;Investigate any payment that appears in the gateway but doesn't have the corresponding WooCommerce order you expect.&lt;/p&gt;

&lt;p&gt;That is potentially more serious than a failed checkout because money may already have been captured while the store's order workflow did not complete correctly.&lt;/p&gt;

&lt;p&gt;A ten-minute wallet-payment check&lt;/p&gt;

&lt;p&gt;If you're responsible for a WooCommerce store, this is the routine I'd use:&lt;/p&gt;

&lt;p&gt;Check the Apple Pay association file.&lt;br&gt;
Compare the apex and www versions of the domain.&lt;br&gt;
Run the free checker.&lt;br&gt;
Test checkout from a phone in a private window.&lt;br&gt;
Check the browser console for JavaScript errors.&lt;br&gt;
Compare recent payment-plugin changes with the start of the problem.&lt;br&gt;
Reconcile gateway payments against WooCommerce orders.&lt;/p&gt;

&lt;p&gt;The last step is especially important because it can potentially reveal money already captured without the corresponding order you expected.&lt;/p&gt;

&lt;p&gt;Free tool&lt;/p&gt;

&lt;p&gt;Wallet Payment Preflight is free and MIT licensed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/exeptionalpeople/wallet-payment-preflight" rel="noopener noreferrer"&gt;https://github.com/exeptionalpeople/wallet-payment-preflight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the free checker finds the problem, you may not need anything else.&lt;/p&gt;

&lt;p&gt;It deliberately doesn't try to access private WooCommerce or gateway data, so there are failure modes it cannot diagnose automatically.&lt;/p&gt;

&lt;p&gt;For those cases, I also packaged an 11-failure-mode troubleshooting playbook plus a payment-to-order reconciliation workbook.&lt;/p&gt;

&lt;p&gt;It's $12:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exceptional7.gumroad.com/l/ygatqfu" rel="noopener noreferrer"&gt;https://exceptional7.gumroad.com/l/ygatqfu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The install counts and support-thread observations behind this investigation were collected from the public WordPress.org support ecosystem on September 9, 2026.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>woocommerce</category>
      <category>payments</category>
      <category>php</category>
    </item>
  </channel>
</rss>
