Hello,
I’m experiencing a strange issue with a newly created Subscription Group in my iOS app.
For all my existing subscription groups, everything works perfectly — initial purchase, renewals, cancellations, all notifications arrive normally.
But for this one newly created group, the first purchase never triggers any server notification from App Store Server Notifications (ASSN).
⸻
📘 Problem Summary
• I created a new Subscription Group in App Store Connect.
• The products are all Approved and Published for over a week.
• Users can successfully purchase the subscription in production.
• The purchase is shown as Purchased in the App Store purchase UI.
• The receipt can be fetched locally on device.
• But my server receives no notifications, including:
• DID_RENEW
• DID_CHANGE_RENEWAL_STATUS
• SUBSCRIBED
• ONE_TIME_CHARGE
• CONSUMPTION_REQUEST
• etc.
The old subscription groups still send notifications normally, so the notification URL and server infrastructure are correct.
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
I'm currently integrating Apple Pay with my payment provider, and I'm encountering a signature validation error during the payment flow.
Here's the setup:
I’ve verified that my Merchant Certificate is valid, and I'm able to initialize the Apple Pay session without any issues. Also this curl works fine
The Payment Processing Certificate was created by my PSP.
PSP claims that the payment token signature is invalid during the transaction phase, which prevents payment completion.
The parsed signature starts like this
0:d=0 hl=2 l=inf cons: SEQUENCE
2:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
13:d=1 hl=2 l=inf cons: cont [ 0 ]
15:d=2 hl=2 l=inf cons: SEQUENCE
17:d=3 hl=2 l= 1 prim: INTEGER :01
20:d=3 hl=2 l= 13 cons: SET
22:d=4 hl=2 l= 11 cons: SEQUENCE
24:d=5 hl=2 l= 9 prim: OBJECT :sha256
35:d=3 hl=2 l=inf cons: SEQUENCE
37:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
48:d=4 hl=2 l= 0 prim: EOC
50:d=3 hl=2 l=inf cons: cont [ 0 ]
52:d=4 hl=4 l= 995 cons: SEQUENCE
56:d=5 hl=4 l= 904 cons: SEQUENCE
60:d=6 hl=2 l= 3 cons: cont [ 0 ]
62:d=7 hl=2 l= 1 prim: INTEGER :02
65:d=6 hl=2 l= 8 prim: INTEGER :16634C8B0E305717
75:d=6 hl=2 l= 10 cons: SEQUENCE
77:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
87:d=6 hl=2 l= 122 cons: SEQUENCE
89:d=7 hl=2 l= 46 cons: SET
91:d=8 hl=2 l= 44 cons: SEQUENCE
93:d=9 hl=2 l= 3 prim: OBJECT :commonName
98:d=9 hl=2 l= 37 prim: UTF8STRING :Apple Application Integration CA - G3
I'm looking for guidance on what could be causing this signature failure.
Does anyone know what else I can check regarding the merchant or payment processing certificates, private keys, or key usage that might cause Apple Pay signature validation to fail, even if the session initializes successfully? Domains are also verified.
Any help or suggestions would be greatly appreciated.
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 am facing an issue with Apple Pay js while doing the integration
we are using reference
https://applepaydemo.apple.com/apple-pay-js-api
In this I can generate the merchantSession correctly
But when I pass that merchantSession in
session.completeMerchantValidation(merchantValidation) as per documentation
It is getting failed and also no appropriate error is being shown in the console
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
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/3955945-multitokencontexts
According to this document, I know that I can initialize a multiTokenContexts when initializing ApplePayPaymentRequest.
But I am now facing a tricky problem. If the user's order does not require multiTokenContexts, then I will not initialize this field when I first make ApplePayPaymentRequest. When the user is in the payment process, I may update multiTokenContexts. But this time, the update is not allowed, ApplePay will be cancelled and the payment will be closed.
For example, if the user's address in Apple Pay is different, I need to update multiTokenContexts to support the payment of goods to multiple merchants, which will generate an update of multiTokenContexts. MultiTokenContexts can be updated in the onshippingcontactselected method.
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/1778009-onshippingcontactselected
My question is that from the beginning, there was no multiTokenContexts to update multiTokenContexts in onshippingcontactselected, which would cause the user to close the payment and need to manually click to pay again.
This user experience is not very friendly. Is there a better way for me to go from no multiTokenContexts to multiTokenContexts without interrupting the user's payment process?
Team,
We are currently checking out on Apple Pay using ALL and MRU as currencies. We have authorized the payment via Touch ID; however, we are not receiving the onPaymentAuthorized event.
Could you please confirm if Apple Pay supports ALL and MRU currencies? We have confirmed that it works with other currencies.
Thank you!
Topic:
App & System Services
SubTopic:
Apple Pay
What is the version policy for the Apple Pay SDK Javascript ?
The documentation refers to this link :
https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js
The future updates will overrride the file on that link ? Is there a way to be notified of any changes ?
We are using a previous version named v1 :
https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js
What are the risks not using changing to the lastesdt link ?
Thank you for your help.
I am writing regarding an issue I have encountered while attempting to complete a payment using test users created within the Sandbox environment of Apple Pay. The problem persists specifically when trying to make payments through the demo page at https://applepaydemo.apple.com/.
Problem Description:
When initiating a payment process with either of the following test user accounts.
The flow proceeds as follows:
The Apple Pay window appears correctly.
Processing begins but does not conclude successfully.
After processing concludes, there is no prompt for 'Pay with Touch ID'.
Additional Information:
Device & OS Version: MacOS 15.3.2
Browser & Version: Safari 18.3.1
Real Device or Simulator: Real device used
First Occurrence: Before January 1st, 2025
Custom Configurations or Backend Used: No custom configurations or backend modifications are being utilized during interaction with the demo page.
Could you please provide assistance in resolving this issue?
Is MANUAL_ENTRY mandatory for Apple Pay or may an issuer block it and rely only on PKAddPaymentPass?
We plan to set Manual PAN Entry Allowed = N and accept only issuer push provisioning (PKAddPaymentPass).
Is there any Apple Pay programme rule that obliges us to keep MANUAL_ENTRY enabled?
Will disabling it affect “Participating Issuer” listing?
Topic:
App & System Services
SubTopic:
Apple Pay
We are working with a large fintech org on project connected with provisioning payment cards to Apple Wallet.
When we add a previously provisioned card to the Wallet (using the Wallet UI, Add card -> Previous card). It adds the card on one device showing the Express Travel card screen after the card is added allowing the user to set the card as an express travel card during the provisioning flow but never on our other devices. All of the test devices are clean and have only the same single card provisioned.
What triggers the Express Travel Card screen to be shown during the add previous card flow? (Why is it showing on one device and not another).
I am currently working on decrypting Apple Pay tokens with Laravel PHP, and I have encountered a few uncertainties regarding the decryption process and the usage of AES-GCM.
Could you please clarify the following points:
Algorithm Confirmation:
Am I using the correct algorithm for decrypting the data key? Specifically, I am utilizing AES-256-GCM with the algorithm ID "id-aes256-GCM" (2.16.840.1.101.3.4.1.46), as specified in the documentation.
Is this the recommended algorithm for decrypting the Apple Pay token's data key?
Authentication Tag:
In the decryption process, it seems that an authentication tag is required, but I am not sure where to obtain it from. Could you confirm how the authentication tag is generated or provided during the encryption process?
If the tag is part of the token or is transmitted separately, could you clarify where I can retrieve it in order to proceed with the decryption successfully?
IV and Other Parameters:
I am using an initialization vector (IV) of 16 null bytes (00000000000000000000000000000000) as specified in the documentation. Could you confirm that this is correct and aligns with the expected parameters for the AES-GCM decryption?
Are there any other specific parameters or considerations I should be aware of when implementing the decryption of Apple Pay tokens?
GCM vs Other Encryption Modes:
Can you confirm that AES-GCM is the preferred and required encryption mode, or is there any flexibility to use other modes (e.g., AES-CBC) without compromising security?
Your guidance would be greatly appreciated to ensure I am following the correct decryption procedure for Apple Pay tokens.
Thank you in advance for your support.
Topic:
App & System Services
SubTopic:
Apple Pay
When accessing https://applepaydemo.apple.com/payment-request-api, the "Approve with Side Button" prompt is displayed, but it does not appear when using our test domain.
I implemented the Payment Request API based on the sample source code from the following URL. On an iPhone device, the Apple Pay payment screen is displayed, but the "Approve with Side Button" icon below the amount does not appear, and instead a spinning loading icon is shown continuously.
Could you please help identify the cause?
■ Reference URL:
https://applepaydemo.apple.com/payment-request-api
■ Changed parameter:
"merchantIdentifier": "〇〇.dev"
■ Accessed domain:
〇〇test.com
■ Test device:
iPhone 13
iOS: 18.4.1
Topic:
App & System Services
SubTopic:
Apple Pay
Hello,
I am currently testing an Adyen integration with Sylius and need to verify Apple Pay with Cartes Bancaires in the sandbox environment. Could you please advise how Cartes Bancaires can be tested in Apple Pay Sandbox (e.g. cards details)?
Thank you in advance for your guidance.
Best regards,
Grzegorz
We have used the ApplePayRecurringRequest parameter required for Apple Pay subscriptions, but during testing the payment, the Apple Pay payment page shown to the user remains the same as the one-time payment page, without any subscription information. Could you please check if there is an issue with our parameters or if there is an issue with the merchantIdentifier being used?
Here is the ApplePayRequestData that we are using.
{
"supportedMethods": "https://apple.com/apple-pay",
"data": {
"version": 3,
"merchantIdentifier": "***",
"merchantCapabilities": [
"supports3DS",
"supportsCredit",
"supportsDebit"
],
"supportedNetworks": [
"visa",
"masterCard"
],
"countryCode": "US",
"recurringPaymentRequest": {
"paymentDescription": "A description of the recurring payment to display to the user in the payment sheet.",
"regularBilling": {
"label": "Recurring",
"amount": "4.99",
"paymentTiming": "recurring",
"recurringPaymentStartDate": "2025-06-02T16:00:00.000Z"
},
"trialBilling": {
"label": "7 Day Trial",
"amount": "0.00",
"paymentTiming": "recurring",
"recurringPaymentEndDate": "2025-06-02T16:00:00.000Z"
},
"billingAgreement": "A localized billing agreement displayed to the user in the payment sheet prior to the payment authorization.",
"managementURL": "https://applepaydemo.apple.com",
"tokenNotificationURL": "https://applepaydemo.apple.com"
},
"additionalLineItems": [
{
"label": "7 Day Trial",
"amount": "0.00",
"paymentTiming": "recurring",
"recurringPaymentEndDate": "2025-06-02T16:00:00.000Z"
},
{
"label": "Recurring",
"amount": "4.99",
"paymentTiming": "recurring",
"recurringPaymentStartDate": "2025-06-02T16:00:00.000Z"
}
]
}
we are currently using the requestAutomaticPassPresentationSuppression API in my app. to prevent the Wallet interface from appearing when an NFC/RF reader is detected during active app usage.
Recently, a new transit card supporting Express Mode (T-money Transit Card) was released in Korea, and we are seeing an increasing number of users enabling Express Mode.
However, this has introduced an issue where users are unable to use the BLE-based functionality we provide via our widget. Specifically, when the user taps our widget, it triggers a BLE signal broadcast for approximately 10 seconds. In this scenario, when the user brings their iPhone close to our reader, Express Mode is activated before the BLE interaction can be established. This prevents the BLE signal from being successfully received and processed.
We would like to ask:
Is it possible to suppress Express Mode behavior (similar to requestAutomaticPassPresentationSuppression) even when the app is launched via a widget interaction?
Alternatively, is there any way to delay or defer Express Mode activation temporarily when launching from a widget or during BLE communication?
We would appreciate any guidance or best practices you can share regarding this scenario.
Thank you.
Topic:
App & System Services
SubTopic:
Apple Pay
Hi :) I'm new to app store connect, and I just want to verify what does it take to be able to test subscription for a new app that isn't approved yet using sandbox? Or is this not possible that the app has to be approved first?
More context below:
My app is a new app, I only submitted for review and I linked the subscription from the app’s In-App Purchases and Subscriptions section on the version page when submit it for review. It got rejected for now.
When the app review status is both in-review and rejected, I've tried to test my subscription, where there is a button (like "subscribe"/"become a member") in my app that user can click on, which it calls ios's IAPProvider.startMembershipPurchase, I just get Error: [IAPService] Product not found: [<my_subscription_id>].
I ensured my subscription's product id in app store connect matches with the one in my code.
I can see the "rejected" status both on my app and the subscription.
So can anyone help clarify if the app has to be approved first in order to test subscription? Or am I missing any other setup? Or it might just be my code?
Thanks in advance! Any info is super helpful!
We have verified our domain but if the file is removed from the deployed site after verification will this impact using ApplePaySession.applePayCapabilities in real time?
We use that method from the JS api in our React app to determine whether or not to show the apple pay button.
When that function is called in the browser, do the apple servers ping the https://our.domain.com/.well-known/apple-developer-merchantid-domain-association URL at that time?
Or do they check for it periodically?
The reason for asking is that with our many environments we wonder if we can verify each environment's domain by adding the file once. The file will be wiped out by our CICD process as it goes up the environment stack through our development workflow.
Or do we need to maintain that file for each environment and add something to our build process?
Hello everyone,
We're implementing Apple Pay on the web and are already live, processing transactions. However, we've noticed that occasionally the onlinePaymentCryptogram returned in the paymentData contains spaces, causing it to be rejected by acquirers.
Has anyone else encountered this issue? Any insights would be greatly appreciated.
Recently, we completed a merger with our parent company.
We are currently integrated with Apple Pay in accordance with the “Apple Pay Payment Processing on the Web” guidelines.
Due to the change in the legal entity, we proceeded with the account migration process as outlined below:
Creation of a new Apple Developer account and a new Apple Pay Identifier
Removal of the Merchant Domain (dc2-web.happy.co.kr) from the existing Identifier
Registration of the Merchant Domain (dc2-web.happy.co.kr) under the new Identifier
Using the Merchant Domain registered under the new Identifier and the Apple Pay Merchant Identity Certificate issued from the new Identifier, we attempted to obtain an Apple Pay session by sending requests to the following endpoint:
https://apple-pay-gateway.apple.com/paymentservices/startSession
However, we are intermittently receiving failure responses with an HTTP 400 status code.
With regard to these intermittent failures, we would like to inquire whether there is any propagation delay on Apple’s servers when an Apple Pay Identifier is removed and re-registered under a new account, or if there could be any other possible causes for this behavior.
We would appreciate your guidance on this matter.
Topic:
App & System Services
SubTopic:
Apple Pay