In-App Purchase

RSS for tag

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

In-App Purchase Documentation

Posts under In-App Purchase tag

574 Posts
Sort by:
Post not yet marked as solved
3 Replies
162 Views
Hello, I have an app that has 2 consumable in app purchase, and now I added a 3rd non-consumable purchase which removes the ads. My problem is that they rejected the build and the ad removal in app purchase as well multiple times because of this in app purchase. Sometimes the problem was that the in app purchases wasn't loaded for them, but now they problem is network errors. With the rejection they sent my screenshots. Once they got a network error saying: The request timed out. Another time they got another network error saying: The network connection was lost. For me it works perfectly every time on my iPhone and iPad. On the main screen so when the app starts I check internet connection and then fetch in app purchases. .task { adatok.InternetEllenorzes() await adatok.fetchApponbeluliVasarlasok() } Then in the main menu when you click on the store button I check the internet property that was set to true if there's is internet connection. If there's no internet an alert appears saying no internet. and if there was no internet when you launched the app but then you suddenly got internet after then the fetch runs again before navigate to the shop(in app purchase view). So by the time you're in the shop view the fetch must run. Now here's the purchasing part: purchase: func Vasarlas(termek: Product) async { do { print("itt várakozás van hogy jó e vagy nem") vasarlasFolyamatban = true // teszt let vasarlasEredmenye = try await termek.purchase() switch vasarlasEredmenye { case .success(let verificationResult): print("A vásárlás sikeresen végigment") switch verificationResult { case .verified(let transaction): VasarlasAllapotEllenorzes() await transaction.finish() print("tényleg megvette van blokk") switch termek.id { case "A_tudatlansag_ara_betuVasarlas": BetuVasarlas() megvasaroltBetuk += 1 VasarlasSzamMentese() print("sikeres betű vásárlás") vasarlasFolyamatban = false case "A_tudatlansag_ara_teljesVerzioV2": megvettemAReklamMentesseget = true print("sikeres reklámmentesség vásárlás") vasarlasFolyamatban = false reklamMutatva = false case "A_tudatlansag_ara_UjEsely": if aktualisJatekMod == .egyjatekos { UjEsely() } else { TobbjatekosUjEsely() } megvasaroltUjEselyek += 1 VasarlasSzamMentese() print("sikeres új esély vásárlás") vasarlasFolyamatban = false default: return } vasarlasFolyamatban = false boltMutatasa = false hibauzenet = nil sikeresVasarlas = true sikeresVasarlasok.append(termek) break case .unverified(_, let hiba): print("A vásárlás sikeres de mivel nincs blokkk nincs megerősítve: \(hiba.localizedDescription)") vasarlasFolyamatban = false boltMutatasa = false hibauzenet = nil break } case .userCancelled: hibaCim = "Vásárlás hiba" if boltMutatasa { hibauzenet = "A vásárlás megszakítva" boltHibaMegjelenites = true vasarlasFolyamatban = false } else { vasarlasFolyamatban = false hibauzenet = "A vásárlás megszakítva" boltHibaMegjelenites = true } break case .pending: print("a vásárlás folyamatban") break @unknown default: vasarlasFolyamatban = false hibauzenet = "Ismeretlen hiba történt" boltHibaMegjelenites = true break } } catch { hibaCim = "Hálózati hiba cim" hibauzenet = error.localizedDescription boltHibaMegjelenites = true vasarlasFolyamatban = false } } And here's the purchase check: func VasarlasAllapotEllenorzes() { Task { for await VerificationResult in Transaction.updates { switch VerificationResult { case .verified(let vasarlas): print("sikeres vásárlás: \(vasarlas.signedDate)") await vasarlas.finish() vasarlasFolyamatban = false case .unverified(_, _): print("Hiba történt a vásásrlás közben)") boltHibaMegjelenites = true vasarlasFolyamatban = false } } } } Anyone got any suggestion why it runs perfectly for me on 2 different device but the review team can't get it working? Is there a problem with the code or the problem is on the side? I even asked them because in the screenshots they sent, which I show here doesn't show any network icon no wifi or cellular in the notification area, so I asked them if they have a network connection but they said they did not experience any network issues during the review.
Posted
by Aniko93.
Last updated
.
Post not yet marked as solved
2 Replies
134 Views
iOS development, consumption application. For example, a user recharges gold coins after purchasing a product, and then maliciously applies for a refund after using the gold coins. How can we prevent this situation?
Posted
by kuwogv.
Last updated
.
Post not yet marked as solved
1 Replies
192 Views
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?
Posted
by sloutales.
Last updated
.
Post not yet marked as solved
1 Replies
133 Views
Hi, For a user who subscribed a product via In-App Purchase, how does the application backend know that the user is still subscribed? The initial purchase happens on the mobile app. Via receiving and validating the receipt of initial purchase, the backend of mobile app would be informed. However, what is the appropriate option for the subsequent subscription payments? How do I know whether the user is still paying? Thanks.
Posted
by selbe.
Last updated
.
Post not yet marked as solved
1 Replies
277 Views
Does anyone have the link to a keynote where someone from Apple speaks about or explains non-renewing subscriptions in detail? I know what non-renewing subscriptions are, they are basically an in-app purchase with an expiry date. However, I want to better understand why I need to be the one that builds in the expire functionality in the app and why I need to handle things like how it should work if the user buys a new device before the period is over for example. Why can't Apple handle this stuff?
Posted
by Filip27.
Last updated
.
Post not yet marked as solved
2 Replies
149 Views
We are using apple's verifyReceipt API. (https://buy.itunes.apple.com/verifyReceipt) In one receipt, it returns a status of 21005. This probrem is occured by not all receipt but one receipt. The documentation describes it as "The receipt server was temporarily unable to provide the receipt. Try again.". (https://developer.apple.com/documentation/appstorereceipts/status) However, after more than a month, the API still returns the same status for this receipt. Does anyone know the cause of this?
Posted Last updated
.
Post not yet marked as solved
0 Replies
168 Views
There is the bundleVersion exist in this document, and for the notificationType CONSUMPTION_REQUEST, the payload what we always received contains the bundleVersion, but today we receive one CONSUMPTION_REQUEST request payload without the bundleVersion. So we wanna know what means of bundleVersion? Is that always exist? when does it not exist?(for both notification type) Thanks in advance
Posted
by fpei.
Last updated
.
Post not yet marked as solved
2 Replies
207 Views
Hi When we add IAP for our app a few years ago, we setup our server to visit https://sandbox.itunes.apple.com/verifyReceipt, to verify our customer's receipt after the purchase the IAP. Everything goes well for the past few years. But since March 22, 2024, our server cannot visit the URL above any more, and the returned failure is "SSLException: Received fatal alert: protocol_version"(from JAVA). From this we guess that Apple have made some changes about the SSL/TLS protocol requirement of your server api. Could you guys tell us which SSL/TLS is required to visit this URL? We need these information to make a plan of our server code upgrade or something like that, and continue the receipt verification. Thank you. Hope to hear from you soon.
Posted
by neuswcjr.
Last updated
.
Post not yet marked as solved
0 Replies
120 Views
Hey there, I'm experiencing an issue where the in-app-purchase popup isn't displaying the correct icon in sandbox mode. I've configured the default icon in Unity 2021.3.22f and made sure the app icon image sets are properly set up in Xcode. However, even after changing the app icon, it still doesn't appear correctly in the in-app-purchase popup. Could you please assist me with resolving this issue? Your help would be greatly appreciated.
Posted Last updated
.
Post not yet marked as solved
0 Replies
105 Views
Hey there, I've configured the default icon in Unity 2021.3.22f and made sure the app icon image sets are properly set up in Xcode. However, even after changing the app icon, it still doesn't appear correctly in the in-app-purchase popup. Could you please assist me with resolving this issue? Your help would be greatly appreciated.
Posted Last updated
.
Post not yet marked as solved
0 Replies
131 Views
iOS 开发,消耗型应用内购买。用户购买商品之后比如充值了金币,把金币用了之后又申请了退款,这种情况我们如何预防
Posted
by kuwogv.
Last updated
.
Post not yet marked as solved
0 Replies
172 Views
Hello, I have an education application and I want to sell trial exams in this application, or I want people to create exams in exchange for money. Can I use a different payment provider other than Apple's app purchase for this? If I can't use it, is Apple's cut rate 30%? I also want to add this. In my application, users already purchase premium membership packages through Apple's in app purchase service. Can anyone with knowledge help? Thanks
Posted Last updated
.
Post not yet marked as solved
0 Replies
195 Views
I'm trying to test payments on an iOS app. I have a sandbox account and its worked previously. When I try and add a test credit card I get the error "Your Issuer Does Not Yet Offer Support For This Card" I'm using the cards here https://developer.apple.com/apple-pay/sandbox-testing/" What I have tried: Checking my Region is the UK Checking the card details Tried several cards Tried signing out of my iCloud completely I'm testing on an iPhone 12 mini using iOS 16.5.1
Posted
by itierney.
Last updated
.
Post not yet marked as solved
0 Replies
207 Views
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.
Posted
by lijiaxu.
Last updated
.
Post not yet marked as solved
1 Replies
276 Views
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?
Posted
by trori.
Last updated
.
Post not yet marked as solved
3 Replies
200 Views
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.
Posted
by Armia_Dev.
Last updated
.
Post not yet marked as solved
3 Replies
311 Views
So all of my iAPs stopped working all of a sudden. Upon investigation I found out that my Paid App Agreement had expired. So under appstore connect business tab I tried to renew the contract, but it doesn't renew! I tried everything but the status is stuck at expiry. This is is causing us financial loss every minute. Here is the detailed video of the issue: https://www.dropbox.com/scl/fi/ydlgc583kt8dlawru04dh/demonstration.mov?rlkey=r5itzirnv65yynmp633dddh8w&dl=0 I have tried safari, chrome, edge on both windows and mac. Any help on this issue would be highily appreciated. Thankyou
Posted Last updated
.
Post not yet marked as solved
1 Replies
188 Views
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" }
Posted
by chasel_h.
Last updated
.