In-App Purchase

RSS for tag

Offer extra content, digital goods, and features directly within your app using in-app purchases.

Posts under In-App Purchase tag

200 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

I have some questions about the values passed in StoreKit's applicationUsername and appAccountToken.
Hello, I am using StoreKit to provide in-app purchase functionality. To support devices running iOS 15 and below, I am using both StoreKit v1 and v2. I have some questions regarding the values for applicationUsername and appAccountToken. We are planning to convert a value used for user purchase verification into a UUID and pass this value as applicationUsername and appAccountToken. Since the UUID is not a fixed value like a user ID, a different value will be passed each time a purchase is made. We would like to know if there are any issues with passing a different value each time. Additionally, if anyone has experience using a dynamically changing value like a payload instead of a fixed user ID, we would appreciate it if you could share your insights. StoreKit (Original API) let payment = SKMutablePayment(product: product) payment.applicationUsername = uuid SKPaymentQueue.default().add(payment) StoreKit try await product.purchase( options: [ .appAccountToken(UUID(uuidString: uuid)!) ] ) The reason I'm asking these questions is because I came across a past document related to Detecting Irregular Activity: In the latest documents, this content is missing, so implementing it as described above seems to be fine. However, since the payment functionality is critical, I need to confirm. Past document What can I do to help combat fraud during purchase transactions? Recent documents requesting_a_payment_from_the_app_store applicationUsername For the original StoreKit API, there was content related to detecting irregular activity as mentioned above. However, for StoreKit v2, the appAccountToken does not seem to have such restrictions. Confirming this would greatly help in our service development. Thank you.
0
0
285
Aug ’24
In App Purchase rules for NFT purchases through external Web3 Wallets
Hi all, I am a web3 developer and I am looking to launch an NFT platform app on the App Store with marketplace features. The platform will allow users to connect their external web3 wallets (like Metamask, Coinbase, etc.) and purchase and sell NFTs on the marketplace in the app. All the purchases will be made through the Ethereum (ETH) cryptocurrency existing within the external wallet, hence the transactions will be registered on the ETH blockchain network. The platform will not provide features to buy cryptocurrencies like ETH from the open market. I need help to get confirmation if the In-App Purchase is required for my app? Will the In-App-Purchase charges be applicable to such purchases through the external wallets? Will my app be allowed during App review? Thanks!
1
0
169
Aug ’24
How to properly use new StoreKit 2 views/modifiers/functionality for auto-renewable subscriptions
I would like to implement in-app auto-renewing subscriptions to open up "Pro" options for my app if a user chooses to subscribe. The user would be able to choose from a monthly or yearly subscription version. I have looked at hours and hours of countless videos, documents, tutorials, Apple examples (Backyard Birds, etc.), and posts on all of this but I'm still not sure that I understand the correct way to do this via the "new" StoreKit 2 framework additions. From various WWDC videos, it would seem that it's now as simple as using SubscriptionStoreView and then utilizing the modifiers .onInAppPurchaseCompletion, .subscriptionStatusTask, and .manageSubscriptionsSheet. It sounded to me like everything, including purchases and verifying transactions, is handled automatically for auto-renewing subscriptions. When testing my app, I can bring up my store view with no problem and make purchases with the simulator. That being said however, I am finding it fairly difficult to understand exactly what I need to do in order to make this all work correctly. The following are questions that I need answered in order to proceed: For in-app auto renewable subscriptions, should we just be using: SubscriptionStoreView, .onInAppPurchaseCompletion, .subscriptionStatusTask, and .manageSubscriptionSheet? Does .subscriptionStatusTask automatically and continually check for subscription status changes so that views dependent on that status will know whether or not a user has a valid subscription? Do I also need to set up a task when opening my app that checks for current entitlements? Do I still need to explicitly verify transactions or devices? What is supposed to happen with the logic flow? Is it suppose to be: Check to see if user EVER had a subscription... ---- if NOT -> present the paywall/store ---- else -> present the manageSubscriptionSheet Note: When I've tested variations of this, if the user didn't have a previous subscription at some point, the manageSubscriptionSheet will not be presented. It just "clocks" with a blank screen. Sorry for so many questions. I submitted a code-level support request to get help with this but the email I received back said to just post in the forum. I'm hoping someone here can help. I have other questions also but I'll make a separate post for them. TIA.
0
0
386
Aug ’24
Validating receipts on the device
hi everyone i am having a little problem with setting up my payment with subscriptstion method Problem 1 i have set up Agreements tax and Banking for my apple connect account to get productID from apple connect that i have set up but it is Missing Tax Info is this necessary to set up to be able to get productID does setting up banking and agreement in process affect me setting up tax info Problem 2 when i test with StoreKit 2 environment i am having problem when reading the instruction document how to Validating receipts on the device i have done to step 2 decode recieptData but don't know how to continue using the Apple Inc. Root certificate file apple document:https://developer.apple.com/documentation/appstorereceipts/validating_receipts_on_the_device Thanks everyone
1
0
380
Aug ’24
Your payments from Apple are on hold - 2024
I received an email today stating that my payment is on hold due to irregular activity. I haven't violated any rules, and I've noticed others have received similar messages. I immediately contacted support by phone, and the representative confirmed my account is in good standing. She asked me to forward the email for further investigation. Email received: "We noticed some irregular activity associated with your vendor number XXXXXXXX and have paused your earnings payments while we investigate. Once our review is complete, we'll determine if we can resume your payments." Questions: Has anyone else encountered this issue? If so, what steps did you take to resolve it, and how long did it take for payments to resume? Wishing everyone a great day, and thanks in advance!
1
1
736
Jul ’24
Vision Pro In app purchase
we are deveope an app on VisionOS IAP, we tried in app purchase code example on iphone, but seems not work, Xcode tell me: purchase(options:) is unavailable in visionOS: use @Environment(.purchase) to get a PurchaseAction value to call. If your app uses UIKit, use purchase(confirmin:options:)." 1.Anybody know how to solve this and give us any help? and we already searched on tutorials and forum,seems no result. Thankyou very much!
1
0
228
Jul ’24
Apple In App Purchase for dynamic products
I'm developing a multi-platform e-learning app in React Native where teachers create courses by uploading various types of content, such as videos, PDFs, Zoom meeting links, or simply by chatting with students. Students can purchase these courses via the app. However, our app has been repeatedly rejected by the App Store because digital content for mobile must be purchased through the App Store. This presents a challenge since the content our teachers upload is dynamic and varied, making it impractical to predefine all possible subscription packages. From my understanding, subscriptions or products need to be created in our App Store account first, and only then can they be fetched in our app. Is there a way for Apple to support dynamic subscription packages that can be uploaded through the app ? Any guidance on how to manage this within the App Store guidelines would be greatly appreciated.
0
0
267
Jul ’24
Apple In app Purchase for dynamic products
I'm developing a multi-platform e-learning app in React Native where teachers create courses by uploading various types of content, such as videos, PDFs, Zoom meeting links, or simply by chatting with students. Students can purchase these courses via the app. However, our app has been repeatedly rejected by the App Store because digital content for mobile must be purchased through the App Store. This presents a challenge since the content our teachers upload is dynamic and varied, making it impractical to predefine all possible subscription packages. From my understanding, subscriptions or products need to be created in our App Store account first, and only then can they be fetched in our app. Is there a way for Apple to support dynamic subscription packages that can be uploaded through the app, Any guidance on how to manage this within the App Store guidelines would be greatly appreciated.
0
0
296
Jul ’24
In-App Purchase works in TestFlight but not after Distribution
Good Day, This is my first app with In-App Purchase (IAP) for three simple consumable products. Ad For 1 Month, 2 Months and 3 Months. It works fine in Xcode and in TestFlight. App was approved and was automatically placed in App Store for distribution on July 25 morning. App publishes user's first ad free, by-passing StoreKit. but 2nd Ad onwards goes thru IAP. App works fine except screen with 3 consumable products/prices is not being displayed. Means IAP is not available in the distributed App whereas it all works fine in TestFlight. I googled, checked documents, asked chatGPT and submitted a question to Support (waiting for response). I don't know what I am missing. I read that it takes a day or two for IAP to work in App Store. Will appreciate any help. Thanks.
5
0
465
Aug ’24
Companion App - Help With In App Purchase / Subscription App Review Rejections
We are attempting to submit a companion app to the App Store that can only be accessed with login credentials from an existing app on the App Store, which requires a paid subscription to have full access. These existing apps are our main apps. We have made sure they are compliant with Apple App Review Guidelines (they have all been approved). You can register a new account and start a new monthly in app purchase subscription on these apps. An account with these apps can be used for our new companion app. Details of our companion app: Simple Content: The app features simple mini-games with no specific or unusual content or features. No In-App Purchases: The app does not have any in-app purchase functionality as it cannot be used independently from the main apps. Link to Existing App: The login screen of our companion app includes a link that opens a popup that shows all our main existing apps on the App Store (the popup has links which can directly open the App Store page of each main app). It also indicates that an active paid subscription is required with one of these apps to use the companion app. However, our submission has been repeatedly rejected based on the following guideline: "Guideline 3.1.1 - Business - Payments - In-App Purchase We noticed that your app includes or accesses paid digital content, services, or functionality by means other than in-app purchase, which is not appropriate for the App Store. Specifically: Your app accesses digital content purchased outside the app, such as 'monthly subscription', but that content isn't available to purchase using in-app purchase." Does anyone have any recommendations on how we can get this app approved? Any guidance on adjustments or specific changes to align with Apple’s guidelines would be greatly appreciated. Thank you!
0
0
320
Jul ’24
In-app purchases products for marketplace items
We are programming a marketplace for digital artwork, which shall use in-app purchases. Are we allowed/supposed to create only one storekit product, which we can call "item-x" and assign a fix price of i. e. 5,00$, assuming all items are sold for 5,00$, and use this product for all items? Or shall we create one product for each item which is selled on or platform, which could be 1.000?
0
0
345
Jul ’24
Please explain the Get Transaction History API
There are several auto-renewable subscriptions with the same 'webOrderLineItemId' value. (The 'originalTransactionId' value is the same and 'transactionId' is different.) If you look up the History API based on 'originalTransactionId', you can see that only one auto-renewable subscription with the same 'webOrderLineItemId' value is viewed. What is the criteria for looking up? I searched History API based on 'originalTransactionId' value. However, auto-renewable subscriptions that do not match 'originalTransactionId' are also being viewed in response. What is the reason? https://developer.apple.com/documentation/appstoreserverapi/get_transaction_history
0
0
318
Jul ’24
How to achieve dynamic price in IAP?
I was researching dynamic IAP options and exploring how other apps handle this when I stumbled upon an interesting UX in TikTok. TikTok offers a feature that allows users to promote their own or another user’s post. The UI enables users to slide the promotion price anywhere from $6 to $1400 a day. Once you set the desired budget, the price is specified, for example, as $15.71. At this point, I thought TikTok might be using some sort of in-app currency since IAPs typically don’t support such precise pricing. However, when I pressed the Pay button, I noticed that TikTok somehow presents this exact price as an IAP (the price on first two screens is in SGD while it's presented in USD on the 3rd screenshot). Question: How are they doing this? How does one get access to offer IAPs with dynamic pricing?
0
0
250
Jul ’24
Please explain about ConsumptionRequest Properties
platform: Please let me know which platform 'Non-Apple platform' is referring to. For example, Google or Amazon? And is it correct to mean the platform that consumed the products received due to in-app purchases? playTime: Does 'playTime' mean the time when the customer purchased the app and actually accessed the app? Or do you mean the time you accessed after the in-app purchase? lifetimeDollarsPurchased/lifetimeDollarsRefunded: If the app has multiple accounts for that customer, is the purchased/refunded amount for all accounts?
0
0
327
Jul ’24
409 Conflict Error when i create inapp purchase product
I can manually create the product from the apple connect dashboard in my in-app purchase tab. I want to use PHP and Symfony to add the product I have in my server created in the in-app purchase tab. I am using the second version create inapp purchase API https://developer.apple.com/documentation/appstoreconnectapi/create_an_in-app_purchase but i get the Conflict 409 message while i am posting it. i only have one other product and i am sure the id i am using for this new one is not being used before. i can get the list of inapp purchase for my app using this api https://developer.apple.com/documentation/appstoreconnectapi/list_all_in-app_purchases_for_an_app i created the token successfuly and i am checking the existance of a product with that product id beforehand and i get no result. here is a sample code. $productData = [ 'data' => [ 'type' => 'inAppPurchases', 'attributes' => [ 'name' => $package->getName(), 'productId' => '34567876545678test', 'inAppPurchaseType' => 'CONSUMABLE', 'state' => 'READY_TO_SUBMIT', 'reviewNote' => $description, 'familySharable' => false ] ] ]; $response = $this->client->request('POST', 'v2/inAppPurchases', [ 'headers' => [ 'Authorization' => "Bearer $token", 'Content-Type' => 'application/json' ], 'json' => $productData ]);
1
0
262
Jul ’24
Issues passing down promotional offer signature values
We have a React Native application and are implementing Promotional Offers for our subscriptions. Our backend service decides what users are eligible for the offer and will send the offer and signature in the request. The SKU, offer, and signature values are sent over the bridge to Objective-C where we then attach the discount to the payment if one exists. When we hardcode the signature values on objective-C we get a successful purchase. When we try to use the signature parameters that were passed down we get a purchase error (SKErrorDomain: 12) Some code snippets here: if (offerSignature[@"offerId"] != nil) { // convert timestamp to NSNumber NSString *numberString = offerSignature[@"timestamp"]; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; NSNumber *number = [formatter numberFromString:numberString]; productIAP.paymentDiscount = [ [SKPaymentDiscount alloc] initWithIdentifier: offerSignature[@"offerId"] keyIdentifier: offerSignature[@"keyIdentifier"] nonce: [[NSUUID alloc] initWithUUIDString:offerSignature[@"nonce"]] signature: offerSignature[@"signature"] timestamp: number]; } Here we are adding the SKPaymentDiscount to our custom product. and later on add it to the SKMutablePayment in the following snippet SKMutablePayment *productIAPPayment = [SKMutablePayment paymentWithProduct:productIAP.skProduct]; productIAPPayment.applicationUsername = [self hashedValueForAccountName]; if (productIAP.paymentDiscount != nil) { productIAPPayment.paymentDiscount = productIAP.paymentDiscount; } When we hardcode the values using the same values our backend service sends the payment goes through. Here is a snippet of how it looks like when we hardcode the values productIAP.paymentDiscount = [ [SKPaymentDiscount alloc] initWithIdentifier: @"offer-here" keyIdentifier: @"keyIdentifier-here" nonce: [[NSUUID alloc] initWithUUIDString:@"nonce-here"] signature: @"signature-here" timestamp: @1715303421691]; We have attached the debugger and have verified the values are correct and at this moment do not know what else we can do to get this unblocked.
0
0
294
Jul ’24