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

585 Posts
Sort by:
Post not yet marked as solved
1 Replies
38 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
2 Replies
102 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
68 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
.
Post not yet marked as solved
3 Replies
261 Views
ERROR: 💰 Product purchase for '***' failed with error: Error Domain=RevenueCat.ErrorCode Code=2 "There was a problem with the App Store." UserInfo={source_file=RevenueCat/SKError+Extensions.swift:64, NSUnderlyingError=0x600000c91890 {Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x600000c68570 {Error Domain=ASDServerErrorDomain Code=1003 "No Token Available When Expected." UserInfo={NSLocalizedFailureReason=No Token Available When Expected.}}}}, readable_error_code=STORE_PROBLEM, NSLocalizedDescription=There was a problem with the App Store., source_function=asPurchasesError} And, I have also tested with SwiftyStoreKit and encountered the same issue.
Posted Last updated
.
Post not yet marked as solved
0 Replies
39 Views
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.
Posted
by hoomin.
Last updated
.
Post not yet marked as solved
0 Replies
49 Views
I have a website and both iOS and Android apps where users can access to watch digital content. Can I direct users to my website to make the payments instead of using Apple/ Google In-app purchases? I want users to have a consistent experience throughout all the platforms. Users can pay and get credits to unlock videos which are uploaded by other users.
Posted Last updated
.
Post not yet marked as solved
0 Replies
60 Views
{NSLocalizedDescription=Reached max retry count, AMSURL=https://amp-api.sandbox.apple.com/v1/catalog/us/in-apps?extend=hostedContent&filter%5BappBundleId%5D=com.dazn.staging&filter%5BofferName%5D=BR.AP.HO.01.STAG,BR.MP.HO.01.STAG,BR.NFL.APPLE.SPP.HO.01.STAG&l=en-US&omit%5Bresource%5D=autos&platform=iphone&with=adHocOffers, AMSStatusCode=401, NSLocalizedFailureReason=Task reached max retry count (0 / 0);}
Posted Last updated
.
Post not yet marked as solved
2 Replies
100 Views
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
Posted Last updated
.
Post not yet marked as solved
2 Replies
85 Views
Hello, My app was just approved and it is a marketplace app for self-guided tours. The tours are digital products and hence we use in-app purchases. We are allowing people to buy worldwide because it is a travel-related product but I’m struggling to figure out how to set the price. The tour creators have a price in mind and we have a commission. We are able to calculate what price to set in US keeping in mind the 15% Apple fee and tax. However, once I set a price on the App Store in USD, there is a large variation in the amount I will be paid from other countries and currencies as each country levies its own tax. Managing 100+ countries manually is not feasible. Any workarounds or ways in which I can tell the App Store what I want to be paid after taxes so that prices are adjusted in each country accordingly???
Posted Last updated
.
Post not yet marked as solved
1 Replies
139 Views
I am working on an iOS app. I have created an annual offer code which is only eligible to new users and expired subscribers. May I know what will happen if an existing subscriber tries to redeem the offer using the offer code url? Then they would finish the whole process through the App Store. There are no ways for my app to block it. Would Apple not allow them to do this? If yes, would the existing subscribers have to cancel their subscription in order to redeem this annual offer code? If yes, will they then immediately see the offer? Or will they have to wait until their entitlement expires? Thanks.
Posted
by yorkchan.
Last updated
.
Post not yet marked as solved
0 Replies
191 Views
On March 8, multiple users reported invalid status codes when using our app to make payments. By night, it was back to normal. Has anyone encountered the same problem? Error Domain=SKErrorDomain Code=0 "发生未知错误" UserInfo={NSLocalizedDescription=发生未知错误, NSUnderlyingError=0x283f71740 {Error Domain=ASDErrorDomain Code=500 "Unhandled exception" UserInfo={NSUnderlyingError=0x283f71d10 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed" UserInfo={NSLocalizedDescription=Authentication Failed, NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=301 "Invalid Status Code" UserInfo={NSLocalizedFailureReason=The response has an invalid status code, AMSURL=https://auth.itunes.apple.com/auth/v1/native, AMSStatusCode=403, NSLocalizedDescription=Invalid Status Code}", "Error Domain=AMSErrorDomain Code=301 "Invalid Status Code" UserInfo={NSLocalizedFailureReason=The response has an invalid status code, AMSURL=https://auth.itunes.apple.com/auth/v1/native, AMSStatusCode=403, NSLocalizedDescription=Invalid Status Code}"), AMSURL=https://p42-buy.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy?guid=00008120-001E64823A0BC01E, AMSStatusCode=200, AMSServerPayload={ "cancel-purchase-batch" = 1; customerMessage = "使用 Apple ID 登录"; dialog = { cancelButtonString = "取消"; defaultButton = Buy; explanation = "输入 %%appleId%% 的密码以授权此交易。"; initialCheckboxValue = 1; kind = authorization; "m-allowed" = 0; message = "使用 Apple ID 登录"; okButtonAction = {.........
Posted
by wenruo.
Last updated
.
Post marked as solved
2 Replies
152 Views
Hello, I'm trying to add in-app purchases to a macOS app but failing to load the local test products. From the docs and various examples I've found online, it should be pretty straightforward with StoreKit 2. So far, I've done the following: added in-app purchase capability created the local .storekit file added consumable and non-consumable products updated the scheme to use the test StoreKit configuration verified the products are present and can be purchase by using Debug > StoreKit > Manage Transactions to make direct purchases verified the product IDs are correct To simplify things I tried creating a barebones app. I created a new .storekit file and added a single non-consumable product with ID product1. I used the default view and just a task to retrieve the products: import SwiftUI import StoreKit struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") } .task { let products = try? await Product.products(for: ["product1"]) print(products) } .padding() } } The print statement output is: Optional([]) I know I must be doing something wrong, but I'm completely missing it. I hope someone can help me. Thanks
Posted
by plom.
Last updated
.
Post not yet marked as solved
2 Replies
210 Views
After upgrading to iOS 17.4, when using SKProductsRequest to request product information from Apple, an error is returned. The error message is "4097 Couldn’t communicate with a helper application." At present, users who have upgraded to iOS 17.4 are unable to make payments. How can we solve this problem? Thank you!
Posted Last updated
.
Post not yet marked as solved
0 Replies
82 Views
For V1 used for internal purchase verification, when will the exclusive shared key regenerated after transfer be replaced? Will it affect in-app purchases and subscriptions by online users? The V2 used for internal purchase verification uses the key ID instead of the dedicated shared key. In this case, what should we pay attention to before and after the transfer? Do I need to regenerate the key ID for the new account? Is the private shared key still useful? Do I need to generate a dedicated shared key again in the transferred App? What will be the impact on existing subscriptions after the transfer? What do I need to do with the current existing subscriptions? We have used universalLink, do we need to add a new TeamId to the apple-app-site-assn. txt file? { "applinks": { "apps": [], "details": [ { "appID": “TeamIdA.com.***.***”, "paths": [""] }, { "appID": “TeamIdB.com.***.***”, "paths": [""] } ] } } We have stored the login information in Keychain Sharing, is there no way to get the original stored information after transfer? Is there a reasonable solution?
Posted
by ChunXiao.
Last updated
.
Post not yet marked as solved
0 Replies
131 Views
Is it possible to have limited in-app quantity of an iap item? Let's say I have a premium gun which is limited to 100 quantity for the whole game. Is it possible to show the quantity remaining and hide once 100 quantity gets sold? Thanks!
Posted Last updated
.
Post not yet marked as solved
0 Replies
82 Views
I am developing a mobile gaming app where players can either collect the app's virtual currency through winning tournaments or by purchasing virtual currency, which will be used to purchase real prizes and gift cards/vouchers. The application will be cross-platform where players can access their account on other platforms outside of the mobile app. My question is whether the purchase of the virtual currency would be treated as an IAP or not since there is a physical value of the virtual currency outside of the app because it can be used to purchase gift cards and other real prizes? Any guidance would be greatly appreciated it. Thanks!
Posted Last updated
.
Post not yet marked as solved
0 Replies
109 Views
I work with bloggers who write reviews about my app. I would like to track sales that originate on specific sites so I can pay them commissions, like an affiliate program. For example, if a person discovers our app by reading a review, I would like to give the blogger a URL to the App Store a UTM code so that I can track if the article generates sales of my app. if there is a 3rd party affiliate program management platform or software to do this, I might be open to using it. i’ve tried searching the web and other developers about this. It should be simple but it’s elusive if it’s out there at all.
Posted
by diabolho.
Last updated
.