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
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Post
Replies
Boosts
Views
Activity
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
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
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
}
})
}
}
});
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.
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.
I am trying to find solutions past 4 days. but not getting any reference about NFC implementation in my app to read Debit/Credit card upon user consent? Can you confirm apple is provided any api for read Debit/Credit card using NFC or not. Tried with normal NFCReader but it reads only for normal tags but nothing with Visa/ MasterCard cards. Looking forward some help from you. Thanks
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
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:
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
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).
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?
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?
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?
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?
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.
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've implemented Push Provisioning, but am having trouble testing it.
When I try to add a payment pass with my activationData, encryptedPassData, and ephemeralPublicKey, I see the "Add Card to Apple Pay" screen, but then when I click "Add Card", I get a "Could Not Add Card" message.
When I inspect the error from didFinishAddingPaymentPass, it reads "The operation couldn’t be completed. (PKPassKitErrorDomain error 2.)".
Is this error PKPassKitError.Code.unsupportedVersionError? What does this error means?
Additional context:
We use cordova-apple-wallet to generate certificates and add payment pass.
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.
Wanting to remove credit caed