Suggestions for Improving Server Notifications for In-App Purchases

Dear Apple Development Team,

I would like to draw attention to certain aspects of working with Server Notifications for In-App Purchases that could be improved to enhance development convenience and API efficiency.

1. Lack of Information on Non-Consumable Purchases in Server Notifications

Currently, Server Notifications do not provide information about non-consumable purchases. This creates certain inconveniences when validating such purchases on the server. It would be extremely useful to have the ability to verify non-consumable purchases in the same way as subscriptions.

Moreover, there is currently no way to obtain information about the amounts paid for non-consumable purchases, even with additional API requests. This limitation significantly complicates financial reporting and analytics for apps that utilize non-consumable purchases. While we can obtain information about the amount paid by the user for a subscription, we have no equivalent capability for non-consumable purchases.

Adding this information to Server Notifications or providing an API endpoint to retrieve it would greatly improve our ability to track and analyze non-consumable purchase data without relying on client-side reporting.

2. Inconsistency in Token and Signature Handling

There is some inconsistency in the approaches to authentication and verification between various Apple APIs. For example:

  1. When using Sign In with Apple, the approach with keyid is applied for JWT verification.
  2. In Server Notifications for In-App Purchases, certificate information is repeatedly duplicated in each notification.

This leads to the need to implement different methods of JWT verification depending on the API being used. Additionally, the current approach with Server Notifications results in data redundancy: the useful payload is about 1.5 KB, while repetitive certificate information takes up about 17 KB in each notification.

Unifying authentication and verification approaches across different APIs could significantly simplify development and improve data processing efficiency.

We would appreciate consideration of these suggestions for API improvement. This could substantially simplify developers' work and increase the efficiency of integrating Apple services into applications.

Thank you for your attention to this matter.

Answered by App Store Commerce Engineer in 802064022

Thank you for your feedback, a couple responses which may help address your concerns.

Currently, Server Notifications do not provide information about non-consumable purchases. This creates certain inconveniences when validating such purchases on the server. It would be extremely useful to have the ability to verify non-consumable purchases in the same way as subscriptions.

Please see the ONE_TIME_CHARGE notification type (https://developer.apple.com/documentation/appstoreservernotifications/notificationtype)

Moreover, there is currently no way to obtain information about the amounts paid for non-consumable purchases, even with additional API requests. This limitation significantly complicates financial reporting and analytics for apps that utilize non-consumable purchases. While we can obtain information about the amount paid by the user for a subscription, we have no equivalent capability for non-consumable purchases.

Please see the price field (https://developer.apple.com/documentation/appstoreserverapi/price)

This leads to the need to implement different methods of JWT verification

For validating App Store Server Notifications, we recommend the App Store Server Library, which provides methods to verify and decode notifications. (https://developer.apple.com/documentation/appstoreserverapi/simplifying_your_implementation_by_using_the_app_store_server_library)

Thank you for your feedback, a couple responses which may help address your concerns.

Currently, Server Notifications do not provide information about non-consumable purchases. This creates certain inconveniences when validating such purchases on the server. It would be extremely useful to have the ability to verify non-consumable purchases in the same way as subscriptions.

Please see the ONE_TIME_CHARGE notification type (https://developer.apple.com/documentation/appstoreservernotifications/notificationtype)

Moreover, there is currently no way to obtain information about the amounts paid for non-consumable purchases, even with additional API requests. This limitation significantly complicates financial reporting and analytics for apps that utilize non-consumable purchases. While we can obtain information about the amount paid by the user for a subscription, we have no equivalent capability for non-consumable purchases.

Please see the price field (https://developer.apple.com/documentation/appstoreserverapi/price)

This leads to the need to implement different methods of JWT verification

For validating App Store Server Notifications, we recommend the App Store Server Library, which provides methods to verify and decode notifications. (https://developer.apple.com/documentation/appstoreserverapi/simplifying_your_implementation_by_using_the_app_store_server_library)

Suggestions for Improving Server Notifications for In-App Purchases
 
 
Q