Accueil

Gérer les achats intégrés avec InAppPurchaseLib - partie 1

Tutoriel Swift

Posté par Véronique le 29 April 2020

Dans cet article, nous verrons comment intégrer, simplement, des achats in-app dans une application Swift grâce à InAppPurchaseLib. Nous parlerons plus particulièrement des abonnements avec renouvellement automatique, mais la librairie supporte tous les types de produits. Le gros point fort de la librairie, c'est qu'elle intègre une vérification des achats auprès de Fovea.Billing, ce qui permet de sécuriser les transactions.

iap-swift-lib

Dans cette première partie nous allons voir comment configurer un projet sur App Store Connect et dans Xcode pour pouvoir intégrer des achats in-app.

Nous verrons ensuite, dans la seconde partie, comment intégrer la librairie dans le code de l'application. Pour finir, nous verrons dans la troisième partie, comment créer et utiliser un compte de tests pour effectuer des achats, sans être facturé, et avec des durées réduites pour les abonnements avec renouvellement automatique.


1. App Store Connect

1.1. Signer le contrat relatif aux applications payantes

Pour pouvoir proposer des abonnements avec renouvellement automatique, vous devez au préalable avoir signé le contrat relatif aux applications payantes.

  • Depuis la page d'accueil de l'App Store Connect, cliquez sur Informations contractuelles, bancaires et fiscales.
  • Dans la section contrats, vous trouverez le contrat Apps payantes. Renseignez ou vérifiez les informations sur votre entité juridique, puis lisez et acceptez les conditions du contrat.

Vous pouvez à présent créer des achats in-app !

1.2. Créer des produits d'achat intégrés

  • Depuis la page d'accueil de l'App Store Connect, cliquez sur Mes apps, puis sélectionnez votre application.
  • Allez dans la section Fonctionnalités > Achats intégrés.
  • Créez deux produits de type abonnement avec renouvellement automatique. (Vous pouvez mettre le prix que vous souhaitez, lors des tests rien ne vous sera facturé.)
    • Un produit d'abonnement mensuel
      • Nom de référence : Monthly Plan
      • Identifiant du produit : monthly_plan
      • Durée de l’abonnement : 1 mois
      • Nom de référence du groupe : Test Subscription
    • Un produit d'abonnement annuel
      • Nom de référence : Yearly Plan
      • Identifiant du produit : yearly_plan
      • Durée de l’abonnement : 1 an
      • Nom de référence du groupe : Test Subscription
in-app purchases

Le Nom de référence du groupe correspond au groupe d'abonnements. Il est important que ces deux produits soient ajoutés au même groupe car ils correspondent à la même offre de contenu, mais à des durées variables.

subscription group
Informations à retenir concernant les groupes d'abonnements :
un seul produit du même groupe peut être actif au même moment.
une seule offre d’introduction peut être activée au sein d'un groupe.

2. Xcode

Il faut à présent ajouter à votre projet la capacité d'effectuer des achats in-app depuis Xcode.

xcode project capabilities
  1. Sélectionnez votre projet
  2. Sélectionnez la cible
  3. Aller dans la section Signing & Capabilities
  4. Cliquez sur le bouton (+) Capability pour ouvrir la bibliothèque de capacités
  5. Recherchez et sélectionnez la capacité "In-App Purchase"

3. Fovea.Billing

  • Créez un compte sur le site de Fovea.Billing pour votre application.

  • Allez dans la section Settings > iOS.

fovea.billing
  • Récupérez et renseignez l'iOS Shared Key

    • Depuis la page d'accueil de l'App Store Connect, cliquez sur Mes apps, puis sélectionnez votre application.
    • Allez dans la section Fonctionnalités > Achats intégrés.
    • Cliquez sur Secret partagé spécifique à l'app.
    • Générez et copiez votre secret partagéin-app purchases
  • Renseignez l'identifiant de votre application dans iOS Bundle ID.

  • Copiez l'iOS Subscription Status URL et renseignez-la dans la section Informations sur l'app dans l'App Store Connect.

    shared secret

Vous trouverez le code du projet de démo sur GitHub.

Plus d'info sur la documentation Apple développeur :