Subscriptions

RSS for tag

Give users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.

Posts under Subscriptions tag

200 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

subscription is locked on waiting for review
Hey, I've been having a frustrating time with Apple regarding my app's submission. I initially submitted a build (version 1.2.27) of my app that included a "Full Access" subscription feature. Shortly after, I decided to cancel this submission to update and resubmit a newer version. But now, I'm stuck because the "Full Access" subscription seems locked in a "Waiting for Review" status. This means I can't select it for my new submission. I reached out to Apple Support for help. I explained that my problem isn't with canceling the submission but with being unable to choose the "Full Access" subscription for the new version. They responded quickly but only provided a link to manage version submissions, which doesn't really address my specific issue. So, I had to clarify again that I need guidance on how to unlock the subscription from its current status so I can move forward with my app's resubmission. It's a bit of a loop, and I'm still waiting for a solution from them.
1
0
322
Nov ’23
After executing the subscription period extension process for the Sandbox account, the automatic renewal of the subscription will be canceled when the extension period expires.
We are currently implementing a feature that will allow us to extend the subscription period for users who have suffered losses due to our negligence. Regarding the problem that is occurring in the sandbox environment during the testing stage, please check whether it is due to the sandbox specifications. ■Reproduction steps Sandbox account A starts charging in the sandbox environment (sandbox account A is in the state of automatic contract renewal) Execute extension process for a specific period for sandbox account A. Confirm that the period of sandbox account A has been extended. Confirm that sandbox account A has reached the expiration date after the extension and that the next contract renewal will be performed automatically. Delete the purchase history of sandbox account A by following the steps below.AppStoreConnect->Users and Access->Sandbox->Test Account->Edit "Clear Purchase History". Proceed with steps 1 to 3 again for sandbox account A. Due to the expiration of the period in step 4, the automatic contract renewal for sandbox account A was canceled and subsequent contract renewals were no longer performed. (This is the problem) I've run similar tests with other accounts, and in every test the problem doesn't occur until I clear my purchase history, but the problem occurs after I clear my purchase history. When I checked the log information, the following notification was received at the timing of step 7, and it seems that the user took the initiative to cancel the automatic update. 「"notificationType": "EXPIRED", "subtype": "VOLUNTARY"」 Please let me know if the behavior is as specified.
1
0
370
Nov ’23
6 active Subscriptions in one Group
Hello everyone, we have 6 subscription models in only one subscription group, of which we only show 2 (monthly and yearly) via RevenueCat. So we have 3 prices (offer, normal price and another one that we use later to increase the price) Now we were approached by a customer that she could choose the subscription model of the 3 monthly subscriptions when renewing her subscription. That would of course be fatal for us if that were the case. We have already sold the app over 1000 times and it has been running for almost 6 months. When I look at the statistics at RevenueCat, everything is ok, those who bought for the offer could also continue to run for the offer price. and those for the normal price too. We have set the app to free because we allow downloading and installation and you only then take out the subscription in the app. Of course, we point this out to customers. What is your experience? Does anyone know who can tell me whether I can continue with this or whether I should deactivate the other outdated subscriptions first, for example? Of course, I still need to find out how this works with Google and the Google Play Store. Of course, we've done the same thing there. Best Regards
2
0
339
Nov ’23
In App Payment compliant support for a service offered via phone call / Zoom
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?
0
0
271
Nov ’23
DID_RENEW notification with cancellation_date field completed
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" }
1
0
462
Dec ’23
Manage Subscriptions Page says Cannot Connect
App Store kept rejecting my app because the Manage Subscriptions Page says Cannot Connect when it's run on a Sandbox account. I'm using the manageSubscriptionsSheet(isPresented:) API, and I don't know how to fix this. There are others dealing with the same issue and everything I found so far is saying it's iOS issue. I responded to the App Store saying it's an iOS issue and included the following links: Apple Developer Forums Apple Developer Forums Apple Support Communities Apple Support Communities They replied with the following generic message: During our review, we found that your app displayed an error message when we tapped on "manage subscription". While we cannot provide technical assistance with the reported issues, we have put together the following resources which discuss common issues seen in apps during review. To start, please see Testing a Release Build, which gives an overview of how to test your app to minimize the chances of issues occurring during review. You may also want to review Designing for Real-World Networks, as all apps are reviewed on-device and in an environment that replicates real-world use of your app. Is there a way to fix this? How should I respond back? Also, can I just take out the Manage Subscription functionality?
3
2
681
Dec ’23
Subscription Payment Sheet Issue
We've implemented subscriptions in our app, but a few users are reporting that the payment sheet isn't opening its keep loading, we also checked with them that the permission for in app purchases is allowed in device settings and in all other apps purchases working fine only facing issue in our app side. This issue isn't replicable on our end, and we're unable to debug it. Can you please assist us in resolving this?
0
0
243
Dec ’23
Delete Subscription - An error has occurred. Try again later.
Hi I am unable to delete a subscription, it keeps giving an error message "An error has occurred. Try again later." Some background : I have submitted my app along with subscription for review and it got rejected with the message - Guideline 3.1.2 - Business - Payments - Subscriptions When I tried to edit the exisiting rejected subscription by changing the localisation or review screenshot it is giving an error. Then I decided to delete this subscription itself and create a new one, that also giving an error. Spend whole day trying to figure out this issue still no luck , anyone else experienced this ?
0
0
362
Dec ’23
How to cancel Auto-renewable subscription bought in TestFlight?
I've read several topics on cancelling subscriptions in sandbox environment, but it seems to me that it could not be applied to TestFlight. I can cancel sandbox subscriptions through Settings > App Store > Sandbox account But since TestFlight does not use sandbox account I cannot cancel a sub from there. Also, TF purchase does not appear in the list of regular subscriptions (Settings > Profile > Media & Purchases). So my question is: is there any way to manually cancel auto-renewable subscription bought in TestFlight build of the app?
5
2
1.1k
May ’24
Not fetching auto-renewal subscription information (price) in China market
My app (Apple ID: 6473235939) first released on Dec 2 2023 to App Store for China market, and it has auto-renewal subscription. However, the user in China downloaded, installed and launched it, and he can't see the price, looks the app can't fetch the purchase product information, so the user can't subscribe. However, in the info section of app store the in-app purchase price is listed and right. The app was tested ok based in Canada, and the right subscription price is showing. Does the auto-subscription is blocked for China market? Any help? Thanks a lot.
0
0
310
Dec ’23
EXPIRED notification is no longer received
Hello, I have configured V2 server notifications for my applications. I am receiving different types of notifications (https://developer.apple.com/documentation/appstoreservernotifications/notificationtype) in my webhook. Something changed after November 18th. EXPIRED notifications are no longer received. Has something changed in the API? Other notification types still work.
2
0
523
Dec ’23
Use of SubscriptionStoreView
I am developing my first app and having issues understanding how SubscriptionStoreView works. I used some business logic available from Apple, but I see other resources that insinuate the StoreKit views can handle all of the business logic itself, and all I need is the config file. Can anyone confirm? When I'm previewing SubscriptionStoreView, It just says, "The subscription is unavailable in the current storefront," and I cannot find what that means or what to fix.
1
0
1.1k
Dec ’23
In app purchase
Greetings community members, I am currently navigating the intricacies of in-app purchases in my React Native application. Specifically, I am in the process of integrating auto-renewable subscriptions using the 'react-native-iap' package. Below is the complete code snippet I have implemented. While I have successfully fetched the subscriptions, I encounter an issue during the subscription process. After triggering the sandbox UI, a subscribe button appears. However, upon selecting it, a sign-in prompt is presented. Despite providing the correct credentials, the intended action does not occur. I would greatly appreciate any insights or guidance on resolving this matter. Thank you in advance for your assistance. import { View, Text, Button, StyleSheet, Alert, Platform } from 'react-native'; // Import Platform import { useIAP, validateReceiptIos, finishTransaction, } from 'react-native-iap'; import axios from 'axios'; import { ITUNES_SHARED_SECRET } from "@env"; const SubscriptionScreen = ({ navigation }) => { const { requestSubscription, getSubscriptions, currentPurchase, purchaseHistory, } = useIAP(); const [subscriptionStatus, setSubscriptionStatus] = useState(false); const [loading, setLoading] = useState(false); useEffect(() => { handleGetSubscriptions(); }, []); useEffect(() => { if (purchaseHistory && purchaseHistory.length > 0) { const isSubscribed = purchaseHistory.some((purchase) => subscriptionSkus.includes(purchase.productId) ); if (isSubscribed) { setSubscriptionStatus(true); } } }, [purchaseHistory]); const subscriptionSkus = Platform.select({ ios: ['sub1', 'sub2', 'sub3'], }); const handleGetSubscriptions = async () => { try { await getSubscriptions({ skus: subscriptionSkus }); } catch (error) { console.error('Error getting subscriptions:', error); } }; const handleBuySubscription = async (productId) => { try { setLoading(true); // Request subscription const purchase = await requestSubscription({ sku: productId, ...(Platform.OS === 'ios' && { andDangerouslyFinishTransactionAutomaticallyIOS: false }), // Handle differently for iOS }); // Finish the transaction await finishTransaction({ purchase, isConsumable: false, }); // Check if the purchase was successful if (purchase.transactionState === 'Purchased') { // Validate the receipt const receipt = purchase.transactionReceipt; await handleValidateReceipt(receipt); // Navigate to the desired screen navigation.navigate('IndexPage'); } else { // Handle other transaction states if needed console.warn('Transaction state:', purchase.transactionState); } } catch (err) { console.error(err.code, err.message); } finally { setLoading(false); } }; const handleValidateReceipt = async (receipt) => { try { const isTestEnvironment = false; const response = await validateReceiptIos( { 'receipt-data': receipt, password: ITUNES_SHARED_SECRET, }, isTestEnvironment ); if (response && response.status === 0) { // Receipt is valid, you may want to save the purchase on your server const serverValidationResult = await validateReceiptOnServer(receipt); if (serverValidationResult.valid) { setSubscriptionStatus(true); Alert.alert('Subscription Purchased', 'Thank you for subscribing!'); } else { console.warn('Server validation failed'); } } else { console.warn('Receipt validation failed'); } } catch (error) { console.error('Error during receipt validation:', error); } }; const validateReceiptOnServer = async (receipt) => { try { // Replace with your server endpoint for receipt validation const response = await axios.post('', { receipt }); return response.data; } catch (error) { console.error('Error validating receipt on server:', error); return { valid: false }; } }; useEffect(() => { const checkCurrentPurchase = async () => { if (currentPurchase) { const receipt = currentPurchase.transactionReceipt; if (receipt) { await handleValidateReceipt(receipt); try { await finishTransaction({ purchase: currentPurchase, isConsumable: false, }); } catch (err) { console.warn(err.code, err.message); } } } }; checkCurrentPurchase(); }, [currentPurchase, finishTransaction]); return ( <View style={styles.container}> <Text>{subscriptionStatus ? 'Subscribed' : 'Not Subscribed'}</Text> {subscriptionSkus.map((sku) => ( <Button key={sku} title={`Purchase ${sku}`} onPress={() => handleBuySubscription(sku)} /> ))} </View> ); }; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, }); export default SubscriptionScreen;```
0
0
545
Jan ’24