StoreKit

RSS for tag

Support in-app purchases and interactions with the App Store using StoreKit.

StoreKit Documentation

Post

Replies

Boosts

Views

Activity

Consumable Product Refund Abuse
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
2
1
1.1k
Mar ’24
Is there a way for developers to unsubscribe a specific user?
Our service has an IOS and Android app and a backend server. I have a question about handling refunds for simultaneous payments on Android and IOS. Is there any way to cancel and refund the IOS subscription payment in the backend when Google is paid first and IOS is paid almost simultaneously? For Android, unlike IOS IAP, the backend server can confirm the purchase with a purchase confirmation (ack), so even if IOS is paid first at almost the same time, it is possible to cancel it by checking the payment data in the backend and not sending an ack to Google's server if the IOS payment is already made.
0
0
441
Mar ’24
Problems with IAP in old app
My company did an app for a customer 10 years ago. The app has in-app purchases (not subscriptions). It is an Objective-C code base. Over the years we've done minor updates to this app in order to keep it in compliance, but no major overhaul. The app has been pretty reliable in the past, but recently my customer is getting a flood of complaints from users who say their in-app purchases disappear and can't be restored. It's happening too often to just be a case of bad internet connection or similar issue. The only thing that seems to be consistent is that it's never US-based users. Whenever I test this app using sandbox accounts, I cannot reproduce the problems that are being reported. I'm always able to make purchases and restore them after reinstalling the app, or restore them to a different device. The content associated with the purchases always downloads correctly, even if I intentionally interrupt and restore internet access. What can I do to figure this out? Should an IAP based app from 2014 be expected to work correctly today? Are there new legal issues with non-US app stores that we need to be aware of? I realize there isn't a lot to go on here, but I don't have any more information. Thanks, Frank
1
0
519
Mar ’24
Apple Insider Resume Purchase Reporting Errors
Only in sandboxed environment, it was fine before, recently there was an error clicking to resume purchase, showing the error cause as Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred,. NSUnderlyingError=0x303bae790 {Error Domain=ASDServerErrorDomain Code=5002 "An unknown error occurred" UserInfo={NSLocalizedFailureReason=An unknown error occurred}}}
3
0
545
Mar ’24
Resuming purchases for automatic subscriptions will show an error due to "Error Domain=SKErrorDomain Code=0" "An unknown error has occurred".
I also found this problem from this Monday morning, in the sandbox environment, resume the purchase operation, if the product is an in-app purchase non-consumable item, you can get the corresponding historical bill, but if it is an automatic subscription product, it is difficult to receive the historical bill, resulting in the inability to restore the automatic subscription product. You'll need to try a few or even 10 times to restore your purchase before you can get your previous bill. Resuming a purchase shows an error with the error Error Domain=SKErrorDomain Code=0 "An unknown error has occurred". I hope that Apple can check whether there is a related problem with the corresponding sandbox billing server, and I am anxious to wait for this problem to be solved.
0
0
351
Mar ’24
Offer Code Tracking
What does offerCode correlate to in this photo? What does CODE equals in the Offer Code URL? My goal is to track which promo codes generate successful transactions by sending a message with the CUSTOM CODE "Referral123" in the message payload to my database. Can someone please confirm that offerCode equals CODE equals "Referral123"? TIA <3
0
0
384
Mar ’24
which auto_renew_status field I should use to identify user action?
I received a version 1 server notification. auto_renew_status is true and another pending_renewal_info.auto_renew_status is 0. So did the user turn the subscription on or off? What does this mean and which field I should use to identify user action? Could anyone help me with that? The contents are as follows: { "environment": "PROD", "unified_receipt": { "status": 0, "environment": "Production", "latest_receipt_info": [ { "quantity": "1", "product_id": "com.protect.adpatrol.weekly2", "expires_date": "2023-03-19 18:12:56 Etc/GMT", "purchase_date": "2023-03-12 18:12:56 Etc/GMT", "transaction_id": "700001139057782", "expires_date_ms": "1679249576000", "is_trial_period": "false", "expires_date_pst": "2023-03-19 11:12:56 America/Los_Angeles", "purchase_date_ms": "1678644776000", "purchase_date_pst": "2023-03-12 11:12:56 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "original_purchase_date": "2023-02-28 06:18:59 Etc/GMT", "web_order_line_item_id": "700000519235393", "original_transaction_id": "700001128802427", "is_in_intro_offer_period": "false", "original_purchase_date_ms": "1677565139000", "original_purchase_date_pst": "2023-02-27 22:18:59 America/Los_Angeles", "subscription_group_identifier": "20900376" }, { "quantity": "1", "product_id": "com.protect.adpatrol.weekly2", "expires_date": "2023-03-03 06:18:57 Etc/GMT", "purchase_date": "2023-02-28 06:18:57 Etc/GMT", "transaction_id": "700001128802427", "expires_date_ms": "1677824337000", "is_trial_period": "true", "expires_date_pst": "2023-03-02 22:18:57 America/Los_Angeles", "purchase_date_ms": "1677565137000", "purchase_date_pst": "2023-02-27 22:18:57 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "original_purchase_date": "2023-02-28 06:18:59 Etc/GMT", "web_order_line_item_id": "700000519235392", "original_transaction_id": "700001128802427", "is_in_intro_offer_period": "false", "original_purchase_date_ms": "1677565139000", "original_purchase_date_pst": "2023-02-27 22:18:59 America/Los_Angeles", "subscription_group_identifier": "20900376" } ], "pending_renewal_info": [ { "product_id": "com.protect.adpatrol.weekly2", "auto_renew_status": "0", "auto_renew_product_id": "com.protect.adpatrol.weekly2", "original_transaction_id": "700001128802427" } ] }, "auto_renew_status": "true", "notification_type": "DID_CHANGE_RENEWAL_STATUS", "auto_renew_product_id": "com.protect.adpatrol.weekly2", "original_transaction_id": 700001128802427, "auto_renew_status_change_date": "2023-03-12 18:12:58 Etc/GMT", "auto_renew_status_change_date_ms": "1678644778000", "auto_renew_status_change_date_pst": "2023-03-12 11:12:58 America/Los_Angeles" }
1
0
546
Mar ’24
Webhook URL is not working in sandbox environment
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.
3
0
660
Mar ’24
Code=4097 "connection to service named com.apple.storekitd"
StoreKit don't work with iOS 17.4. After updating to iOS 17.4 our users can't make any purchases in App. Its very critical bug that affected our App. <SKPaymentQueue: 0x302bb4670>: Error in remote proxy while checking server queue: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.storekitd" UserInfo={NSDebugDescription=connection to service named com.apple.storekitd} [df94_SK2] Failed in XPC product request products(IDs: ["report"]): Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.storekitd" UserInfo={NSDebugDescription=connection to service named com.apple.storekitd} Does anyone know what to do?
1
0
953
Mar ’24
Developer License
As a new developer I apologise if this is simple. But I did call Support and they pointed me in this direction. I have an app in development that is not ready to put in the App store. I am yet to purchase a license and have been testing my app on my own devices with the 7 day expiry. I have someone prepared to test my app who is some distance from me. If I purchase a license will the app last longer than 7 days on both my and their device or will it still disappear every seven days. thanks
1
0
312
Mar ’24
StoreKit StoreView restore purchase listener
I use StoreKit's StoreView to buy in-app purchases. The purchase is working in the simulator, but how can I restore purchases? I did not find a restore handler, there is only a onInAppPurchaseCompletion but I'm missing a onRestorePurchaseCompletion or similar. This is how it looks This is my code: StoreView(ids: ["my.product.id"]) .storeButton(.visible, for: .restorePurchases) .storeButton(.hidden, for: .cancellation) .onInAppPurchaseCompletion { product, result in if case .success(.success(let transaction)) = result { print("Purchased successfully: \(transaction.signedDate)") isPremium = true } else { print("Something went wrong") } }
1
0
925
Mar ’24
Static content within apps - Automatically renewing subscription, non-renewing subscription or perpetual in-app purchase?
Static content is things like unlocking more functionality within an app, that doesn't change over time. Very basic example: Let's say I have an app that displays the workload on the CPU as a percentage in the macOS menu bar. I might want to give the user an option to pay to unlock features that also displays the workload percentage for the GPU and RAM in the macOS menu bar. For this, automatically renewing subscription is not allowed. But would a non-renewing subscription be acceptable, or does it have to be a perpetual (pay one time own forever) in-app purchase for static content?
1
0
593
Mar ’24