Post not yet marked as solved
Hello, financial reports for April 2024 are ready since the beginning of May in AppStore connect but the “Expected payment date“ is not present in the top right of the page. Anyone facing the same issue? Do you know the reason for that?
Post not yet marked as solved
Hi, I am testing a consumable in-app purchase on my app, with a Sandbox account on an iPad device.
The transaction was successful, as I saw "You're all set. Your purchase was successful. [Environment: Sandbox].
I set a break point in Xcode after the line await transaction.finish() in following code
private func handle(transactionVerification result: VerificationResult ) async {
switch result {
case let .verified(transaction):
guard
let product = self.products.first(where: {
$0.id == transaction.productID
})
else {
return
}
self.addPurchased(product)
await transaction.finish()
return. <----- breakpoint
And I saw those property values for the transaction
id UInt64 88*****848
originalID UInt64 437****2496
.
Then I use the originalID value 437*****2496 in a server library call in node.js
....
const environment = Environment.SANDBOX
....
const client = new AppStoreServerAPIClient(encodedKey, keyId, issuerId, bundleId, environment)
....
const response = await client.getTransactionInfo("4379072496")
I got
apiError: 4040010, errorMessage: 'Transaction id not found.'
Could someone please tell me if I use the library call correctly with the right id? And why I got the error?
Thank you very much!
Kind regards,
Shih-Chin Yang
[Edited by Moderator]
Post not yet marked as solved
Hi,
I am testing an consumable in-app purchase for my app on an iPad, whenever I select to purchase, it always shows "For testing purpose only. You will not be charged for confirming this purchase.". Then I touch the blue Purchase button. It instantly shows "Done", then alerts "You're all set. Your purchase was successful. [Environment: Xcode]. It never asks me to enter a Sandbox account.
I followed the instructions on "Testing in-app purchases with sandbox" page, but I can not find the sandbox account in Settings > App Store.
I expected to see [Environment: Sandbox] so I could get the transaction id for App Store Server API.
My iPadOS version is 17.4.1. My Xcode version is 15.1 and I use StoreKit with SwiftUI view.
Can someone please shed some light on why I always get [Environment: Xcode]? I googled a lot, the process to test with Sandbox seems to be straightforward, But I just could not get it right.
Thank you very much!
KInd Regards,
Shih-Chin Yang
Post not yet marked as solved
Hi,
Thanks for getting back to me regarding my query. I'm developing a Cordova app that includes games with an initial free tier and additional tiers available through in-app purchases. Here’s a detailed explanation of what I’m aiming to achieve:
Users can play a set of games for free initially (Free Tier).
After playing a certain number of games, users can purchase additional game tiers:
Tier 1: Adds 3 more games.
Tier 2: Adds 6 more games.
Tier 3: Adds 9 more games.
Users can continue playing the games in any purchased tier indefinitely.
If users do not wish to purchase additional tiers, they can continue playing the free tier games with limited themes but without restrictions on play count.
Questions:
How can I configure App Store Connect to offer the Free Tier initially and then present the in-app purchase options for the additional tiers?
Is there a specific configuration in App Store Connect that supports this model, or do I need to handle this logic within the app itself?
I appreciate any guidance you can provide on setting this up correctly.
Best regards,
T
Post not yet marked as solved
Is it possible to initiate an iap flow from App Clips?
There's not a clear answer to this in the docs. StoreKit is NOT listed as an unapproved framework for App Clips, but in-app purchases ARE listed as "not recommended" for App Clip functionality.
I tried setting up a test with a StoreKit config file on the App Clip in XCode and the products weren't returned but... storekit testing... it would be great to get confirmation on this functionality after the iOS 17 updates.
Post not yet marked as solved
inapp purchase product has been in review for more than 24 hours, although we have another product that was submited for review after the first one and it has been approved already
Post not yet marked as solved
Hi,
I am developing Cordova apps/games with in-app purchase products as well as an initial product as non-paid (Free) tier: New users will be able to play freely for a set of games as default at the beginning. Then, if they would like to have more games with different set of attributes or themes, they can add more games with in-app purchases. It is similar to a game called Subway Surfers in App Store I would play in the past.
A new player initiates games as Free Tier. After, let us say 3 games, the user is asked if he/she would like to have more games to play with different scenes/themes in different Tiers, in addition to their disposal: Tier 1, Tier 2 and Tier 3. For example Tier 1 adds 3 more games into the Free Tier games so they can play 6 games in the set;Tier 2 add 6 more games and so 9 games they can play and so on. Each individual game in their set is a variant of others in differing Tiers. If they don't wish and play Free Tier games, they may play them too, with limited set of themes but infinite times.
If a user chooses a tier, let us say Tier 1, and when they play 6 games, they are asked if they would like advance to Tier 2 or Tier 3. If they choose Tier 2, as they complete the respective games they will be asked for Tier 3. However, if they don't wish to advance, again they can play current Tier games as many times as they wish.
It is like non-subscription apps then converted to subscription-based ones. In App Store Connect, I created a number of products for in-app purchases for an app.
How I can deliver this Free Tier games in the app and let users try it and allow them to choose in-app purchase products available in AppStore Connect.
I would appreciate response and support.
Best
Lexxyacc
Post not yet marked as solved
Hello,
I try to create a product in app purchase with the API calls. I meet a problem during this creation for some products, see the error message :
Erreur lors de l'appel d'API Apple : { "errors" : [ { "id" : "89876075-5f2a-44ea-a910-fcbcf95ea641", "status" : "409", "code" : "ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE", "title" : "The provided entity includes an attribute with a value that has already been used", "detail" : "This product ID has already been used", "source" : { "pointer" : "/data/attributes/productId" } } ] }
It seems that the productId has already created but when we check in the app we cannot find its.
Is it possible that if the productId has already created and deleted after ? And now we cannot created again with the samed productId ?
Thank you in advance to help us.
Best Regards.
Post not yet marked as solved
Hey everyone,
I'm facing a bit of a puzzling issue with the review of my app, particularly with the in-app purchase functionality for message extension/sticker packs. I've implemented the entire store using StoreKit for in-app purchases, using exactly the same code like it is in Apple's demo application (https://developer.apple.com/documentation/storekit/in-app_purchase/implementing_a_store_in_your_app_using_the_storekit_api).
Here's the problem: the products appear correctly according to what's set up in App Store Connect (In-App Purchases section), and the purchase process works flawlessly in sandbox and TestFlight environments. However, during the review process, I received the following feedback:
"Guideline 2.1 - Performance - App Completeness
We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, the app kept loading indefinitely when we tapped on “Shop”. Please review the details and resources below and complete the next steps."
It seems that the products are not loading properly in the environment used by the reviewers. What's most puzzling is that another app with the exact same store implementation has passed the review and is available in the store (https://apps.apple.com/pl/app/the-prince-frog/id6478831171?l=pl).
I'm running out of ideas on what could be causing this discrepancy, especially since everything is functioning correctly in sandbox and TestFlight. Could someone please take a look at the code in Store.swift in this demo project and point out what might be missing?
Any help or insights would be greatly appreciated! Thanks in advance.
@MainActor
func requestProducts() async {
do {
//Request products from the App Store using the identifiers that the Products.plist file defines.
let storeProducts = try await Product.products(for: productIdToEmoji.keys)
for product in productIdToEmoji.keys {
toDebug = toDebug + ", " + product
}
var newCars: [Product] = []
var newSubscriptions: [Product] = []
var newNonRenewables: [Product] = []
var newFuel: [Product] = []
//Filter the products into categories based on their type.
for product in storeProducts {
switch product.type {
case .consumable:
newCars.append(product)
case .nonConsumable:
newCars.append(product)
case .autoRenewable:
newSubscriptions.append(product)
case .nonRenewable:
newNonRenewables.append(product)
default:
//Ignore this product.
print("Unknown product")
}
}
//Sort each product category by price, lowest to highest, to update the store.
cars = sortByPrice(newCars)
subscriptions = sortByPrice(newSubscriptions)
nonRenewables = sortByPrice(newNonRenewables)
fuel = sortByPrice(newFuel)
} catch {
print("Failed product request from the App Store server: \(error)")
errorMessage = error.localizedDescription
}
}
Post not yet marked as solved
We have an online competition app. Users can pay the competition entry fee using IAP. For every competition, we are creating a new IAP product. Do we need to submit the new build every time we create the new IAP product?
Post not yet marked as solved
When using the new currentEntitlementTask ViewModifier to check for the status of a non-consumable IAP when should you call transaction.finish()?
Also, since currentEntitlementTask will trigger whenever the app/view is run it will call transaction.finish every time. Is it bad to repeatedly call .finish on a already finished transaction?
Currently my app works fine when making purchases and using currentEntitlementTask and @Environment to grant access to the purchased content but I know that all the transactions are unfinished and the docs say you should call transaction.finish() to tell StoreKit that you have given the user access to the content.
Thanks for any help/advice here.
Post not yet marked as solved
Do we require a Vietnamese bank account to receive payments from in-app purchases for our new educational app being developed in Japan, or will the funds be automatically transferred to our Japanese bank account?
Post not yet marked as solved
I have already created consumable in-app purchases in App Store Connect which are available in my app.
Then I created a "Discount Code" UIButton which presented custom UI for the user to input a code for another in-app -purchase at a lower price but that build was rejected because you cannot have custom code for this sort of thing.
Ref: Apple Documentation: presentCodeRedemptionSheet()
Finally I got it through review when I changed the UI but then I realized that I can't offer a free consumable in-app purchase. The minimum price is US$0.29. I would prefer a free consumable in-app purchase to give to freelancers I am owkrin with for them to test the app with.
I know that there are ways to do it when using subscriptions but my app only using consumable in-app purchases which align better with my business model and the value offering of my app.
There must be some way of creating a single-use free consumable discount code which will also get through App Store Review.
Anyone managed something like this?
Thanks.
Post not yet marked as solved
If an in-app purchase is made when my app is not running, the next time the app launches Transaction.updates will emits a transaction for the purchase. That's great.
But if an in-app purchase is refunded when my app is not running, the next time the app launches Transaction.updates will NOT emits a transaction for the refund. Is that the expected behaviour?
If yes, in order to check for refunds at app launch, are we supposed to cycle trough Transaction.all and search for them?
Thank you
I have a macOS app (AppKit-based, not Mac Catalyst) and an iOS app serving a very similar purpose and user group. Both are currently using non-consumable IAPs to unlock functionalities. I‘m considering a subscription model and wonder if both apps could share the same IAP products.
I‘m well aware that both apps need to use the same Bundle ID / App Store Connect entry, so I‘m willing to discontinue the existing Bundle IDs (while keeping the apps installable for existing customers), but Apple‘s info about „Universal Purchase“ is only mentioning Mac Catalyst apps for macOS:
Mac Catalyst. With Xcode 11.4 or later, Mac apps built with Mac Catalyst can share a bundle ID with the iOS version of the app, so universal purchase is supported.
Can an AppKit-based macOS app and an iOS app share the save Bundle ID and offer a Universal Purchase?
Post not yet marked as solved
I entered Setting > App store section. But ı cannot see anything about sandbox account. What should ı do?
We're testing in-app purchases in our iOS app, and Product.products(..) returns an empty vector in the sandbox environment, both when building & running in xcode and on testflight. We've eliminated all the obvious reasons:
Paid App Agreement is done
InAppPurchase Products are in Ready to Submit
The ProductId's are matching
Sandbox tester account is set up and logged in on testing device
Currently we're out of ideas for why the IAP purchase products are not showing up - would appreciate any help!
Post not yet marked as solved
Your in-app purchase has been returned. Fix the marked items and submit it again. For more information, see the Notes from App Review.
And when I click on Notes from App Review:
3.1.1 - new IAP type
New type: Non-Consumable
Previous type: Non-Renewing Subscription, Consumable
Recommend: Download
I don't understand what's wrong here. I just created a non-consumable product and set everything. But it's not clear to me what's wrong and what kind of action I should take. Can you help me figure this out, please?
Post not yet marked as solved
Hi, I am implementing in-app subscriptions in my application and would like to set up a module in my admin portal by which I can create subscription products via my custom module. For this purpose I need API's that allow me to create subscription products. Please let me know if such a solution is possible, if it is, then please share the API's and payload by which I could implement it.
Thank you in advance.
Post not yet marked as solved
Hi, I'm implementing in app purchase/subscriptions for my application and would like to setup a financial report module in my admin portal. I am bit confused, is it possible to get financial reports and invoices via the API when in sandbox account. Also I would greatly appreciate it if you could also share the API and parameters needed, by which we can get the finance reports and invoices.
Thank You in advance.