Hi,
You're here because you've had issues with your implementation of Wallet 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
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
hello, apple send me this problem: We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, purchase feature was not responsive. Please review the details and resources below and complete the next steps.
we did everything. Our app should be paid for but is offered for free. Payment cannot be made, who can help us? The app is called DRACHMI
Topic:
App & System Services
SubTopic:
Apple Pay
I am developing In-App Provisioning functionality within an iOS application. When I try to perform the process, the process fails and the following is displayed on the screen: "Your issuer does not yet offer support for this card".
The PassbookUIService logs show:
https://nc-pod8-smp device.apple.com:443/broker/v4/devices/xxxxxxxxxxxxxx/cards 200 Time profile: 0.25497 seconds
{
auxiliaryCapabilities = {
};
eligibilityStatus = 0;
sanitizedPrimaryAccountPrefix = "";
}
ProvisioningStepEligibility: received eligibility status: 0
Showing eligibility issue with reason: 2
ProvisioningOperationComposer: Step 'eligibility' failed with error (null)
Would like to seek your help to investigate the problem. Thanks
Wanting to remove credit caed
Hey, I’m curious as to if anyone else is having this issue since iOS 18 came out, my 15 pro and my sisters 13 have un Set up Apple Cash and will not set Up. We’ve set up through Apple Wallet, Apple Wallet Settings, turned the phones off and on, removed the Apple IDs and signed back in but still wont set up. It’ll say set up Apple Cash we proceed with the process but just keep saying set up Apple Cash even after the set up steps are finished.
Topic:
App & System Services
SubTopic:
Apple Pay
Error in iOS Wallet Order When Removing Deprecated status Property from Payment Object in order.json
I am encountering an issue related to the status property within the payment object of the order.json file when opening an order in the iOS Wallet.
According to the official documentation, the status property in the payment object is marked as deprecated. Based on this information, I removed the status property from the order.json. However, when I attempt to open the order in the iOS Wallet app, an error occurs, preventing the order from being opened.
This creates confusion, as the documentation implies that the status property in the payment object is no longer required. However, the iOS Wallet app seems to still rely on the presence of this property or encounters an error when it’s missing.
Tested on IOS 17.6.1 & IOS 18
I am looking for help with validation of an Apple Pay payload from the perspective of an Apple Pay processor. Further details would require an NDA.
Topic:
App & System Services
SubTopic:
Apple Pay
When checking if the device supports Apple Pay and has an active card, a call is made to 'applePayCapabilities'.
The documentation indicates this method asynchronously contacts the Apple Pay servers as part of the verification process.
My understanding is that this is a client side call, from the device/OS to the Apple Server.
The application (Apple pay on the web) is behind a firewall. What domain should I whitelist for this verification to be a success?
Topic:
App & System Services
SubTopic:
Apple Pay
We have a requirement to include Apple Pay In-App Provisioning in our Mobile Application and we have an API from Backend to get the tokenReferenceID for a given Card. I want to query the passes from Apple Wallet to see if there are any matches to the given tokenReferenceID before I can decide whether to show the “Add to Apple Wallet” button or not.
I went through all PassKit APIs but couldn’t find a way to query for passes with tokenReferenceID. We have primaryAccountIdentifier, deviceAccountIdentifier but which one should be used to match with tokenReferenceID?
Can someone please help me how to query the Wallet passes with tokenReferenceID using PassKit?
Hi there, I'm using php to create a qr code card for your apple wallet. Hereby I'm using this package: https://github.com/chiiya/laravel-passes Currently I got this far, that it creates a temporary directory filled with the needed files, including: icon.png, logo.png, manifest.json, pass.json and a signature file. After that temp directory gets created it creates a .pkpass file. Which will be downloaded to your system using an anchor tag button with controller method behind. For some reason on my iPhone I can only download it as file (the .pkpass file) and not as an actual wallet card. Any idea what is going wrong?
Hi there, I'm using a PHP library to generate a apple wallet card. In the end my code generates a .pkpass file, but for some reason iOS does not recognize it as a wallet object, instead just as a .pkpass file which in can save in my downloads/documents. Any idea?
iOS 18 announced improvements to the Wallet Passes. Does anyone have a link to the updated documentation? The old documentation does not have the changes as of the time of this post. There is a video, however, there are no specifications for the the new image formats (e.g., artwork.png).
The Wallet Passes docs, https://developer.apple.com/documentation/walletpasses seem to be missing any information about the features coming in iOS 18, specifically the new posterEventType, new semantic tags, and how to build out the event guide for a given ticket.
WWDC24 session: https://developer.apple.com/wwdc24/10108
Hello ApplePay Support,
I am integrating apple pay support on the following page but getting error. I have attached code files and video also about debug that code with different response print. Please check it and let me know where is issue.
ApplePay Page:
https://payment.bestgoodstudio.com/uk/pay/
JS Code:
$(document).ready(function() {
function setupApplePayButton() {
var applePayButton = $('#apple-pay-button');
if (applePayButton.length) {
applePayButton.on('click', function() {
initiateApplePayPayment();
});
}
}
async function initiateApplePayPayment() {
if (!window.ApplePaySession) {
alert('Apple Pay is not supported in this browser/environment.');
console.error('Apple Pay is not supported in this browser/environment.');
return;
}
var request = {
countryCode: 'GB',
currencyCode: 'EUR',
supportedNetworks: ['visa', 'masterCard', 'amex'],
merchantCapabilities: ['supports3DS', 'supportsEMV', 'supportsCredit', 'supportsDebit'],
total: {
label: 'Elitelab Pte Ltd',
amount: '2.50'
}
};
var session = new ApplePaySession(3, request);
session.onvalidatemerchant = async function(event) {
const validationURL = event.validationURL;
alert("Validation URL received: " + validationURL);
try {
const response = await fetch('https://payment.bestgoodstudio.com/uk/pay/apple_pay_validation.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ validationURL: validationURL })
});
const responseBody = await response.text(); // Get raw text to print whole response
alert("Validation Response (raw): " + responseBody); // Print raw response in alert
if (response.ok) {
const responseData = JSON.parse(responseBody); // Parse it if valid JSON
alert('Validation Response (parsed): ' + JSON.stringify(responseData));
console.log('Merchant Validation Data:', responseData);
if (session) {
session.completeMerchantValidation(responseData);
alert('Merchant validation completed.');
}
} else {
alert("Merchant Validation failed. HTTP Status: " + response.status);
session.abort(); // Abort session if validation fails
}
} catch (e) {
alert('Error during Merchant Validation: ' + e.message);
console.error('Merchant validation error:', e);
session.abort(); // Abort session on error
}
};
session.onpaymentauthorized = function(event) {
var payment = event.payment;
var paymentToken = payment.token.paymentData;
alert("Payment authorized. Payment Data: " + JSON.stringify(payment));
console.log('Payment Authorized:', payment);
processApplePayPayment(payment, function(success) {
if (success) {
session.completePayment(ApplePaySession.STATUS_SUCCESS);
alert('Payment completed successfully.');
} else {
session.completePayment(ApplePaySession.STATUS_FAILURE);
alert('Payment failed.');
}
});
};
session.oncancel = function(event) {
alert("Session canceled: " + JSON.stringify(event));
console.log("Session canceled:", event);
};
session.oncomplete = function(event) {
alert("Session complete: " + JSON.stringify(event));
console.log("Session complete:", event);
};
session.begin();
}
function processApplePayPayment(payment, callback) {
var postData = {
paymentData: payment.token.paymentData,
billingContact: payment.billingContact,
shippingContact: payment.shippingContact
};
$.ajax({
url: 'process_apple_pay.php',
method: 'POST',
data: JSON.stringify(postData),
contentType: 'application/json',
success: function(response) {
alert("Payment Processing Response: " + JSON.stringify(response));
console.log("Payment Processing Response:", response);
callback(response.success);
},
error: function(error) {
alert('Error processing payment: ' + JSON.stringify(error));
console.error('Error processing payment:', error);
callback(false);
}
});
}
setupApplePayButton();
});
PHP Code:
Topic:
App & System Services
SubTopic:
Apple Pay
We created the P12 key from the Merchant ID certificate using KeyChain Access when developing Apple Pay for web.
Now we are in the process of deploying Apple Pay to Prod, do we need to generate a new P12 key for Prod?
I am not sure about the process here, and need some assistance or understanding.
Do I need to create a new P12 for Production deployment or can I use the P12 created when developing?
Thanks
Topic:
App & System Services
SubTopic:
Apple Pay
Hi there,
So we have upgraded our Apple Pay JS API to 1.2.0 to take advantage of the ability to pay with Apple Pay on 3rd party browsers. But we seem to be getting a red banner at the top of the scannable code that appears that says "NOT FOR PRODUCTION USE" even though we are using a production certificate and payments are going into checkout.com as expected.
Is anyone else getting this and are we not doing something that we need to?
Thanks.
Topic:
App & System Services
SubTopic:
Apple Pay
Does anyone else have this issue?
We have been having this issue for years since we start using Apple Pay on the Web.
I have checked TN3173 Your domain does not automatically re-verify section, we should meet all requirements.
I have emailed applepaymerchantsupport at apple.com several times (Case-ID: 7663879), either saying "still checking", or no response at all.
Our certificate for the Merchant Domains is maintained in Cloudflare, signed with Google Trust Service, rotate every 3 months.
uni.getProvider({
service: 'payment',
success: (res) => {
const iapChannel = res.providers.find((channel) => {
return (channel.id === 'appleiap')
})
if (iapChannel) {
let ids = ['1234567890', '1234567892'];
iapChannel.requestOrder(ids, (
orderList) => {
console.log("----- order -----", orderList);
}, (e) => {
console.log('--- failed ---' , e);
});
uni.requestPayment({
provider: 'appleiap',
orderInfo: {
productid: that.productid,
manualFinishTransaction: true,
username: ress.data.orderId
},
success: (e) => {
that.isPayLoadding = false
},
fail: (e) => {
that.isPayLoadding = false
}
})
}
}
});
I have a company with 100 merchants now if I want to create Apple Pay for each merchants do I have to have 100 developer accounts or is it possible to to create different merchant ids in one developer account ….i dont want to publish each merchants apps ,itll be purly for web based apple payment
Hi team @ Apple,
Is an MPAN always provided with an ApplePayPaymentToken?
I heard there are old devices that will provide only a DPAN. Is this correct, and do we need to support the case where only a DPAN is present?
I.e. what percentage of devices doesn't support MPAN?
Thanks
Hi Guys,
I have asp.net web application targeting framework 4.7.2 . The requirement is to integrate apple pay to the site as a payment method.
Can any one help me on the below queries.
As the development will be in visual studio, is it require to have a apple developer account. if yes, which subscription is required (individual/organization). I believe to obtain merchantID, payment processing certificate apple developer account is required but not sure like which subscription is required.
Is there any supporting document or code snippet to integrate apple pay in .net application.
Is it required to use browser safari or iphone or ipad for testing the apple pay? can the testing be done using chrome browser?
Is it a direct integration using c# code or do I need to use any third party payment gateway like stripe, authorize.
Thanks in Advance