web-dev-qa-db-fra.com

Comment Apple Apple informe-t-il les applications iOS des remboursements des achats intégrés (IAP)?

J'ai Apple iOS IAP mis en œuvre avec succès dans mon application et testé dans le bac à sable. Fonctionne très bien.

Je crains que les utilisateurs puissent acheter quelque chose avec IAP, le télécharger dans mon application, puis se plaindre à Apple et obtenir un remboursement. Il n'y a aucun moyen évident que les remboursements soient signalés à mon application. Sont-ils simplement omis de la liste des produits que je reçois lors d'une opération de "restauration". Existe-t-il un type de transaction non documenté qui apparaîtra de manière asynchrone dans mon SKPaymentTransactionObserver lorsqu'un remboursement se produit?

À l'heure actuelle, je suppose que je dois supprimer les transactions IAP de l'utilisateur avant de faire une restauration et que tout ce qui est remboursé ne figurera tout simplement pas dans la liste des transactions restaurées. Est-ce que c'est la bonne façon de le faire? Existe-t-il un moyen de tester cela dans le bac à sable?

Quelqu'un a-t-il vu des remboursements dans un environnement de production et peut-il expliquer comment ils fonctionnent?

47
Craig

Le guide d'achat in-app traite du concept "d'annulation" des abonnements. C'est le seul endroit que j'ai vu discuter du sujet.

Plus de détails sur le champ de date d'annulation peut également être trouvé dans la documentation de validation du reçu de l'App Store.

cancellation_date

Après avoir décodé un reçu, vous pouvez obtenir la date d'annulation qui vous indiquera ce qui suit:

Pour une transaction qui a été annulée par Apple support client, l'heure et la date de l'annulation.

9
aradil

J'ai reçu une réponse de Apple Relations avec les développeurs aujourd'hui (6 décembre 2018):

Bonjour Johannes,

En réponse à votre question, malheureusement, il n'existe aucun moyen pris en charge pour détecter que l'utilisateur a contacté Apple Care et a reçu un remboursement pour l'achat In-App d'un article consommable. La seule option qui Je peux vous renvoyer à soumettre une demande d'amélioration de l'API pour qu'une API soit disponible pour une application afin de détecter qu'un remboursement a été fourni à un utilisateur d'un achat intégré. Actuellement, cette prise en charge n'est disponible de manière réaliste que pour les applications qui offre un abonnement auto-renouvelable Achat intégré.

Vous pouvez soumettre la demande d'amélioration à l'aide de la page Web Apple Rapport de bogue du développeur - http // bugreport.Apple.com

Comme il s'agit d'un problème de type de demande d'amélioration, je vais prendre des dispositions pour que cet incident ne soit pas facturé à partir de votre compte pour une utilisation dans un futur problème.

Nous y voilà donc.

6

La stratégie est:

  1. Vous enregistrez le latest_receipt (Champ "MIIUJgYJKoZIhvc ..." base64) dans votre base de données, associé au compte utilisateur.

  2. Chaque jour, vous interrogez Apple pour valider tous les reçus, en leur envoyant le reçu base64 à partir de latest_receipt champ.

  3. Dans le reçu, vous vérifiez s'il y a un cancellation_date champ. Si vous le trouvez, traitez-le selon documentation :

Traitez un reçu annulé comme si aucun achat n'avait été effectué.

De la même manière que vous vérifiez également les renouvellements d'abonnement (cochez expires_date_ms champ).

4
Kirill Groshkov

Des remboursements sont accordés, mais votre application n'en reçoit aucune notification. Qu'il s'agisse d'un achat intégré, d'un téléchargement d'application ou de tout autre contenu iTunes, l'utilisateur peut toujours utiliser le contenu même s'il a demandé un remboursement.

4
Benjamin Mayo