Niveaux d'abonnement renouvelables automatiquement dans l'application iOS

image


Salut, c'est Renat d' Apphud . Dans cet article, nous vous dirons quels sont les niveaux d'abonnements auto-renouvelables, comment les configurer correctement et dans quels cas l'utilisateur est remboursé pour une période payée non utilisée.


Quel est le niveau d'abonnement?


Il s'agit de la désignation de la classe d'abonnement, en fonction du niveau de service qu'elle propose. L'abonnement à la première classe signifie le niveau de service le plus élevé, la deuxième classe - inférieure, etc. En fait, rarement dans quelle application pouvez-vous trouver deux niveaux d'abonnement, sans parler de trois ou plus.



Deux niveaux d'abonnement dans l'application du journal The New York Times.


Comment configurer les niveaux d'abonnement?


Pour configurer vos niveaux d'abonnement, accédez à l' App Store Connect , sélectionnez votre application et accédez à l'onglet Fonctionnalités . Dans la section des achats intégrés, déplacez votre abonnement d'un niveau vers le haut ou vers le bas. Pour ce faire, sélectionnez l'abonnement souhaité en appuyant longuement sur l'icône glisser-déposer et déplacez l'abonnement au niveau souhaité.



Faites glisser et déposez un abonnement à un niveau supérieur.


L'abonnement numéro 1 devrait offrir le plus haut niveau de service, par exemple, l'abonnement à toutes les catégories de magazines. Il n'y a aucune dépendance entre la durée de l'abonnement et son niveau. Ainsi, l'abonnement le plus élevé peut être annuel et un abonnement à un niveau inférieur à un mois.


Modifier l'abonnement


L'utilisateur peut modifier l'abonnement dans l'application App Store après son inscription. Il peut augmenter (mettre à niveau), abaisser (rétrograder) un niveau ou modifier un abonnement au sein du même niveau (cross-grade).


Mise à niveau du niveau d'abonnement (mise à niveau)


Si l'abonnement actuel de l'utilisateur est actif, il passera immédiatement à un nouveau tarif et la partie inutilisée de la période payée sera retournée à la carte.



Notification qu'une partie des fonds sera remboursée lors de la mise à niveau de l'abonnement.


À la fin de l'article, nous verrons comment rattraper l'augmentation du niveau d'abonnement et calculer le montant du retour.


Abaissement de l'abonnement (déclassement)


En abaissant le niveau, l'utilisateur passe à un nouveau à la fin de la période payée en cours. Les fonds ne sont pas remboursés et le coût d'un nouvel abonnement est débité lors de l'activation.


Changement d'abonnement au même niveau (cross-grade)


Il s'agit d'une situation courante, elle est divisée en deux types: un changement d'abonnement d'une durée et différent. Lors du changement d'un abonnement d'une durée différente, la même chose se produira qu'avec une rétrogradation: l'abonnement sera appliqué à la fin de la période payée en cours.


Si les durées correspondent, l'abonnement en cours sera annulé et un nouveau commencera immédiatement. L'argent sera débité pour le nouvel abonnement et la partie inutilisée de l'ancien abonnement sera retournée à l'utilisateur.


Comment s'informer sur la modification de l'abonnement sur le serveur?


Vous pouvez valider la vérification de l'App Store ou écouter les notifications du serveur Apple.


Lors de la vérification de chaque nouvelle transaction, vous devez vérifier si product_id a changé. La modification de product_id signifie que l'utilisateur a modifié son abonnement dans les paramètres de l'App Store.


De plus, vous pouvez consulter la valeur de auto_renew_product_id dans pending_renewal_info . Il vous aidera à en savoir plus sur une modification de product_id avant qu'un nouvel abonnement ne prenne effet.


Si vous avez configuré des notifications de serveur , écoutez la notification DID_CHANGE_RENEWAL_PREF qui est appelée lorsqu'un produit est modifié . Vous pouvez vous limiter à cette notification et obtenir le nouveau product_id à partir des paramètres de demande, ou vous pouvez revérifier le reçu de l'App Store. Dans ce dernier cas, les notifications du serveur Apple ne serviront que de déclencheur pour une vérification non planifiée.


Comment calculer le montant du retour pour les mises à niveau?


Pour savoir s'il y a eu une mise à niveau, vous devez vérifier la valeur du champ is_upgraded . Une valeur true signifie que la prochaine transaction est déjà dans le nouvel abonnement.


Notez que is_upgraded sera true même lors de la modification d'un abonnement de même durée dans le même niveau. Autrement dit, is_upgraded = true ne signifie pas une augmentation de niveau, mais le fait qu'un changement d'abonnement a été effectué avec un remboursement.


En plus du champ is_upgraded , le champ is_upgraded apparaîtra dans cette transaction, ce qui indique l'heure de l'annulation. Elle est égale ou coïncide presque avec la date de début de la prochaine transaction.


Il s'avère que le champ cancellation_date apparaît non seulement lorsque l'abonnement est renvoyé , mais également lors de la mise à niveau.


Notez que lors de la mise à niveau des abonnements Sandbox, le champ cancellation_date est manquant . Par conséquent, lors des tests dans Sandbox, vous devez utiliser la date d' purchase_date prochaine transaction au lieu de la date d' cancellation_date . En savoir plus sur la date d'annulation dans la documentation Apple .


Pour calculer le montant qui doit être retourné à l'utilisateur, vous devez diviser la période inutilisée par la période complète de l'abonnement précédent et multiplier par son coût:


 # upgrade_date is `cancellation_date` in prodiction or `purchase_date` of new transaction in sandbox # to_f converts date to float timestamp value prorate_amount = price * (upgrade_date.to_f - cancellation_date.to_f) / (expires_date.to_f - purchase_date.to_f) 

Comment est-ce mis en œuvre dans Apphud?


Apphud suit automatiquement les modifications des abonnements et calcule le retour des pièces non utilisées.



Un exemple de changement de souscription au même niveau avec le retour d'une partie des fonds en Apphud.


Un développeur iOS n'est pas tenu de gérer lui-même ces situations. Il vous suffit d'intégrer le SDK, le reste sera fait par Apphud.


Conclusion


Il s'avère que la simple mise à jour de la valeur de product_id ne suffit pas: vous devez également envisager le remboursement des mises à niveau. Travailler avec des abonnements nécessite de gérer de nombreuses situations limites. Nous faisons Apphud - un service qui simplifie considérablement le travail avec les abonnements. Vous pouvez commencer à l'utiliser gratuitement. Inscription - sur ce lien .

Source: https://habr.com/ru/post/fr475758/


All Articles