Hello,
I've recently created a merchant ID and added two domains to it. I placed the verification .txt files in the right place (under the .well-known dir) and both verified successfully and show as such in the merchant id setup page.
I am intermittently getting the following error:
{
"statusMessage": "Payment Services Exception merchantId=XXXXX not registered for domain=my.domain.com",
"statusCode": "400"
}
(merchantId and domain have been masked in the above error) -- What's odd is that this is intermittent -- It'll work fine, and then stop and start giving the above error, and then start working fine again, with no intervention from me.
Some context: This is a single server application, so it's not like we've got a server out of sync somewhere.
Thoughts?
Any thoughts?
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Post
Replies
Boosts
Views
Activity
I'm working in Apple's Sandbox environment to implement in-app purchase of an auto-renewable subscription.
I followed the instructions at this link in order to Enable Billing Grace Period: https://developer.apple.com/help/app-store-connect/manage-subscriptions/enable-billing-grace-period-for-auto-renewable-subscriptions.
However, when I receive an App Store Server Notification for when the user's billing method fails (DID_FAIL_TO_RENEW), it includes no information about the gracePeriodExpiresDate and we never get a GRACE_PERIOD_EXPIRED notification.
Logs showing App Store Server Notification not reflecting Grace Period Enabled.
I enabled grace period in App Store Connect like three weeks ago, so it's not a delay there.
What can I do to test out Billing Grace Period? Is this just an Apple bug?
Hello,
I am having issues with Apple Pay for issuers.
I am not able to get passes from my Apple Watch. I am 100% sure that my Apple Watch is paired, and debug logs show that a remote pass library exists. The issue is that I have my card added on both my phone and watch, and I always get a blank passes array for my Apple Watch. This is the code I am using:
let localPasses = PKPassLibrary().passes().compactMap { $0 as? PKSecureElementPass }
let remotePasses = PKPassLibrary().remoteSecureElementPasses
When the card is already added to my phone, when I tap the "Add to Apple Wallet" button on in-app provisioning, I still get a choice to add the card to either my phone or watch, which is not correct. I am getting the FPANID from the other pass in my wallet and setting it on PKAddPaymentPassRequestConfiguration.primaryAccountIdentifier, which according to the docs should be all that is required.
Any help is appreciated!
Thank you.
We are developing an app with the "Add card to Wallet" feature and facing an issue while adding a card to Apple Watch via the Wallet app with an app extension.
Steps to reproduce:
Open Wallet on iPhone
Tap on “Add Card”
Select card from Issuer app at "Add to Wallet" screen and complete provisioning
Now 'Add card to Watch screen' is displayed on phone
Continue provisioning on Watch
Expected result: Card is added to Watch successfully without requiring CVV/CVC.
Actual result: User is requested for CVV to add card to watch
In-app-provisioning works fine from the app with iPhone and watch.
Is it possible to skip entering the CVV step because our users don't know it?
For American Express cards, as of June 2024, no test cards from https://developer.apple.com/apple-pay/sandbox-testing/ can be added to the Sandbox Apple wallet and got this error. has reached out to Apple Pay Support.
The device region, test account, app store settings are all pointing to United States as region.
I'm implementing Wallet Extension for adding credit card on wallet, I created both extension, UI and NonUI, but the "From apps on your iPhone" option never shows to me.
My extensions have the same entitlements of main app, with the com.apple.developer.payment-pass-provisioning.
My NonUI status function implementation:
final class MBFApplePayNonUIExtensionHandler: PKIssuerProvisioningExtensionHandler {
override func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void) {
let status = PKIssuerProvisioningExtensionStatus()
status.requiresAuthentication = true
status.passEntriesAvailable = true
status.remotePassEntriesAvailable = true
completion(status)
}
....
I tried this to:
final class MBFApplePayNonUIExtensionHandler: PKIssuerProvisioningExtensionHandler {
override func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void) {
let status = PKIssuerProvisioningExtensionStatus()
status.requiresAuthentication = true
completion(status)
}
....
Extensions .plists:
NonUI:
NSExtension
NSExtensionPointIdentifier
com.apple.PassKit.issuer-provisioning
NSExtensionPrincipalClass
MBFApplePayNonUIExtensionHandler
UI:
NSExtension
NSExtensionMainStoryboard
MBFApplePayUIExtension
NSExtensionPointIdentifier
com.apple.PassKit.issuer-provisioning.authorization
What am I missing?
Hello, I started to integrate App Store Server Notifications and App Store Server API, both sandbox, on backend and I have encountered the following problems:
App Store Server Notifications:
After a payment is done on mobile, apple sends a notification to our backend which contains a JWT, the problem is that JWT seems to be incomplete and I can't decode it to see the details.
App Store Server API:
After a payment is done on mobile, mobile sends to our backend the transaction id, we use that id to make a request to App Store Server API in order to receive details about the transaction, but again the JWT received seems to be incomplete having at the end 3 dots.
Any idea why both of them are incomplete?
Hi,
I am integrating the HCE-based API into our SDK.
Ideal flow
It is bit tricky to support card change (step 3 below) after field-detect/double click due to NFC action sheet. Ideally, the flow is:
User double-click.
App launch
"Hold near Reader" NFC instruction
(optional) User change card
User tap device to POS reader
payment succeed.
Approach A
If I follow the code snippet in CardSession, where it calls startEmulation after readerDetected, I could change card before that. However, the "Hold near Reader" NFC instruction is shown very late, during tap.
User double-click
App launch
(optional)User change card
User tap device to POS reader
"Hold near Reader" NFC instruction
payment succeed.
Approach B
If I call startEmulation after sessionStarted, I could show "Hold near Reader" NFC. However, I could not provide the optional capability to change card anymore.
User double-click
App launch
"Hold near Reader" NFC instruction
User tap device to POS reader
payment succeed.
Neither approach A or B provide optimal approach shown in Ideal flow.
Is this expected from CardSession that there is no option to startEmulation without the action sheet?
Is there a plan to improve startEmulation so that it could show "Hold near Reader" without the action sheet?
Thank you.
Hello!
For Apple Pay, I'd like to disable the option for a customer selecting Apple Pay Later (tab).
In Swift, very easily modify the PKPaymentRequest with:
if #available(iOS 17.0, *) {
paymentRequest.applePayLaterAvailability = .unavailable(.itemIneligible)
}
However, how can this be setup to test that it works?
Very easily add sandbox account, and test cards, but not so easy to enable Apple Pay Later, or documented so the end user (tester) can test it.
Anyone know how to go about setting this up?
Thanks!!
Hi,
I'm adding deferredPaymentRequest container to get MPan, but payment is now cancelled by Webkit, no other explanation
What is the next step to get mpan ?
Regards,
Louis
"deferredPaymentRequest": {
"deferredBilling": {
"label": "Deferred Payment",
"amount": "1.99",
"type": "final",
"paymentTiming": "deferred",
"deferredPaymentDate": "2024-06-1",
},
"managementURL": 'https://.../apmsim/pay/appleManagement',
"paymentDescription": "this is a paymentDescription",
}
There is coming vawe of SoftPOS class app, turning iPhone into regular payment terminal. so far Apple picks country by country, where the service is available. As for today limited number of regions, where Tap on Mobile is possible to use at all.
Beeing preparing for that vawe we are considering possibly integration scenario and found the following obstacle:
Originally it was possible to integrate as app to app, means Tap on Mobile to other apps, where both apps are installed separately on iPhone. But now Apple does not allowe to make integration as app to app, but only integration is possible by embedded libraries (special libraries are embedded in master app, and on the iPhone there is only one app, which covers also Tap on Mobile features).
1/ Do you know, what is the reason for such restriction to have only embedded libraries method to integrate (although originally it was possible to integrate as app to app, means Tap on Mobile to other app)?
2/ Do you think, Apple release again first integration as app to app, as they allowed originally?
Hello team ,
We have created a sandbox tester and added all the setting as per the guidelines but the sandbox tester account is blocked from adding the test card . All the test cards show as invalid card .
We are not able to able to add wallet from iCloud .
We are not able to sign into iTunes with the sandbox tester account .
Please help on how to resolve this .
Thanks in Advance
I have a Developer account with a Developer Role, although apparently without the stated ability to create my own Sandbox ID. So, our company's Administrator is trying to create one for me.
But each time he enters a new icloud.com address to create one, he gets the error,
"Your Apple ID or password was entered incorrectly."
(The example at the above link uses icloud.com, and that seems the natural place to do this. I'm assuming that since you can't actually create an icloud.com email without an Apple ID, that this sandbox creation process should be ok with the email not existing yet.)
Hi everyone,
We are integrating Apple Pay on the Web, and we're trying to get the automatic renewal of the domain verification working according to the documentation: https://developer.apple.com/documentation/apple_pay_on_the_web/maintaining_your_environment
Initially the domain verification is successful, but then the automatic renewal does not work. We keep getting the emails with the subject "Your domain will expire soon.", but they only say "We were unable to automatically to reverify your domain." without any further details.
We confirmed that the site's SSL certificate has already been renewed by the time Apple attempted the renewal of verification, the certs are renewed 30 days before their expiry (using Let's Encrypt). So according to the docs, at least the renewal attempts 15, and then 7 days before the expiry should be successful.
One example domain is this one: https://www.kayak.com/.well-known/apple-developer-merchantid-domain-association.txt, but we have the same issue for all our other domains as well.
Does anyone have suggestions how to troubleshoot this further?
(I tried creating a support ticket, but they basically replied that they're non-technical, and just linked me to the documentation.
I've seen others complaining about this too, but couldn't find a conclusive solution, so I thought I'd signal boost and create a fresh topic to see if there are any more recent findings about this problem.)
Thanks!
Regards,
Mark
Hi,
We are integrating with Apple Pay via Stripe. Payment works as expected and is shown as successful in the Stripe dashboard. Our Frontend and Backend have verified the payment and decided it is successful as well. But the Apple Pay UI shows "Payment not completed". Any tips on how to troubleshoot this please?
best,
Chandru
does anyone have an example of the decrypted payload for an interac payment would look like? Couldnt find an example within the apple documentation
Is it possible to use the deep link for the payment? As if I want to pay. I just click on the payment button and it will kick me out from my existing app and run the payment solution app like Paytm, GPay, PhonePe, etc and the user will make the payment and redirect to their previous app and get the payment status
Received required entitlements from apple and as per the below link ios should allow us make third party app as default contactless app in EEA region.
But, Settings app only shows the toggle button to enable/disable Contactless capability. But, not an option to make an app as default contactless app.
com.apple.developer.nfc.hce.default-contactless-app | Apple Developer Documentation
Anyone has faced similar issue? Is above feature released or not, how can we confirm ?
So creating a IOS-DEVELOPMENT certificate is pretty straight forward... and I suspect some of the other types as well ... but when I try to create a PASS_TYPE_ID certificate it fails with some response messages...
"STATUS" : "404"
"code" : "NOT_FOUND"
"title" : "The specified resource does not exist"
"detail" : "There is no identifier with ID 'null' on this team"
So it would appear it's expecting more attributes to be set in the payload that are specific to creating that type of certificate. Which of course makes sense. There has to be a way of assigning it to a Pass Type ID that you have created. (It would be nice if the API could at least list existing Pass IDs, or even create them - but I've not seen how yet).
But for the life of me I can't find or figure out the syntax for this.
Anyone have any luck?
Hello everyone!
In our application, we have login via phone number (with an SMS code as a password) and the ability to add a bank card to Apple Wallet.
When logging in via phone number, upon receiving the SMS code, it automatically suggests filling in the input field. However, the field itself is not of type .oneTimePassword, and the SMS does not contain @domain, #code at the end (please look at the screenshot).
So, when adding a card to Apple Wallet, PKAddPaymentPassViewController is launched, where entering the code from the SMS is also required to activate the card. However, no autocomplete prompt for the SMS password appears when displaying this field.
Does anyone have information on why this is happening and how it can be implemented?