Hi,
You're here because you've had issues with your implementation of In-App Provisioning Extensions for Apple Pay In-App Provisioning or In-App Verification. To prevent sending sensitive credentials in plain text, create a new report in Feedback Assistant to share the details requested below with the appropriate log profiles installed.
Gathering Required Information for Troubleshooting Apple Pay In-App Provisioning or In-App Verification Issues
While troubleshooting Apple Pay In-App Provisioning or In-App Verification, it is essential that the issuer is able to collect logs on their device and check those logs for error message. This is also essential when reporting issues to Apple. To gather the required data for your own debugging as well as reporting issues, please perform the following steps on the test device:
Install the Apple Pay and Wallet profiles on your iOS or watchOS device. If the issue occurs on Mac, continue to Step 2.
Reproduce the issue and make a note of the timestamp when the issue occurred, while optionally capturing screenshots or video.
Gather a sysdiagnose on the same iOS or watchOS device, or on macOS.
Create a Feedback Assistant report with the following information:
The bundle IDs
App bundle ID
Non-UI app extension bundle ID (if applicable)
UI app extension bundle ID (if applicable)
The serial number of the device.
For iOS and watchOS: Open Settings > General > About > Serial Number (tap and hold to copy).
For macOS: Open the Apple () menu > About This Mac > Serial Number.
The SEID (Secure Element Identifier) of the device, represented as a HEX encoded string.
For iOS and watchOS: Open Settings > General > About > SEID (tap and hold to copy).
For macOS: Open the Apple () menu > About This Mac > System Report > NVMExpress > Serial Number.
The sysdiagnose gathered after reproducing the issue.
The timestamp (including timezone) of when the issue was reproduced.
The type of provisioning failure (e.g., error at Terms & Conditions, error when adding a card, etc.)
The issuer/network/country of the provisioned card (e.g., Mastercard – US)
Last 4 digits of the FPAN
Last 4 digits of the DPAN (if available)
Was this test initiated from the Issuer App? (e.g., yes or no)
The type of environment (e.g., sandbox or production)
Screenshots or videos of errors and unexpected behaviors (optional).
Important: From the logs gathered above, you should be able to determine the cause of the failure from PassbookUIService, PassKit or PassKitCore, and by filtering for your SEID or bundle ID of your app or app extensions in the Console app.
Submitting your feedback
Before you submit to Feedback Assistant, please confirm the requested information above is included in your feedback. Failure to provide the requested information will only delay my investigation into the reported issue within your Apple Pay client.
After your submission to Feedback Assistant is complete, please respond in your existing Developer Forums post with the Feedback ID. Once received, I can begin my investigation and determine if this issue is caused by an error within your client, a configuration issue within your developer account, or an underlying system bug.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
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,
To ensure the issue is not caused by an error within your app or web service request, please review the Apple Pay Merchant Integration Guide. Additionally, please review the following technotes on Apple Pay:
TN3173: Troubleshooting issues with your Apple Pay merchant identifier configuration
TN3174: Diagnosing issues with the Apple Pay payment sheet on your website
TN3175: Diagnosing issues with displaying the Apple Pay button on your website
TN3176: Troubleshooting Apple Pay payment processing issues
If the resources above don’t help identify the cause of the error, please provide more information about your app or web services to get started. To prevent sending sensitive credentials in plain text, create a report in Feedback Assistant to share the details requested below. Additionally, if the error is something we need to investigate further, the appropriate engineering teams also have access to the same information and can communicate with you directly within Feedback Assistant for more information, as needed. Please follow the instructions below to submit your report.
For issues occurring with your native app or web service, perform the following steps:
Install the Apple Pay profile on your iOS or watchOS device. If the issue occurs on Mac, continue to Step 2.
Reproduce the issue and make a note of the timestamp when the issue occurred, while optionally capturing screenshots or video.
Gather a sysdiagnose on the same iOS or watchOS device, or on macOS.
Create a Feedback Assistant report with the following information:
The serial number of the device.
For iOS and watchOS: Open Settings > General > About > Serial Number (tap and hold to copy).
For macOS: Open the Apple () menu > About This Mac > Serial Number.
The SEID (Secure Element Identifier) of the device, represented as a HEX encoded string.
For iOS and watchOS: open Settings > General > About > SEID (tap and hold to copy).
For macOS: Open the Apple () menu > About This Mac > System Report > NVMExpress > Serial Number.
The sysdiagnose gathered after reproducing the issue.
The timestamp of when the issue was reproduced.
Screenshots or videos of errors and unexpected behaviors (optional).
Important: From the logs gathered above, you should be able to determine the cause of the failure from PassbookUIService, PassKit or PassKitCore, and by filtering for your SEID or merchant domain in the Safari Web Inspector. See Inspecting Safari on macOS to learn more.
Submitting your feedback
Before you submit to Feedback Assistant, please confirm the requested information above is included in your feedback. Failure to provide the requested information will only delay my investigation into the reported issue within your Apple Pay website.
After your submission to Feedback Assistant is complete, please respond in your existing Developer Forums post with the Feedback ID. Once received, I can begin my investigation and determine if this issue is caused by an error within your web implementation, a configuration issue within your developer account, or an underlying system bug.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
iOS 16 and earlier
On iOS 16 and earlier, Apple Pay on the Web required Safari—and all interactions with the Apple Pay API to come from the parent/top level page. In order to facilitate the Apple Pay button in an HTML inline frame (iframe), there will need to be cross frame communication between the child and parent pages. Cross frame communication should be secure and robust, therefore the use of postMessage for this purpose is recommended.
The expectation is for all communication with Apple Pay to occur from the parent page, so the iframe must relay all Apple Pay related events to the parent to handle. Some examples:
Apple Pay availability: The parent calls applePayCapabilities, then sends the message of the response to the iframe, which then uses the value to toggle the visibility of the Apple Pay button.
Apple Pay session: The iframe receives an onclick() event when the Apple Pay button is clicked and sends the message to the parent (providing details about the transaction). The parent create the payment request to obtain the session validation URL, and eventually receive session credentials and invokes completeMerchantValidation() to prevent the payment sheet. After the payment is authorized by the Payment Service Provider (PSP), the parent either:
Redirects the parent page to a payment success page; or
Sends a message to the iframe to complete the transaction flow itself.
iOS 17 and later
On IOS 17 and later, the iframe HTML element should include the allow="payment" attribute, which should facilitate the cross frame communications instead of needing a dedicated JavaScript library. This means all of the Apple Pay code/calls can reside in the iframe page—which is typically a hosted page from a Payment Service Provider (PSP), all the parent page—typically a merchant—has to do is add the attribute mentioned above to the iframe element.
Important: Regardless of the iOS version, the PSP/merchant always needs to make sure the parent page domain is the one registered in the Developer portal, and used in the request to generate a merchant session via ApplePaySession.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
We are currently supporting an Apple Pay-enabled card program as an issuer/issuer processor and have successfully completed In-App Push Provisioning integration within our iOS application. The in-app flow is fully operational, including issuer-side cryptographic exchange and Mastercard MDES network tokenization.
We are now looking to extend this integration to support Apple Pay Web Push Provisioning, allowing cardholders to add eligible cards to Apple Wallet directly from our web application.
We would appreciate guidance on:
-The process for enrolling in Apple Business Register (if required)
-Enabling Web Push Provisioning for an issuer profile
Required entitlements or provisioning certificates
Any additional onboarding steps specific to issuer-level Web provisioning
We understand that Web Push Provisioning requires issuer-level enablement beyond standard Apple Pay on the Web, and we would like clarification on the correct path to activate this capability.
Thank you in advance for your guidance.
Hi, we are setting up Apple Pay on our website which sells only digital goods. We don't collect a shipping address because we aren't shipping anything. We want to use the user's billing address in order to show them the total amount (including sales tax) before they authorize the purchase. However, it seems that the billing address isn't always provided by Apple Pay before the payment is authorized.
With Apple Pay, what is the recommended way of acquiring the user's billing address before they authorize the purchase?
--
More details about our setup:
We are using the Apple Pay JS API.
In createPaymentRequest, we specify requiredBillingContactFields: ['postalAddress'], but per the docs, the address is provided after the user authorizes the transaction. That is too late for us because we want to show the sales tax before the user authorizes the purchase.
We have attempted to work around this by getting the billing contact details in session.onpaymentmethodselected. For example:
session.onpaymentmethodselected = function (event) {
const billingContact = event.paymentMethod.billingContact;
// Sometimes `billingContact` exists, but other times it does not
}
This doc states:
Before the user authorizes the transaction, you receive redacted billing contact information in a callback event. The redacted information includes only the necessary data for completing transaction tasks, such as calculating taxes or shipping costs.
But in practice, we've observed that sometimes no billing contact information is provided. When a user switches from one card to another, we seem to never get the billing contact associated with the newly selected card.
Is there something we're missing?
I’m having an issue verifying a domain for a Merchant ID. I’m implementing Apple Pay on the web for a demo, and I’ve configured the Azure server to match Apple’s requirements for domain verification, such as the TLS configuration, not requiring client certificates, and ensuring there are no redirects.
I’ve run tests with OpenSSL and PowerShell and all responses return HTTP/1.1 200 OK. I also tested the URL Apple says it uses to validate the file under .well-known, and it does show the expected result.
I already have the Apple Pay Payment Processing Certificate and the Apple Pay Merchant Identity Certificate approved; the only thing missing is the domain verification. I’m not sure what else to test—if you could help me with a possible solution, I’d really appreciate it. (The project is built in .NET 8 and hosted on Azure App Service.)
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Tags:
Apple Pay on the Web
Apple Pay
Hi,
I've tried many variations of setting up recurringPaymentRequest / defferedPaymentRequest options for ApplePay on Web. I need to set up the Apple Pay payment sheet for it to show "Repayment Details" section and "Authorize Payment Method". However, the bottom section always shows a total (which is not applicable).
What are the payment request options that will result in a set up like the below screenshot?
Hi,
Somebody knows how to decode / decrypt emvData on Apple Pay e-commerce when paymentDataType=EMV?
Thanks.
Reference: https://developer.apple.com/documentation/passkit/payment-token-format-reference#Detailed-payment-data-keys-EMV
I’m having an issue verifying a domain for a Merchant ID. I’m implementing Apple Pay on the web for a demo, and I’ve configured the Azure server to match Apple’s requirements for domain verification, such as the TLS configuration, not requiring client certificates, and ensuring there are no redirects.
I’ve run tests with OpenSSL and PowerShell and all responses return HTTP/1.1 200 OK. I also tested the URL Apple says it uses to validate the file under .well-known, and it does show the expected result.
I already have the Apple Pay Payment Processing Certificate and the Apple Pay Merchant Identity Certificate approved; the only thing missing is the domain verification. I’m not sure what else to test—if you could help me with a possible solution, I’d really appreciate it. (The project is built in .NET 8 and hosted on Azure App Service.)
We are implementing Apple Pay on our website, but we only sell services and would prefer that the shipping address section of the Apple Pay modal doesn't require the shipping address and just show the billing address. Is there any way to achieve this?
I'm in the process of supporting Apple Pay through a 2nd payment gateway for some users, so I need to support two separate Apple Pay relationships. Both require their own apple-developer-merchantid-domain-association. I don't see how I can have both files for the one domain. Is this possible? Is there a workaround other than just replacing the old file with the new one and hoping that doesn't disrupt anything. That seems to be the approach taken by others (https://developer.apple.com/forums/thread/695538) but it is too high risk for me without any confirmation from Apple that this is ok. I'd also like to avoid having to setup a 2nd domain for these customers, since the current domain is already quite embedded in their operations.
I have a problem generating the domain certificate for a merchant id it gives me an error but when using the URL that Apple uses to validate said within the .well-known if the file can be loaded
I've encountered an issue where we need multiple domain associations with separate Apple Pay implementations.
Briefly, we have a /.well-known/apple-developer-merchantid-domain-association already setup with Stripe, and now we need another, different version of the file to get setup with FreedomPay. FreedomPay insists this file represents a three-way relationship between all parties and I have no reason to disbelieve them.
I'm wondering if anyone has encountered this or if there is a standard procedure. I'm currently trying to find documentation on the exact way Apple Pay verification interacts with this file to see if we can produce it dynamically.
Hello, I'm trying to make changes to my website's apple pay flow and an unable to verify if the flow works because I get the following error in the console when trying to pay:
TypeError: undefined is not an object (evaluating 'applePaySession.completeMerchantValidation')
By following this error message, I try to setup an ngrok proxy to verify my local development domain and that fails as well even though as you can see, the file does actually exist.
Can anyone help with A) giving me a different way to develop locally aka having a "successful" apple pay payment so I can verify my website's flow after payment or B) help me figure out why the domain verification is failing. Thanks!
For Apple Pay Testing purposes, we're trying out cards from https://developer.apple.com/apple-pay/sandbox-testing/
Visa, AMEX, Discover cards can be added to the wallet.
But all 5 of the listed options for Mastercard cannot be added to the wallet with the error "Card Device Limit".
How can we resolve this?
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
I am facing a problem of payment using credit card.
I tried several banks and cards without any result.
I also used one of the card I have successfully paid another account.
Heeeeelp
Our company sells insurance and we'd like to offer annual renewals via Apple Pay on the Web. Most of the docs seem to point towards using recurringpaymentrequest but this method required an amount value which would only be calculated at renewal time.
It appears that Shopify is doing something akin to what we want where they do auto payments so my question is can we do annual payments with unknown renewal prices with Apple Pay for Web ?
What we cannot do is show the renewal price like this as it being insurance is almost certain to change.
This is our current code which works but won't get past the regulator.
const applePayPaymentRequestAnnual = {
countryCode: 'GB',
currencyCode: 'GBP',
supportedNetworks: ['visa', 'masterCard'],
merchantCapabilities: ['supports3DS'],
requiredBillingContactFields: ['postalAddress', 'email'],
requiredShippingContactFields: ['phone'],
recurringPaymentRequest: {
paymentDescription: 'Annual Insurance Renewal',
regularBilling: {
label: 'Annual Renewal Premium',
amount: price,
paymentTiming: "recurring",
recurringPaymentIntervalUnit: "year",
recurringPaymentStartDate: year + "-" + month + "-" + day + "T00:00:00.000Z",
type: 'final'
},
managementURL: window.location.protocol + '//' + window.location.host + '/manage-policy',
tokenNotificationURL: window.location.protocol + '//' + window.location.host + '/apple-pay-notifications'
},
lineItems: [{
label: alabel,
amount: price,
}],
total: { label: alabel, amount: price, type: "final" },
}
When I use my iPhone to scan the apple pay QR code in chrome, the url is https://applepaydemo.apple.com/apple-pay-js-api, I keep geting the "Service Unavailable" error.
Wonder know if you guys meet this error as well? Btw, the QR code feature needs IOS 18.
Hello,
I'm experiencing an irregular issue with Apple Pay merchant domain verification. As you know, Apple requires domain verification every two months to maintain Apple Pay functionality.
The problem is that while the verification sometimes happens automatically without any issues, other times it fails to complete, even though the required file "apple-developer-merchantid-domain-association.txt" is correctly available on our server.
When automatic verification fails, the Apple Pay service becomes non-functional on our website, forcing us to perform a manual verification to restore the pending service.
Is it normal to encounter such inconsistent automatic verification processes?
What could be causing these intermittent verification failures, whereas manual verification always succeed? suggesting this might not be related to IP address restrictions described on the Apple documentation.
Thank you in advance,
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."