Jusqu'au 20 juin 2016, j'ai pu annuler les achats tests effectués dans mon application. Faire plusieurs achats dans l'application (non consommables) à partir du même compte de test a facilité le développement et le test du code sans trop de détails.
Après le 20 juin 2016, les achats n'apparaissaient pas sur mon compte marchand et je n'ai pas pu faire plus d'un achat sur mon compte test. Je n'ai reçu que le message "vous possédez déjà cet article".
J'ai enregistré une demande auprès du groupe d'assistance aux développeurs Google et la réponse a été:
Depuis le 20 juin 2016, nous avons modifié les achats de test pour des achats uniques dans l'application (IAP). Auparavant, les achats de test pour les IAP uniques généraient des ID de commande. Depuis le 20 juin 2016, les IAP ponctuels ne génèrent pas (le cas échéant) d'ID de commande officiels et n'apparaissent pas dans Merchant Center. Ce comportement s'applique déjà aux IAP d'abonnement. Vous pouvez en savoir plus sur le test de la facturation via l'application dans le Android: https://developer.Android.com/google/play/billing/billing_testing.html# tests-achats
très bien .. alors je vais sur le lien mentionné et il y a une section là-bas: Annulation des achats de test terminés qui dit:
Google Play accumule les achats test terminés pour chaque utilisateur, mais ne les transmet pas au traitement financier. Dans certains cas, vous souhaiterez peut-être annuler manuellement un achat test pour continuer le test. Pour ce faire, ouvrez la page de l'application dans le Play Store. Si l'achat test que vous souhaitez annuler est un abonnement, vous pouvez également utiliser la méthode cancel () de l'API Purchases.subscriptions. Important: Les méthodes de remboursement () et de révocation () de l'API Purchases.subscriptions ne prennent pas en charge les achats test.
Je vais donc sur la page de l'application dans le Play Store ... et quoi faire exactement? la page Web n'indique pas ce que je suis censé y faire. Quelqu'un sait?
il dit: vous pouvez également utiliser la méthode cancel () de l'API Purchases.subscriptions.
ce qui indique que l'utilisation de la méthode cancel () n'est pas la seule méthode.
Comment résoudre ce problème sans ajouter de code supplémentaire dans mon application?
Je suis allé sur la page principale de la console Google Play et j'ai cliqué sur Gestion des commandes. En vertu de cela, j'ai pu sélectionner tous les achats de test et les rembourser. Je suis le développeur principal de l'application, j'ai donc accès. Si vous êtes un testeur, vous devrez probablement contacter l'équipe d'assistance et lui demander de rembourser votre commande.
Tous les produits intégrés gérés sont consommables.
comme indiqué dans le docs .
Cela signifie que vous pouvez consommer un article appartenant au lieu d'annuler l'achat et de l'acheter à nouveau. Je suggère d'interroger l'inventaire au moment du lancement de l'application:
mIabHelper.queryInventoryAsync(this);
Vous pouvez ensuite consommer l'élément possédé dans le rappel:
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
Purchase purchase = inventory.getPurchase(MY_SKU);
boolean isBought = (purchase != null && verifyDeveloperPayload(purchase));
if (isBought) {
mIabHelper.consumeAsync(purchase, new OnConsumeFinishedListener() {
@Override
public void onConsumeFinished(Purchase purchase, IabResult result) {
//Clear the purchase info from persistent storage
}
});
}
}
C'est OK pour tester le flux IAB mais assurez-vous de supprimer ce code de la version finale.
Sur Play Console, accédez à Compte développeur -> Détails du compte, définissez les testeurs de licence (vous en êtes un par défaut)
Acheter des articles
Accédez à Gestion des commandes, choisissez ces commandes de test, sélectionnez: remboursement, mais N'OUBLIEZ PAS de vérifier REVOKE lorsque vous effectuez le remboursement. (J'ai oublié de révoquer, et maintenant je ne trouve plus de moyen de les reprendre)
Quoi qu'il en soit, un autre compte de test fera l'affaire.
J'ai trouvé une solution qui n'est pas très pratique, mais qui fonctionne. Il semble que vous puissiez consommer des produits non consommables et de cette façon, vous pouvez les acheter à nouveau. Je travaille avec phonegap donc je n'ai qu'un exemple de code pour le plugin cordova-plugin-Purchase:
store.when("your.product.id").updated(product => {
if(product.owned) {
var transaction = product.transaction;
product.transaction = null;
store.inappbilling.consumePurchase(
function() { // success
alert("consume success");
},
function(err, code) { // error
alert("consume error " + err)
},
product.id,
transaction.id
);
}
});
Le rappel mis à jour est appelé lorsque vous appelez store.refresh()
ou achetez le produit. Donc, selon votre cas d'utilisation, vous voudriez mettre en œuvre une méthode supplémentaire de vérification du moment de consommer le produit.
Je n'ai aucune expérience avec les paiements in-app natifs Android, mais évidemment vous pourrez également y consommer les produits.
Edit: Désolé, je viens de lire que vous ne vouliez pas inclure de code supplémentaire dans votre projet. Je ne pense pas que ce soit possible pour le moment, mais je voudrais garder ma réponse ici, car cela pourrait aider d'autres personnes à essayer de tester les paiements via l'application.
De https://stackoverflow.com/a/30178861/326904 @mttmllns
Pas besoin d'écrire de code de consommation spécial. Utilisez simplement la commande adb pour effacer les données de Google Play Store:
adb Shell pm clear com.Android.vending
Je n'ai pas trouvé de solution à cela. Ma solution consiste simplement à supprimer l'utilisateur de test actuel de la liste des utilisateurs de test, à effectuer un achat réel, puis à l'annuler à l'aide de la console du marchand.