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
StoreKit
RSS for tagSupport in-app purchases and interactions with the App Store using StoreKit.
Post
Replies
Boosts
Views
Activity
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.
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
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}}}
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.
Hi Folks,
We have an app using StoreKit 1 (migrating soon). Sandbox testing worked well until recently. Now, the Restore API throws an error (ASDServerErrorDomain Code=5002: "An unknown error occurred"). We're using the latest Xcode/iOS on real devices. Purchase works fine, but Restore fails in Dev only (Prod is okay). Any idea what might have changed?
Thank you,
Kam
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
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"
}
I entered Setting > App store section. But ı cannot see anything about sandbox account. What should ı do?
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.
I don't understand why apple support really lack of response. It take 4 days now I'm
Hello.
How can I get transaction information when a payment request is submitted to the app store server
I have set the callback address in the background( https://callback.dev.oneduapp.com/pay/apple/callback ). When the client completes the purchase of a non automatic renewal subscription and is successful. The Apple Store has not had a callback
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?
I want to test the in-app purchase in visionOS Simulator. I logged in to the Sandbox account in Simulator and was prompted to send the verification code to the phone number I wrote in the previous step. I entered the verification code accurately, but I couldn't log in normally. It was wet many times.
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
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")
}
}
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?
I have an app in store which has in app subscription, while checking for renewal it is not providing me exact end date of subscription based on which I have to lock / unlock certain features. It never fetch right date to verify, this is seriously a little thing which seems to be too complicated.
Hi everyone, is it possible to launch my app for free first and then convert it to freemium with in-app purchases? Since I currently have very little content in my app, I want to focus on releasing it for free and collecting user feedback first. Afterwards, I want to convert it to freemium. Is there such a possibility?