{"id":137862,"date":"2021-08-30T00:00:00","date_gmt":"2021-08-30T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/fr-ios-in-app-purchases-part-5-list-of-skerror-codes-and-how-to-handle-them\/"},"modified":"2021-08-30T00:00:00","modified_gmt":"2021-08-30T00:00:00","slug":"ios-in-app-purchases-part-5-list-of-skerror-codes-and-how-to-handle-them","status":"publish","type":"post","link":"https:\/\/adapty.io\/fr\/blog\/ios-in-app-purchases-part-5-list-of-skerror-codes-and-how-to-handle-them\/","title":{"rendered":"Achats int\u00e9gr\u00e9s sous iOS, partie 5 : liste des codes SKError et comment les traiter"},"content":{"rendered":"\n

Dans ce billet, j’aborderai les SKErrors : quels probl\u00e8mes ils impliquent et comment faire pour y rem\u00e9dier. Pour chaque erreur, nous examinerons trois aspects : pourquoi elle se produit, comment la traiter et quel message afficher dans la notification d’erreur.<\/p>\n\n\n\n\n\n

SKError.Code.unknown<\/strong><\/a>, code 0<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> Une erreur s’est produite pour une raison inconnue.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs. Cette erreur survient \u00e9galement lors d’une demande d’obtention de produits lors de l\u2019utilisation de l\u2019iOS 14 et au-dessus du simulateur. Dans ce cas, pour obtenir un produit, utilisez le test local StoreKit ou un appareil\/\u00e9mulateur r\u00e9el avec la version d’iOS inf\u00e9rieure \u00e0 celle d’iOS 14.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> D\u00e9sol\u00e9, cet achat est indisponible pour une raison inconnue. Veuillez r\u00e9essayer plus tard.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

SKError.Code.clientInvalid<\/strong><\/a>, code 1<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur ne peut pas effectuer d’achat. Par exemple, un enfant essaie d’acheter quelque chose alors que la fonction de contr\u00f4le parental de l’appareil est activ\u00e9e.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher.<\/strong> L’achat ne peut \u00eatre r\u00e9alis\u00e9. S’il vous pla\u00eet, changez votre compte ou votre appareil.<\/p>\n\n\n\n

SKError.Code.paymentCancelled<\/strong><\/a>, code 2<\/strong><\/h2>\n\n\n\n

Ce que cela signifie. <\/strong>L’utilisateur est arriv\u00e9 \u00e0 l’\u00e9cran de paiement, mais a chang\u00e9 d’avis et a cliqu\u00e9 sur \u00ab\u00a0annuler\u00a0\u00bb.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> D’un point de vue technique, aucune erreur ne s’est produite et, dans ce cas, il n’y a rien \u00e0 faire. D’un point de vue marketing, vous pouvez continuer \u00e0 travailler avec un tel utilisateur, par exemple en lui offrant une r\u00e9duction.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> Vous avez deux options ici. Le plus simple est de ne rien montrer. Cependant, vous pouvez aussi essayer de reconqu\u00e9rir un utilisateur avec un message comme celui-ci : \u00ab\u00a0Vous avez annul\u00e9 votre achat. \u00cates-vous int\u00e9ress\u00e9 par l’essai d’un abonnement \u00e0 prix r\u00e9duit ?\u00a0\u00bb<\/p>\n\n\n\n

SKError.Code.paymentInvalid<\/strong><\/a>, code 3<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> Pour une raison quelconque, le paiement a \u00e9chou\u00e9 : la carte avait expir\u00e9 ou il n’y avait pas assez de fonds pour cet achat.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> Votre achat a \u00e9t\u00e9 refus\u00e9. Veuillez v\u00e9rifier les d\u00e9tails du paiement et vous assurer qu’il y a suffisamment de fonds sur votre compte.<\/p>\n\n\n\n

SKError.Code.paymentNotAllowed<\/strong><\/a>, code 4<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> Il est probable que cette carte comporte certaines restrictions d’achat : des limites sont fix\u00e9es ou la fonction d’achat en ligne n’est pas disponible.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> L’achat n’est pas disponible pour le mode de paiement s\u00e9lectionn\u00e9. Veuillez vous assurer que votre mode de paiement vous permet d’effectuer des achats en ligne.<\/p>\n\n\n\n

SKError.Code.storeProductNotAvailable<\/strong><\/a>, code 5<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur essaie d’acheter un produit qui n’est pas disponible pour la r\u00e9gion dans laquelle ce magasin est utilis\u00e9.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Le d\u00e9veloppeur doit v\u00e9rifier la disponibilit\u00e9 des produits dans le magasin et la r\u00e9gion de l’utilisateur. Pour cela, vous pouvez utiliser SKStorefront<\/a>.<\/p>\n\n\n\n

Quel message afficher.<\/strong> Ce produit n’est pas disponible dans votre r\u00e9gion. S’il vous pla\u00eet, changez de magasin et r\u00e9essayez.<\/p>\n\n\n\n

SKError.Code.cloudServicePermissionDenied<\/strong><\/a>, code 6<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur n’a pas donn\u00e9 acc\u00e8s aux informations de son service Cloud.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ? <\/strong>Pour \u00eatre honn\u00eate, je n’ai jamais rencontr\u00e9 une telle erreur. En fait, vous pouvez simplement \u00e9crire que l’achat a \u00e9t\u00e9 refus\u00e9.<\/p>\n\n\n\n

SKError.Code.cloudServiceNetworkConnectionFailed<\/strong><\/a>, code 7<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’appareil n’\u00e9tait pas connect\u00e9 \u00e0 Internet lors de l’achat.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> L’achat ne peut \u00eatre effectu\u00e9 car votre appareil n’est pas connect\u00e9 \u00e0 Internet. Veuillez r\u00e9essayer plus tard avec une connexion internet stable.<\/p>\n\n\n\n\n\n

SKError.Code.cloudServiceRevoked<\/strong><\/a>, code 8<\/strong><\/h2>\n\n\n\n

Ce que cela signifie. <\/strong>Cet appareil n’a pas acc\u00e8s au service de paiement StoreKit. Cette erreur se produit g\u00e9n\u00e9ralement dans Sandbox.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Cr\u00e9ez un nouvel utilisateur Sandbox ou essayez simplement de r\u00e9p\u00e9ter l’op\u00e9ration.<\/p>\n\n\n\n

Quel message afficher ? <\/strong>D\u00e9sol\u00e9, une erreur s’est produite.<\/p>\n\n\n\n

SKError.Code.privacyAcknowledgementRequired<\/strong><\/a>, code 9<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur n’a pas accept\u00e9 les conditions d’utilisation de l’AppStore. Comme il est indiqu\u00e9 dans la documentation, \u00ab\u00a0l’utilisateur n’a pas encore pris connaissance de la politique de confidentialit\u00e9 d’Apple pour Apple Music\u00a0\u00bb. Mais cela ressemble \u00e0 une erreur, car il n’y a aucune raison de mentionner Apple Music ici.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> L’achat ne peut \u00eatre r\u00e9alis\u00e9 car vous n’avez pas accept\u00e9 les conditions d’utilisation de l’AppStore. Veuillez confirmer votre consentement dans les param\u00e8tres et revenir ensuite \u00e0 l’achat.<\/p>\n\n\n\n

SKError.Code.unauthorizedRequestData<\/strong><\/a>, code 10<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’ID de votre application ne contient pas le droit requis pour utiliser StoreKit.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Vous devez terminer le processus de configuration des achats int\u00e9gr\u00e9s pour votre application.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> Une erreur s’est produite. S’il vous pla\u00eet, r\u00e9essayez plus tard.<\/p>\n\n\n\n

SKError.Code.invalidOfferIdentifier<\/strong><\/a>, code 11<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur essaie d’acheter un produit avec une offre promotionnelle (promo offer)  incorrecte.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> Aucune action n’est n\u00e9cessaire du c\u00f4t\u00e9 des d\u00e9veloppeurs.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> L’offre promotionnelle n’est pas valable ou a expir\u00e9.<\/p>\n\n\n\n

SKError.Code.invalidSignature<\/strong><\/a>, code 12<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> La signature de l’offre promotionnelle pour la requ\u00eate StoreKit a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e de mani\u00e8re incorrecte.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> V\u00e9rifiez comment la signature est g\u00e9n\u00e9r\u00e9e et corrigez les erreurs. Si vous utilisez Adapty, t\u00e9l\u00e9chargez la cl\u00e9 d’abonnement.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> D\u00e9sol\u00e9, une erreur s’est produite lors de l’application du code promo. S’il vous pla\u00eet, r\u00e9essayez plus tard.<\/p>\n\n\n\n

SKError.Code.missingOfferParams<\/strong><\/a>, code 13<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> Les param\u00e8tres de l’offre promotionnelle sont form\u00e9s de mani\u00e8re incorrecte.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> V\u00e9rifiez et corrigez les param\u00e8tres de votre offre promotionnelle.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> D\u00e9sol\u00e9, une erreur s’est produite lors de l’application du offre promotionnelle. S’il vous pla\u00eet, r\u00e9essayez plus tard.<\/p>\n\n\n\n

SKError.Code.invalidOfferPrice<\/strong><\/a>, code 14<\/strong><\/h2>\n\n\n\n

Ce que cela signifie.<\/strong> L’utilisateur essaie d’acheter un produit dont le prix n’est pas pertinent. Il est probable que le prix affich\u00e9 dans l’AppStore ne soit plus valide.<\/p>\n\n\n\n

Comment la traiter ?<\/strong> D\u00e9finissez le prix actualis\u00e9 de cette offre dans l’AppStore.<\/p>\n\n\n\n

Quel message afficher ?<\/strong> D\u00e9sol\u00e9, votre achat ne peut pas \u00eatre effectu\u00e9. S’il vous pla\u00eet, r\u00e9essayez plus tard.<\/p>\n\n\n\n

Conclusion<\/h2>\n\n\n\n

Un traitement correct des erreurs am\u00e9liore l’exp\u00e9rience des utilisateurs et permet de renvoyer au moins une partie des utilisateurs qui n’ont pas pu payer l’abonnement imm\u00e9diatement pour une raison quelconque. Voici les erreurs les plus courantes lors de la mise en place des achats dans une application iOS :<\/p>\n\n\n\n