App Store Server Notifications

RSS for tag

Monitor subscription events in real time with server notifications from the App Store using App Store Server Notifications.

App Store Server Notifications Documentation

Posts under App Store Server Notifications tag

104 Posts
Sort by:
Post not yet marked as solved
1 Replies
57 Views
Hi I'm working on IAP for my app, with all products being consumables. If I use App Store Server Notifications, will I get updates on the payment status (successful, failed, pending, etc.) of my products? I've worked on Android IAP, which provides such updates via subscriptions on Google Cloud Console. Does App Store Server Notifications work the same? The reason I need this is for the cases where the payment is slow, interrupted or any other potential issues.
Posted
by nmtuan14.
Last updated
.
Post not yet marked as solved
1 Replies
115 Views
Hi. We have recently switched to server notification V2. Based on this documentation (notificationType): If the subtype is GRACE_PERIOD, continue to provide service through the grace period. If the subtype is empty, the subscription isn’t in a grace period and you can stop providing the subscription service. Also, base on another documentation (StoreKit): Throughout the billing grace period, the value of isInBillingRetry is true, which indicates that Apple is attempting to automatically renew the subscription. Now, I'm receiving DID_FAIL_TO_RENEW server notification with GRACE_PERIOD subtype where gracePeriodExpiresDate is in the future, but isInBillingRetryPeriod is false (additional note: user has been in trial period and now must be charged as trial has ended). The question is: Is this situation a valid Grace Period even if user is not in billing retry period? And if yes, please elaborate why this is the case. Thank you!
Posted Last updated
.
Post marked as solved
2 Replies
189 Views
**Question 1: ** Will ServerNotificationV2 be able to provide real-time notifications regarding Storekit1 contract renewals, and is receiving Storekit1 notifications in ServerNotificationV2 an expected use? (The documentation does not say that receiving Storekit1 notifications is not recommended, so we would like to confirm Apple's assumption.) **Question 2: ** If ServerNotificationV2 is not able to receive Storekit1 notifications in real time, what is the expected time lag?
Posted Last updated
.
Post not yet marked as solved
0 Replies
178 Views
There is the bundleVersion exist in this document, and for the notificationType CONSUMPTION_REQUEST, the payload what we always received contains the bundleVersion, but today we receive one CONSUMPTION_REQUEST request payload without the bundleVersion. So we wanna know what means of bundleVersion? Is that always exist? when does it not exist?(for both notification type) Thanks in advance
Posted
by fpei.
Last updated
.
Post not yet marked as solved
3 Replies
211 Views
Hi, I'm working on in-app purchases, and I've created a webhook to receive data sent by the app store whenever there's user subscription activity (CANCEL, DID_RENEW, DID_CHANGE_RENEWAL_STATUS, EXPIRED). Below is the full path of the webhook URL: Webhook URL: https://api.envelopegenerator.live/api/subscription/subscriptionnotification I've set up the webhook to retrieve the status of user subscriptions, but it's not receiving any calls from the app store.
Posted
by Armia_Dev.
Last updated
.
Post not yet marked as solved
3 Replies
231 Views
Hi, We are implementing App Store Server Notifications V2 and currently testing the implementation in Sandbox. For inAppOwnershipType PURCHASED subscriptions we are getting all server notifications for any subscription change up until eventual expiration/cancellation. For FAMILY_SHARED subscriptions we are expecting the notifications we get to mimic same behavior as for PURCHASED inAppOwnershipType subscriptions, while in reality the following behavior occurs: Account gets access to subscription through family sharing We get only 2 notifications for FAMILY_SHARED subscription - INITIAL_BUY and RENEWAL We do not get any more notifications for said subscription - even when it, for example, expires. Is this behavior expected in Sandbox? Will it work differently in Production environment? (We do have cronjobs that sync data on a specific interval with the app store APIs, but we've been relying on server notifications as a main source of information for subscription changes because it is near realtime, with this limitation our architecture might need to change) Thanks!
Posted Last updated
.
Post not yet marked as solved
2 Replies
274 Views
Hello, We are a mobile game company, We have encountered an issue concerning the refunds of consumable products purchased through our app. The issue arises when some Apple users request refunds after purchasing these products, and Apple approves these refund requests even if our users have already consumed it. This situation leads to financial losses and creates an unfair experience among users. We are using App Store Server Notifications V2. So how can we prevent Refunding if user used already our product
Posted Last updated
.
Post not yet marked as solved
0 Replies
221 Views
We received a notification DID_FAIL_TO_RENEW(subtype:(Empty)) from App Store when the subscription failed to renew because of a billing issue. After this case, we predict that we will receive the notifications based on the following two cases. If the user resolves a billing issue: Receives notification DID_RENEW(subtype:(BILLING_RECOVERY)) If the user does not resolve the billing issue and cancels the subscription: Receives notification EXPIRED(subtype:BILLING_RETRY) Based on the above, I would like to ask two questions Are the above two cases and the notification types we expected correct? If wrong, please tell me what is wrong. If there are other than the above two cases, please tell me the case and notification type.
Posted
by hiro-yuki.
Last updated
.
Post not yet marked as solved
0 Replies
250 Views
Hi, I have a question about Apple subscriptions. It is my understanding that when a user upgrades, the subscription prior to the upgrade is already prorated and partially refunded. Is it possible to issue a refund for the upgraded subscription and then request a refund for the pre-upgrade subscription? The server notifications I received were as follows purchase A upgrade A -> B A would have already been prorated and partially refunded refund B Has a revocationReason / revocationDate expired B refund A - should have already been prorated and partially refunded, but if the user requests another refund, will it be given? no revocationReason / revocationDate My guess is no because it's already in revoke status. refund reversed A This may not be present
Posted Last updated
.
Post not yet marked as solved
2 Replies
578 Views
Hi, We are trying to verify transaction IDs using the App Store Server Library for Python. We have been able to successfully send a test notification, but then when trying to get transaction information for a specific transaction ID we are receiving the InvalidAppIdentifierError (error code: 4000002). We have verified that the bundle_id is correct and matches what we see in App Store Connect, and the bundle_id seems to be valid and work when we sent a test notification. We have also tried setting the bundle_id to be equal to our <TEAM ID>.<BUNDLE_ID>, which is the format for the application-identifier in our TestFlight Build Metadata, but we still receive the same error when doing so. We would greatly appreciate any help or advice on how to resolve this, and please let me know if any more information is needed to help us. import os from appstoreserverlibrary.api_client import AppStoreServerAPIClient, APIException from appstoreserverlibrary.models.Environment import Environment from appstoreserverlibrary.signed_data_verifier import VerificationException, SignedDataVerifier from typing import List private_key_path = "REDACTED" with open(private_key_path, 'rb') as file: private_key = file.read() key_id = "REDACTED" issuer_id = "REDACTED" bundle_id = "REDACTED" environment = Environment.SANDBOX client = AppStoreServerAPIClient(private_key, key_id, issuer_id, bundle_id, environment) def load_root_certs(root_certificate_dir: str) -> List[bytes]: root_certificates = [] for file_name in os.listdir(root_certificate_dir): if not file_name.endswith('.cer'): continue root_cert = file_name with open(os.path.join(root_certificate_dir, root_cert), 'rb') as file: root_certificates.append(file.read()) return root_certificates root_certificates = load_root_certs("REDACTED") enable_online_checks = True signed_data_verifier = SignedDataVerifier(root_certificates, enable_online_checks, environment, bundle_id) try: response = client.get_transaction_info(transaction_id_ios) signed_transaction_info = response.signedTransactionInfo or "" print(signed_transaction_info) payload = signed_data_verifier.verify_and_decode_notification(signed_transaction_info) print(payload) except (APIException, VerificationException) as e: print(e)```
Posted Last updated
.
Post not yet marked as solved
1 Replies
299 Views
Hi colleagues! I've encountered a technical issue during the setup of my In-App Purchase (IAP) server for my app (com.forgetmenuts) on AppStore Connect. In the "Info" section of my app's page on AppStore Connect, I've configured the "App Store Server Notifications" endpoints to: https://sys-conf.com/hooks/subscription/ios/debug. Here's the challenge I'm facing: When I initiate a "Request a Test Notification," everything seems to function as expected. I successfully receive the "testNotificationToken." However, the issue arises when I attempt to request the status of this token. At this stage, I encounter an error with the firstSendAttemptResult indicating a TLS_ISSUE. the error is described here: app store docs. I have verified the TLS configurations of my domain (sys-conf.com). Both TLS 1.2 and 1.3 are active and functioning correctly (verified through this TLS Checker: site24x7.com/tools/tls-checker.html I am looking for guidance on how to resolve this TLS issue. Any insights or suggestions from the community would be greatly appreciated, especially from those who might have faced and resolved similar challenges.
Posted
by luck-duck.
Last updated
.
Post not yet marked as solved
1 Replies
325 Views
We have noticed that the notification service extension stops working after app update for some users and it only starts working again after rebooting the device. Does anybody else have similar problem and what was the solution?
Posted
by mahdi_qw.
Last updated
.
Post marked as solved
2 Replies
383 Views
Hi, some day ago I got these webhook events for a subscription: 2024-01-06 10:40:47 SUBSCRIBED subtype INITIAL_BUY 2024-01-20 03:02:29 DID_RENEW subtype BILLING_RECOVERY 2024-01-20 03:52:08 DID_CHANGE_RENEWAL_STATUS subtype AUTO_RENEW_DISABLED 2024-01-20 10:41:03 DID_FAIL_TO_RENEW (no subtype was received) When I get the subscription status form appstore server API, status is 1 (active). We don't have grace period enabled in our app. I'm not sure how to interpret this result; from our perspective we should remove access to the user.
Posted
by nicolas1.
Last updated
.
Post not yet marked as solved
2 Replies
352 Views
I received a refund notification for a consumable product, but the latest_receipt_info property does not exist in the unified_receipt property, or there are no transactions that match the original_transaction_id property value. Are the original_transaction_id property values really refunded? How can I check the cancelation_date_ms value and cancelation_reason value? V2 Notifications cannot be changed. I'm constantly struggling because of this phenomenon. Please reply. https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/handling_refund_notifications
Posted
by bisu.
Last updated
.
Post not yet marked as solved
0 Replies
313 Views
I received a refund notification for a consumable product, but the latest_receipt_info property does not exist in the unified_receipt property, or there are no transactions that match the original_transaction_id property value. Are the original_transaction_id property values really refunded? How can I check the cancelation_date_ms value and cancelation_reason value? https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/handling_refund_notifications
Posted
by bisu.
Last updated
.
Post not yet marked as solved
0 Replies
310 Views
I received a refund notification, but the latest_receipt_info property does not exist inside the unified_receipt property, or there is no transaction matching the original_transaction_id property value. How can I check the cancellation_date_ms property value?
Posted
by bisu.
Last updated
.
Post not yet marked as solved
0 Replies
354 Views
I don't often get CONSUMPTION_REQUEST or indeed REFUND but when I do I receive the same CONSUMPTION_REQUEST 3 times, 8 hours apart, before I do get the REFUND notification several hours after the 3rd and final CONSUMPTION_REQUEST. The response I get from the PUT of /inApps/v1/transactions/consumption/{transactionId} is 202 so I can only assume it was accepted and good. Is the fact I received it 3 times an indication that it was poorly formatted or incorrect somehow? Is there anyway to test the consumption PUT? I've yet to see an in-app consumable that I received a CONSUMPTION_REQUEST for, that was 100% consumed, and wasn't REFUND_DECLINED. They have all been refunded to date. This makes me suspicious that I'm doing something wrong even though all the information I'm getting says otherwise?
Posted
by Seoras68.
Last updated
.
Post not yet marked as solved
0 Replies
341 Views
Hi, Please take a response to me about my Notification Service Entitlement Request. I have requested 5 times but i didn't get any repsonses. The application cannot be released because authorization is not granted. Please check my case and leave a response as soon as. Thanks,
Posted Last updated
.