StoreKit

RSS for tag

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

StoreKit Documentation

Posts under StoreKit tag

363 Posts
Sort by:
Post not yet marked as solved
1 Replies
28 Views
Studying this session and trying to add code to add in- App purchases to my App, currently free in the App Store. Referring to the Code at 14:10 - 19:37 the code references await BirdBrain.shared.xxxxxxx Where is explanation of the declaration of BirdBrain struct/class or function?
Posted
by skcureton.
Last updated
.
Post not yet marked as solved
1 Replies
37 Views
Hello, We have a few FAMILY_SHARED subscriptions which received a DID_RENEW notification, with all the cancellation fields completed, the expiration date in the future and no pending_renewal_info array in it. We are not sure why did we get the DID_RENEW notification with the cancelation details, shouldn't we get a REVOKE notification? We found this in the Apple documentation: The pending_renewal_info array is returned only for app receipts that contain auto-renewable subscriptions. If customers voluntarily cancel a subscription renewal while in the grace period, the App Store pauses billing retry, and removes the transaction from pending_renewal_info. The subscription is in the grace period if the key grace_period_expires_date_ms is present and the expiration date hasn't passed. We do not handle any cancelation related logic for the DID_RENEW notification. Should we adjust the logic for this scenario or there should be a different notification type sent out. This is how the latest element looks like from the lattest_recipt_info: "auto_renew_status": "true", "unified_receipt": { "status": 0, "environment": "Production", "latest_receipt_info": [{ "quantity": "1", "product_id": "product_id", "transaction_id": "transaction_id", "purchase_date": "2023-11-07 23:01:41 Etc/GMT", "purchase_date_ms": "1699398101000", "purchase_date_pst": "2023-11-07 15:01:41 America/Los_Angeles", "original_purchase_date": "2021-10-07 22:01:42 Etc/GMT", "original_purchase_date_ms": "1633644102000", "original_purchase_date_pst": "2021-10-07 15:01:42 America/Los_Angeles", "expires_date": "2024-11-07 23:01:41 Etc/GMT", "expires_date_ms": "1731020501000", "expires_date_pst": "2024-11-07 15:01:41 America/Los_Angeles", "web_order_line_item_id": "web_order_line_item_id", "is_trial_period": "false", "is_in_intro_offer_period": "false", "original_transaction_id": "original_transaction_id", "cancellation_date": "2023-11-07 15:37:03 Etc/GMT", "cancellation_date_ms": "1699371423020", "cancellation_date_pst": "2023-11-07 07:37:03 America/Los_Angeles", "cancellation_reason": "0", "in_app_ownership_type": "FAMILY_SHARED", "subscription_group_identifier": "subscription_group_identifier" }
Posted Last updated
.
Post not yet marked as solved
2 Replies
151 Views
Payment completed with error:Error Domain=ASDServerErrorDomain Code=3539,UserInfo={storefront-country-code=CHN,client-environment-type=Sanbox,AMSServerErrorCode=3539,NSLocalizedDescription=No information about in-app purchases is provided. Please try again later}
Posted
by linan.
Last updated
.
Post not yet marked as solved
17 Replies
1k Views
Looks like I'm getting the error "There's no information available for in app purchases. Try again later. 21102" The purchase starts, gets to in progress but never completes so I cannot grant the user any item in app. App info: I made a small test application with a simple purchase button and restore purchase button, the middle button as shown in the video that's clicked is the purchase button to kick off the transaction. If the service isn't working through the manage>test purchase in appstore>sandbox(not in-app), it is likely not a code issue from my end, it is either internally from your Apple side or a config issue on the apple account application end on my side. Ive tried deleting sandbox testers, new builds, as well as doing it on test flight. Just feel like if its not workig through manage>test purchase in appstore>sandbox then its def not a my problem Logs: <SKPaymentQueue: 0x281f4eb40>: Payment completed with error: Error Domain=ASDServerErrorDomain Code=3539 "There’s no information available for In‑App Purchases. Try again later." UserInfo={NSLocalizedFailureReason=There’s no information available for In‑App Purchases. Try again later., AMSServerErrorCode=3539, client-environment-type=Sandbox, storefront-country-code=USA} Any help would be great, this has been happening for a week now , and apple has been 0 help. Thank you so much for anything here.
Posted
by BpuGames.
Last updated
.
Post not yet marked as solved
0 Replies
34 Views
Hi Team, When offering services involving one-on-one consultations conducted outside the app (e.g., via phone calls or Zoom), is it required to implement Apple's in-app purchase system as a consumable for these services, or can we utilize a third-party payment method compliant with current App Store guidelines?
Posted Last updated
.
Post not yet marked as solved
1 Replies
134 Views
Hi, I currently have an introductory offer set up in App Store Connect, which is in the 'Ready to Submit' state. When testing with the StoreKit configuration testing for Xcode, the introductory offer appears correctly, and I can successfully make and cancel purchases. However, when testing on a device without the StoreKit configuration, using a new sandbox account, the introductory offer does not appear, though the introductory price is visible for subscription. Could you advise on how to ensure the introductory offer is displayed in this scenario? Using Storekit 2
Posted Last updated
.
Post not yet marked as solved
0 Replies
71 Views
I have a production app (since Feb 2023) that has in-app subscriptions (working fine). Now I want to give offer codes to my new users so they can get free trials (2 months free trial + annual subscription). The offer code is set up like this: https://photos.app.goo.gl/V42fZWRpECnbUQsv6 I waited for 2 days for it to be available. When I redeem this code, it shows error "The code you entered could not be found". See https://photos.app.goo.gl/sGKvuw9thFFkoJWv5, https://photos.app.goo.gl/kctoWPbNu6k4JkZp6 Please help!
Posted Last updated
.
Post not yet marked as solved
1 Replies
111 Views
In the sandbox environment, when purchasing goods, I found that the payment pop-up window was very slow every time. It takes about 9 seconds. Is Apple’s server responding slowly? How to optimize speed? This is my code snippet. let payment: SKMutablePayment = SKMutablePayment(product: product) SKPaymentQueue.default().add(payment)
Posted Last updated
.
Post not yet marked as solved
9 Replies
1.6k Views
Hi community: When I try to access subscription settings, after filling in my sandbox user's password, a message "cannot connect" appears, just like below. Does someone know about a workaround to cancel or reset the subscription from the iPhone? Thanks in advance
Posted
by JesusMG.
Last updated
.
Post not yet marked as solved
0 Replies
96 Views
Hi, I'm receiving an incorrect returning state from SKPaymentTransaction. I have a subscription plan that users can purchase and have access to new features in my app, but, for some reason, even if it's a new app account or new appstore account, when it reaches the SKPaymentTransaction.TransactionState, it always says that the state is SKPaymentTransactionStatePurchased. This code haven't been changed since 2018 and this error started about 1 week ago. This is the full code: - (void)createPaymentWithProduct:(SKProduct *)product { SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product]; payment.quantity = 1; [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue] addPayment:payment]; } - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for (SKPaymentTransaction *transaction in transactions) { switch (transaction.transactionState) { // Call the appropriate custom method for the transaction state. case SKPaymentTransactionStatePurchasing: [self purchasingTransaction:transaction]; break; case SKPaymentTransactionStateDeferred: [self failedTransaction:transaction]; break; case SKPaymentTransactionStateFailed: [self failedTransaction:transaction]; break; case SKPaymentTransactionStatePurchased: { //It reaches this case but never reaches Purchasing [self purchasedTransaction:transaction]; break; } case SKPaymentTransactionStateRestored: [self restoredTransaction:transaction]; break; default: // For debugging NSLog(@"Unexpected transaction state %@", @(transaction.transactionState)); [self failedTransaction:transaction]; break; } } } After the queue, it calls this functions that ask for the payment receipt, which returns me an error because it's not purchased, so it doesn't have a receipt. - (void)purchasedTransaction:(SKPaymentTransaction *)transaction { [self sendReceiptToServerForTransaction:transaction]; if (self.purchasedNotification) { self.purchasedNotification(); } }
Posted
by dmcshiki.
Last updated
.
Post not yet marked as solved
0 Replies
103 Views
Payment completed with error:Error Domain=ASDServerErrorDomain Code=3539,UserInfo={storefront-country-code=CHN,client-environment-type=Sanbox,AMSServerErrorCode=3539,NSLocalizedDescription=没有提供App内购买的相关信息。请稍后重试}
Posted
by linan.
Last updated
.
Post not yet marked as solved
1 Replies
380 Views
I don't know how this happened or how to reset this, but I can't test the StoreKit part of my TestFlight app anymore. When I try to retrieve or buy products (IAPs), I get all kinds of strange behavior. I think it is caused by storekitagent thinking the app is in "Xcode sandbox environment". One of the errors from storekitagent looks like this: [51852D62] [LoadSubscriptionStatusTask]: Subscription status request failed with error - Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={AMSStatusCode=0, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <468756B3-DA53-4FED-B35C-E093954C27D8>.<1>, NSErrorFailingURLKey=http://localhost:49828/inApps/subscriptions?guid=98DD60024C21&reason=push, _kCFStreamErrorDomainKey=10, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <468756B3-DA53-4FED-B35C-E093954C27D8>.<1>" ), NSLocalizedDescription=A server with the specified hostname could not be found., NSErrorFailingURLStringKey=http://localhost:49828/inApps/subscriptions?guid=98DD60024C21&reason=push, NSUnderlyingError=0x122f638d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" UserInfo={_NSURLErrorNWPathKey=satisfied (Path is satisfied), interface: lo0, _kCFStreamErrorCodeKey=-72000, _kCFStreamErrorDomainKey=10}}, _kCFStreamErrorCodeKey=-72000} It looks like it's trying to connect to a local server instead of contacting Apple's App Store servers. I'm on the latest macOS and Xcode. Any help is greatly appreciated:) Thanks!
Posted
by nniko.
Last updated
.
Post not yet marked as solved
0 Replies
69 Views
A couple of months ago I released an app made with react-native expo in the app store. In the app i use a library called expo-store-review, which uses the SKStoreReviewController from swift. The in app review modal shows up as expected, but when users leave a review, I don't receive it. I've tested it with multiple friends and family, standing next to them while they where leaving the review, and everything on their end went correct and no errors show up. It looks like the only reviews I do receive is when users also leave a text with the review or do it in the appstore directly. I've tried using a different library for the in app review, but that also didn't fix the problem. Has anyone had a similar issue and if so, knows how to fix it?
Posted
by luca_bc.
Last updated
.
Post not yet marked as solved
0 Replies
56 Views
We have an app on the Mac AppStore that has the following nested structure A.app |-- Contents/MacOS |-- A |-- B.app |-- C.app A.app is a launcher application that acts as a hub to launch B.app and C.app. We would like to use [SKStoreReviewController requestReview] to increase the number of users that rate the app. When the API is called from B.app or C.app, the rating dialog shows up for B.app and C.app respectively, but these apps don't independently exist on the AppStore (only A.app does). Is it possible to request a review for A.app from B.app/C.app using SkStoreKitReviewController?
Posted Last updated
.
Post marked as solved
15 Replies
762 Views
Hi there I have a problem testing IAP's in my App. I'm able to handle purchases perfectly fine in xcode previewes, using storekit 2 with a configuration File. Now in the Testflight Beta version (Internal Testing) I get the following Error: "There's no information available for In-App Purchases issue. Try again later 21102" My Storekit implementation is very similar to this tutorial: https://www.revenuecat.com/blog/engineering/ios-in-app-subscription-tutorial-with-storekit-2-and-swift/#h-implementing-on-device-subscriptions-with-storekit-2-in-swift All The IAP prerequisits should be met acording to: (https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/overview-for-configuring-in-app-purchases) https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/overview-for-configuring-in-app-purchases I'd appreciate it, if someone could help me with this issue. Chris
Posted
by Chriss00z.
Last updated
.
Post not yet marked as solved
2 Replies
271 Views
Hi, I'm working on In App Purchase feature for my app. I run my app with XCode and try to buy a consumable product, and then I got a error with the message "There's no information available for In-App Purchases issue. Try again later 21102" Has anyone else come across this? If so, what was the fix?
Posted
by CLDevs.
Last updated
.
Post not yet marked as solved
0 Replies
125 Views
Hello, We are planning to launch in-app purchases to our app with millions of MAUs. The plan is to sell more than 10,000 products in the future, and we saw that there's a limit to non-consumable products of 10K so we didn't want that to limit us. Proposed Solution As a result, we have decided to launch consumable products instead, and manage unlocking the content on the server side once a user has successfully purchased an item. The client will also manage payments that couldn't be confirmed server side by temporary storing information about the product which has been purchased (but not unlocked) so that we can recover gracefully. The plan is to create numerous consumable products, where each product has a specific price. Thus when a user wants to purchase product A, we will trigger the IAP flow with the consumable apple product which matches the price of product A. If we offer products from 15 pounds to 100 pounds, we'll be creating non-consumable products: Product 1: 15.99 Product 2: 16.99 Product 3: 17.99 ... etc So you can think of it as tiering apple products together based on the price. The product in our catalog will not have a one to one mapping with the apple product. So I have two questions: Is this okay with Apple's guidelines? Should we expect Apple to block the release? Is there a limit on the pricing of a consumable product? Can we go above 100 dollars?
Posted
by farish.
Last updated
.
Post not yet marked as solved
0 Replies
123 Views
I need to implement in-app purchases for my iOS application. For which I need to accept the Paid Applications Agreements but on the App Store Connect "Agreements, Tax and banking" page under agreements tab. I see no agreements. I have already accepted "Apple Developer Program License Agreement"and "Apple Developer Agreement". I have attached the screenshot of my agreements page. Most of the solutions I have seen online have a table at this page like so. but I see "There are no Agreements." I should see a table like this one Here's my apple developer homepage which says that I have accepted two agreements I am signed-in as the account holder and admin of this account. Do I need to create a certificate or something?
Posted Last updated
.
Post not yet marked as solved
0 Replies
99 Views
I intend to group together several free-to-play games in a bundle. While these games will be accessible without charge, users will have the option to subscribe (for example, to a VIP club) and make additional purchases for consumable or non-consumable items. Although I've reviewed Apple's guidelines, I haven't found any information indicating whether it's permissible to offer consumable and non-consumable purchases after users have paid a subscription fee to access all the games in the bundle. I would appreciate your assistance in clarifying this matter.
Posted
by irene1234.
Last updated
.