Cybersource production support has clarified issue as below
"On the BAD Case, it seems that the Apple Payload did not contain the "onlinePaymentCryptogram" object within the JSON. The Cryptogram is critical and mandatory.
Since the merchant cannot really control this, and since CYBS is just decrypting the payload and uses it, we cannot comment as to why it was missing.
The merchant would need to reach out to Apple and/or decrypt the payment themselves locally to check if and why this data was not present, for troubleshooting purposes."
Apple Pay on the Web
RSS for tagApple Pay on the Web allows you to accept Apple Pay on your website using JavaScript-based APIs.
Posts under Apple Pay on the Web tag
91 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi,
I understand that it's possible to add a virtual debit or credit card from a mobile app into the iOS Wallet using PassKit from the Apple SDK. However, I haven't come across documentation on how to achieve this directly from a web app. I found this article on Apple's support site (https://support.apple.com/en-gb/guide/security/secdc2567239/web), which mentions adding cards from a card issuer’s website, but it doesn’t provide details on the process.
Could you please confirm if it's possible to add a card directly from a web app without using a mobile app? If so, could you guide me to the relevant documentation?
Thanks in advance!
I developed a web app using .net c#. The app runs a workflow which included Apple payment. App can work on any browser of any device (even non-IOS).
When the app is browsed using PC windows Chrome browser, the payment sheet will show with QR code to scan using iPhone. If I cancelled the pop-up by clicking on X without scanning the code, and then returned to idle screen and performed another payment, I will reach paymentRequest.Show() but nothing will show and no errors are logged in console.
Note that:
I use Payment Request API
The issue appear on the second payment.
The issue will be solved once I refresh the page.
My app supports both single and separate pages mode and issue appear on both.
I used to see an error "Uncaught NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name apple spinner has already been used with this registry. So I thought the issue might be in loading the apple SDK script multiple times, and solved the issue to be loaded only once. The error disappeared but the issue persist without errors.
Hi everyone,
I’m encountering a strange issue with Apple Pay in our React Native iOS app using the Stripe React Native SDK.
Summary of the Problem:
• Apple Pay shows up as an available payment method inside the Stripe Payment Sheet.
• When I tap Apple Pay, the Apple Pay sheet opens normally.
• After confirming payment, the Apple Pay sheet immediately closes, and nothing happens.
• No payment is created and no request reaches Stripe’s servers.
On Stripe Dashboard the PaymentIntent remains incomplete, with no errors, which means the failure happens before Stripe receives anything.
Environment
• React Native with @stripe/stripe-react-native
• StripeProvider configured with:
<StripeProvider
publishableKey={...}
merchantIdentifier="merchant.com.app.venga"
stripeAccountId={...}
urlScheme="venga"
>
Apple Pay works on our web checkout with the same merchant identifier.
We have verified all of the required Apple Pay setup:
• Merchant ID exists, active, and matches exactly.
• Merchant ID added to the iOS app target in Xcode → Signing & Capabilities.
• Apple Pay capability enabled.
• Merchant domain is verified (web checkout works).
• Apple Pay certificate and merchant certificate are valid.
• Stripe publishable key and merchantIdentifier are correct.
• Stripe SDK correctly initialized.
• Device region supports Apple Pay.
Extra Observations:
• The PaymentIntent’s allowed_payment_methods includes "card" and Apple Pay does appear in the payment sheet.
• But after tapping Pay → the Apple Pay sheet closes instantly.
• There is no callback with an error, and nothing appears in Stripe logs.
• We are testing in Sweden. As far as I know Apple Pay should work fine here.
Questions:
What could cause the Apple Pay sheet to dismiss instantly after attempting a payment?
Could this be caused by a merchant ID mismatch—even if Apple Pay appears in the sheet?
Is there any Apple-device-level requirement (region, wallet config, card type) that could cause this silent failure?
Is there a way to get more detailed logs when Apple Pay closes before Stripe receives anything?
Any help or suggestions would be greatly appreciated. Thanks!
I'm facing an unexpected cancel event, when i get a merchantSession from my sever, and call completeMerchantValidation, then applepay client give a oncancel event, with error: unknown info:{}
the session is :
{
"epochTimestamp": 1762116084960,
"expiresAt": 1762119684960,
"merchantSessionIdentifier": "SSH60E2321574454A9FB4015EFF24C8769E_CCE257A9D27B42513B2C3CA67DB49F602F3450D996C0811ED462EDCA0D7477FD",
"nonce": "43fb3a9a",
"merchantIdentifier": "ABD51C33E9F2E612C0D594921DEC478118D23C77525223127FC716DA8589FDDC",
"domainName": "checkout.peppr.com",
"displayName": "Heji Guilin Rice Noodle",
"signature": "308006092a864886f70d010702a0803080020101310d300b0609608648016503040201308006092a864886f70d0107010000a080308203e330820388a003020102020816634c8b0e305717300a06082a8648ce3d040302307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3234303432393137343732375a170d3239303432383137343732365a305f3125302306035504030c1c6563632d736d702d62726f6b65722d7369676e5f5543342d50524f4431143012060355040b0c0b694f532053797374656d7331133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004c21577edebd6c7b2218f68dd7090a1218dc7b0bd6f2c283d846095d94af4a5411b83420ed811f3407e83331f1c54c3f7eb3220d6bad5d4eff49289893e7c0f13a38202113082020d300c0603551d130101ff04023000301f0603551d2304183016801423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b304506082b0601050507010104393037303506082b060105050730018629687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65616963613330323082011d0603551d2004820114308201103082010c06092a864886f7636405013081fe3081c306082b060105050702023081b60c81b352656c69616e6365206f6e207468697320636572746966696361746520627920616e7920706172747920617373756d657320616363657074616e6365206f6620746865207468656e206170706c696361626c65207374616e64617264207465726d7320616e6420636f6e646974696f6e73206f66207573652c20636572746966696361746520706f6c69637920616e642063657274696669636174696f6e2070726163746963652073746174656d656e74732e303606082b06010505070201162a687474703a2f2f7777772e6170706c652e636f6d2f6365727469666963617465617574686f726974792f30340603551d1f042d302b3029a027a0258623687474703a2f2f63726c2e6170706c652e636f6d2f6170706c6561696361332e63726c301d0603551d0e041604149457db6fd57481868989762f7e578507e79b5824300e0603551d0f0101ff040403020780300f06092a864886f76364061d04020500300a06082a8648ce3d0403020349003046022100c6f023cb2614bb303888a162983e1a93f1056f50fa78cdb9ba4ca241cc14e25e022100be3cd0dfd16247f6494475380e9d44c228a10890a3a1dc724b8b4cb8889818bc308202ee30820275a0030201020208496d2fbf3a98da97300a06082a8648ce3d0403023067311b301906035504030c124170706c6520526f6f74204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3134303530363233343633305a170d3239303530363233343633305a307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004f017118419d76485d51a5e25810776e880a2efde7bae4de08dfc4b93e13356d5665b35ae22d097760d224e7bba08fd7617ce88cb76bb6670bec8e82984ff5445a381f73081f4304606082b06010505070101043a3038303606082b06010505073001862a687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65726f6f7463616733301d0603551d0e0416041423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b300f0603551d130101ff040530030101ff301f0603551d23041830168014bbb0dea15833889aa48a99debebdebafdacb24ab30370603551d1f0430302e302ca02aa0288626687474703a2f2f63726c2e6170706c652e636f6d2f6170706c65726f6f74636167332e63726c300e0603551d0f0101ff0404030201063010060a2a864886f7636406020e04020500300a06082a8648ce3d040302036700306402303acf7283511699b186fb35c356ca62bff417edd90f754da28ebef19c815e42b789f898f79b599f98d5410d8f9de9c2fe0230322dd54421b0a305776c5df3383b9067fd177c2c216d964fc6726982126f54f87a7d1b99cb9b0989216106990f09921d00003182018730820183020101308186307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553020816634c8b0e305717300b0609608648016503040201a08193301806092a864886f70d010903310b06092a864886f70d010701301c06092a864886f70d010905310f170d3235313130323230343132345a302806092a864886f70d010934311b3019300b0609608648016503040201a10a06082a8648ce3d040302302f06092a864886f70d010904312204200dd015b60ad5539b1a06704eaacab7d5f2b509aeeaee4de3db0e68771b6c1549300a06082a8648ce3d040302044630440220267b23d8330b8fd6fd78ee68a2b6315b5db65c60e5453c54ccc70a6fe1e800c502204a909d3e6741b8dc82c55edd5c9e569951ee1e45593aa4e3b249b0bfff0314cf000000000000",
"operationalAnalyticsIdentifier": "Heji Guilin Rice Noodle:ABD51C33E9F2E612C0D594921DEC478118D23C77525223127FC716DA8589FDDC",
"retries": 0,
"pspId": "6C8FB940FD816AC15282D94009E72179FC9E5FFBC5712B366EB4364CAFB25153"
}
Hello Apple Team,
I’ve encountered a regression in iOS 26.1 when building my app with Xcode 26 (iOS 26 SDK).
The issue affects PKPaymentButtonType.plain, which now renders as fully invisible and produces transparent snapshots, even though the same code worked correctly in previous Xcode/iOS versions.
This has a real-world impact because many apps generate static images from PKPaymentButton for payment selection UIs using UIGraphicsImageRenderer, layer.render(in:), or custom snapshot utilities.
When using
PKPaymentButton(paymentButtonType: .plain, paymentButtonStyle: .black)
on iOS 26.1, when built with Xcode 26, the button:
Appears blank / invisible
Cannot be snapshotted
Produces a fully transparent UIImage, even though the CGImage object exists
Behaves differently than older SDKs (Xcode 16.x / iOS < 26.1
This regression only appears when compiling with the new SDK.
Other button types work fine.
Expected Behavior
.plain button should render glyphs as documented
snapshot generated via UIGraphicsImageRenderer or drawHierarchy(in:) should produce a visible image
Behavior should be consistent with older SDKs unless explicitly deprecated in release notes
Expected Behavior
.plain button should render glyphs as documented
Snapshot generated via UIGraphicsImageRenderer or drawHierarchy(in:) should produce a visible image
Behavior should be consistent with older SDKs unless explicitly deprecated in release notes
Actual Behavior
.plain button renders no glyph at all
Snapshot image is fully transparent (alpha = 0), even though size and CGImage metadata are correct
Only happens when built with Xcode 26 SDK
Same build from Xcode 16.x does not reproduce the issue
Steps to Reproduce
Create a minimal sample project in Xcode 26
Add the following code:
let button = PKPaymentButton(paymentButtonType: .plain, paymentButtonStyle: .black)
button.frame = CGRect(x: 0, y: 0, width: 180, height: 48)
let renderer = UIGraphicsImageRenderer(size: button.bounds.size)
let image = renderer.image { _ in
button.drawHierarchy(in: button.bounds, afterScreenUpdates: true)
}
print(image)
Run on iOS 26.1 device or simulator
Observe that:
The button appears visually empty
The generated image is fully transparent
Environment
Xcode: 26.x (iOS 26 SDK)
iOS: 26.1 (iPhone 15 Pro tested)
Device: Real device
Framework: UIKit + PassKit
Button type: .plain ONLY
Other types: .pay/.buy/.checkout = OK
I’m restructuring my business and want to remove Apple Pay. I use Woocommerce Square for payments. Do I do it in the Square dashboard or here? I honestly can’t remember how I set it up. I’m not a developer. I’m a farmer and work on my own website. Thanks!
During our Apple Pay integration testing, we encountered an issue that we're unsure how to resolve. Below are the steps we followed:
Created an Apple Pay sandbox test account for Raul and added a test card, following the documentation here: https://developer.apple.com/apple-pay/sandbox-testing/
Opened the Golfmanager platform and initiated a booking.
For payment, selected Apple Pay as the method.
Raul clicked the Apple Pay button on the Golfmanager UI.
He scanned the QR code using his iPhone, logged in with the test account.
Apple Pay began validating our merchant identity and retrieved the wallet token to proceed with payment.
The Apple Pay payment sheet appeared on Raul's iPhone, showing the card details and the amount requested by Golfmanager.
Suddenly, the Apple Pay sheet closed unexpectedly, and we have no insight into what went wrong or what might be missing on our end.
Here is the video: https://drive.google.com/file/d/1r-73edQ9eBZzXi6HoSYYGjKO8LbxBrZi/view?usp=drive_web
Hi,
We're experiencing an issue with verifying our domain for Apple Pay on the web. It's currently stuck in the "Pending" state despite meeting the listed requirements. The domain in question has been verified once successfully but one month later when we renewed the SSL, we were unable to verify the domain again. Please note that the new certificate's CA chain has been changed.
A) The "apple-developer-merchantid-domain-association.txt" file is publicly accessible at the following location:
/.well-known/apple-developer-merchantid-domain-association.txt
B) We've also ensured that the following IP ranges are whitelisted:
17.32.139.128/27
17.32.139.160/27
17.140.126.0/27
17.140.126.32/27
17.179.144.128/27
17.179.144.160/27
17.179.144.192/27
17.179.144.224/27
17.253.0.0/16
17.23.4.96/27
17.132.108.64/26
17.23.24.32/27
17.23.19.0/27
17.157.40.128/27
17.157.44.128/27
17.157.32.0/27
C) Our servers support TLS 1.2 already.
D) "ECDHE-RSA-AES128-GCM-SHA256" cipher suite has been used, so we believe all necessary criteria are satisfied.
However, when we attempt to verify the domain, we receive the following error message:
"Domain verification failed. Review your TLS Certificate configuration to confirm that the certificate is accessible and a supported TLS Cipher Suite is used."
Could you please advise why the verification is failing, or let us know if there's anything we might have missed?
Best regards,
Mehdi
We are attempting to integrate the Apple Pay service into our website and have successfully verified our domain with Apple manually. However, we consistently receive an 'ApplePay reverify failed' email a month before the expiration time. Upon checking, we updated the SSL certificate for the domain before receiving the email, and the link still works fine in the browser. We would greatly appreciate any feedback from someone who can help us with this issue.
We have an Apple Pay account and have successfully created and verified the payment processing certificate in our Apple Developer account.
When initiating an Apple Pay payment, the Apple session is created successfully with the correct data return from api , but it is not accepted with the error: “Payment not completed.”
The issue occurs even though the merchant validation step works without errors.
Our websites where this is happening are:
https://magicdeliver.com/
https://www.pulsarmodular.com/
Could you please help us identify the cause of the issue and guide us on resolving it?
I am attempting to verify my domain
https://technoq.genesistechnologies.tech
for use with Apple Pay Merchant ID. However, when I attempt verification, the process fails with the message:
“Domain verification failed.”
Unfortunately, no additional details are provided.
I have already completed the following steps:
Downloaded the verification file apple-developer-merchantid-domain-association.txt.
Placed it in the .well-known directory as instructed.
Confirmed that it is publicly accessible at:
https://technoq.genesistechnologies.tech/.well-known/apple-developer-merchantid-domain-association.txt
Verified that a valid SSL certificate is configured for the domain.
Could you please advise on why the verification might be failing and what additional steps I should take to resolve this issue?
Hello all,
I’m helping a customer integrate Apple Pay, and I’m seeing a behavior I can’t fully explain. I hope someone here can help clarify whether this is expected or whether it’s a bug / misconfiguration on my side.
Currency: RSD (Serbian Dinar)
Amount: 3.45 RSD (two decimals)
Result: Apple Pay cancels the payment automatically when the amount includes decimals, without even displaying the paymentsheet.
Things I have checked:
ISO 4217 defines RSD with 2 minor units, so fractional amounts like 3.45 should be valid.
Processors treat RSD as a two-decimal currency.
Apple’s documentation does not provide a per-currency decimal rule table.
In testing, whole-number RSD amounts succeed, while fractional amounts (e.g. 3.45 RSD) fail. I did not encounter this problem with other currencies like EUR, USD.
Has anyone encountered this issue before?
ApplePaySession.applePayCapabilities() started returning applePayUnsupported in third-party browsers
We rely on ApplePaySession.applePayCapabilities() to decide whether to show the Apple Pay button. We use two different merchant IDs for non-prod/prod environments, and encountered a change in behavior where this API now returns different results.
These merchant IDs are generated from a third-party provider Adyen. However, Adyen has informed us that they are unable to identify the root cause of the issue and advised us to seek assistance directly from Apple Pay support.
Timeline
Last known working date: 13/08/2025
Issue first noticed: 18/08/2025
Environment Details
Apple Pay JS API version 1.latest
Browsers Tested: Third party browsers including Chrome/139.0.0.0, Firefox/141.0
Browsers with ApplePaySession built-in (like iOS Chrome, iOS Safari, and macOS Safari) are working fine
Framework Stack: Angular v18.1.3
(important) no configuration setup in Apple dev account, merchantId is generated from a third-party provider Adyen.
Current Execution Flow:
Apple Pay JS API script element is injected
<script type="text/javascript" async="" src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"></script>
Triggers below to check apple pay readiness, different ${merchantId_credential} is used:
await window.ApplePaySession.applePayCapabilities(`${merchantId_credential}`);
(**ApplePaySession is a valid object at this point)
Observed that different paymentCredentialStatus is returned
// nonprod env
{
"paymentCredentialStatus": "applePayUnsupported" // unexpected
}
// prod env
{
"paymentCredentialStatus": "paymentCredentialStatusUnknown"
}
The same code is executed in each environment and the behaviour was also the same, but has changed since then.
Side notes
By checking the SDK’s internal code, we saw that in third-party browsers it makes an extra call to the following endpoint. Responses from this call also come back differently depending on the merchantId.
When invoking below:
curl -X POST \
https://smp-paymentservices.apple.com/paymentservices/v3/checkStatus/merchant/{merchantId} \
-H 'Content-Type: application/json' \
-d '{
"initiative": "web",
"initiativeContext": "env_specific_domain"
}'
Our non-prod environment returns {"registered":false} while using prod's merchantId and domain it returns {"registered":true}. We thought the issue might be domain-related since the environments are on different domains, but so far, no luck.
The main questions we're looking to resolve are:
Why did the behavior change at a certain point despite no code changes? How should we approach this investigation, and what specific requests should we be making to the Adyen team?
Why does the response from the call to https://smp-paymentservices.apple.com/paymentservices/v3/checkStatus/merchant/{merchantId} return different results? Perhaps this could provide a clue regarding the question above?
We noticed that canMakePayments() is returning true, so we could consider using that as a workaround. Would it be safe to change the source of truth relying on canMakePayments() for displaying Apple Pay?
There is a concern that this issue may also occur in our production environment, so we would appreciate assistance in understanding what is happening and finding a resolution.
I am working on implementing merchant token notifications. When calling this endpoint https://developer.apple.com/documentation/merchanttokennotificationservices/merchant-token-event-retrieval, the result contains a CardMetadata object with an expirationDate field (see https://developer.apple.com/documentation/merchanttokennotificationservices/cardmetadata). What is the format of this field? The spec only mentions that it has a maximum length of 8 characters.
Hi,
We have app in which we take donations from people and send to non-profit organisations. I have read that Apple Pay can be integrated on non profit platforms to take donations, but we are middle man, we are not non profit .. we take donations, cut our platform fees and then sent to donations to non profit orgs.
My question is can we integrate Apple Pay in our iOS app to take donations from apple? as we have integrated Apple Pay on the web.
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
We have finished integrating Apple Pay in our app and our payment processor is requiring us to send the 3dSecure version used for apple pay (2.1,2.2,2.3,etc.). I believe this only applies to mastercard but would appreciate if anyone has run into something similar and what you specified. I have not been able to find anything in Apple's documentation specifying the version that is used.
We’ve noticed that the ApplePaySession.applePayCapabilities() check has stopped working correctly in Safari over the past couple of days.
Behavior observed:
1.) In Safari Private Window, paymentCredentialStatus behaves as expected and case 1 is triggered.
2.) In a normal Safari window, it always triggers case 3 (paymentCredentialsUnavailable), even when the user has active cards provisioned in Wallet.
We tested across multiple devices, and the behavior is consistent.
if (window.ApplePaySession) {
var merchantIdentifier = 'YOUR MERCHANT IDENTIFIER';
var promise = ApplePaySession.applePayCapabilities(merchantIdentifier);
promise.then(function(capabilities) {
switch (capabilities.paymentCredentialStatus) {
case "paymentCredentialsAvailable":
// Show Apple Pay button as primary option
case "paymentCredentialStatusUnknown":
// Offer Apple Pay
case "paymentCredentialsUnavailable":
// Consider showing Apple Pay button
case "applePayUnsupported":
// Don’t show Apple Pay button
}
})
}
This used to work fine until a few days ago, but now the capability check in non-private Safari windows always indicates unavailable, even with valid active cards.
Has anyone else faced this issue recently? Could this be a Safari regression or a change on Apple’s side?
Thanks in advance!
Hi - I have a question. I am trying to understand when Apple Pay will be available on non-IOS desktop devices (specifically Google Chrome). I was hoping to understand better the process, specifically the following:
How can I get the Apple Pay QR code installed on my desktop checkout page on Google Chrome?
How long does this process usually take?
If I work with Stripe, do I need to get approval from them to install the Apple QR code onto my Google Chrome checkout page?
Is this readily available to all merchants (i.e., installing Apple Pay on Google Chrome)/
I have not seen this on any other checkout pages yet. Are there any examples you could point me to of merchants that have installed Apple Pay onto non-IOS desktop so I could trial the process (i.e., a list of existing merchants that have put the QR code onto their Google Chrome checkout pages)?
We are writing to report a recurring stability issue with the Apple Pay sandbox environment. We are using the official sandbox test cards provided on the Apple Developer website for our testing:
https://developer.apple.com/apple-pay/sandbox-testing/
We are experiencing frequent, intermittent failures when attempting to add these sandbox cards to the Wallet for testing purposes. The issue typically occurs a couple of times per day. When the failure occurs, the card provisioning process fails unexpectedly.
The issue is not limited to a single card; we have observed this behavior across all available card networks. In some instances, all cards (Visa, Mastercard, Discover, Amex) fail to provision simultaneously. At other times, the issue appears to be isolated to specific networks while others work correctly.
Crucially, the issue appears to be temporary. After some time passes (ranging from minutes to an hour), we are able to add the exact same card successfully without making any changes to our test environment or configuration.
We have diligently checked our setup to rule out configuration errors on our end. This includes verifying:
The device is set to a supported region.
We are signed in with a valid sandbox tester Apple ID.
All other prerequisites for sandbox testing are met.
The fact that the process works correctly at other times strongly suggests that this is a server-side stability issue within the Apple Pay sandbox environment rather than a persistent misconfiguration on our part.
To help with your investigation, we have attached an image that demonstrates a failed attempt to add a card.
Could you please investigate the stability of the sandbox card provisioning service? Please let us know if this is a known issue or if there is any further information we can provide.
Thank you for your time and assistance.